破譯武林招式,看懂程式設計!
‧郭靖的小紅馬在Scratch裡能任意變色?
‧韋小寶加盟天地會誓詞是高階程式語言?
‧黃蓉的計算能力比Python還強?
‧用費波那契數列就能進入桃花島?
以武俠小說的場景為媒介,讓武林絕招和程式設計理論緊密結合。只要你摸過電腦、玩過電動遊戲,熟悉鍵盤和滑鼠的操作,就能讀懂本書的程式邏輯。
讀者朋友可以一邊學習編寫程式的基礎知識,一邊跟著範例練習編寫代碼,不但能真正感受到程式設計的樂趣,還能解決生活中很多意想不到的大小問題。
本書從用PowerPoint製作基本動畫講起,再進入麻省理工學院開發的入門級動畫軟體Scratch,最後敲開程式設計的利器Python,循序漸進帶領讀者朋友理解程式世界的奧祕,並享受數位科技帶來的樂趣。
「如果你擁有電腦,卻沒有安裝Python,那叫暴殄天物。」~李開周
作者簡介:
李開周
一九八○年生,河南開封人,青年學者,專欄作家。
大學念的是工程學,曾任測量工程師,從事測量、預算和土地規劃等工作。曾在《新京報》、《中國經營報》、《世界新聞報》、《羊城晚報》、《中國烹飪》和《萬科周刊》等媒體開設專欄。
著有《誰說不能從武俠學數學?》、《誰說不能從武俠學化學?》、《誰說不能從武俠學物理?》、《從奈米到光年:有趣的度量衡簡史》、《逛一回鮮活的宋朝民俗》、《擺一桌絕妙的宋朝茶席》、《過一場歡樂的宋朝新年》、《吃一場有趣的宋朝飯局》、《歷史課本聞不到的銅臭味》、《民國房地產戰爭》、《包公哪有那麼黑》等。
各界推薦
名人推薦:
戴逸群 亡牌教師
俠義推薦(依姓氏筆畫排序)
名人推薦:戴逸群 亡牌教師
俠義推薦(依姓氏筆畫排序)
章節試閱
【開場白】程式設計讓生活更美好
有一年暑假,我的八歲兒子迷上網路遊戲。
老師每天在線上發布作業,他要嘛不寫,要嘛少寫,不然就是唰唰唰地亂寫一通,趕緊拍照交差,騰出時間打遊戲。
我帶他進行戶外運動,他要嘛不去,要嘛拖延,要嘛找藉口提前離開,趕緊回家打遊戲。
打遊戲的時間太長,不僅學業成績倒退,視力下降,注意力也會受影響。但想讓孩子離開網路遊戲,就像讓賭徒離開牌桌一樣困難,也許還更加艱難。
我知道不只一個孩子沉迷遊戲,也不只是孩子沉迷。有些男人年近而立,或者年過而立,不願做家務,不願管孩子,甚至不願工作,只顧著天天打遊戲。給他一箱泡麵和一款大型網路遊戲,他可以連續一個月不出門,完全忘記在這個世界上還有「責任」兩個字。
我不認為遊戲全是壞東西,能讓大人和小孩無憂無慮地玩,正是現代科技與和平環境提供的美好福利。但如果毫無節制,遊戲就類似毒品,會讓人上癮。我覺得應該讓人掌控遊戲,而不是讓遊戲掌控自己。
怎樣才能讓人掌控遊戲?怎樣才能從遊戲陷阱中拔出腿呢?一個至今看起來還算有效的方法是:想辦法讓玩家了解遊戲的核心。
無論網路遊戲或單機遊戲,無論電腦遊戲或手機遊戲,無論2D遊戲或3D遊戲,核心都是一堆代碼,由程式設計師編寫的電腦代碼。程式設計師用電腦聽得懂的語言設計指令,這個過程叫做「程式設計」。當孩子學會程式設計後,他就會不由自主地從上帝視角看待遊戲,才更有可能擺脫遊戲的掌控。
道理非常簡單──假如我們試圖戰勝一個很難打敗的敵人,首先要了解敵人。「知己知彼,百戰百勝」,這句老話絕對不是亂說。所以在那個暑假,我開始教兒子電腦知識,學習
程式設計。
我先讓他熟悉鍵盤,再陪他看完整套兒童電腦入門影片(網路很多,許多出版商也製作過很多這類產品),接著帶他學習一款非常適合小學生入門的程式設計軟體──由麻省理工
(MIT)開發的積木式程式軟體Scratch。
我帶著他學習Scratch一年,到第二年暑假,就讓他接觸真正的程式語言。我幫他選的程式語言是Python,因為十分流行,且愈來愈大眾化。更重要的是,Python是一門在入門階段相對簡單的高級程式語言,能讓初學者找到成就感,而成就感才是學習的最佳驅動力。
第三年暑假、第四年暑假……我們利用假期,偶爾會利用週末,斷斷續續地學習Python,隔三差五地編寫代碼。學習效果如何呢?上國中時,我兒子終於可以獨立編寫一些能在生活中用到的小程式了。他是否還在打遊戲呢?是的,但他不再痴迷遊戲,而是在學習和運動累了以後,用遊戲放鬆一下。事實上,如今他喜歡自己動手編寫遊戲,就是那種非常簡陋的單機版遊戲,用來向朋友們炫耀。同時我不得不承認,他在程式設計方面缺乏悟性,絕對不是天生適合做程式設計師的天才少年。
當然,我沒有非要把孩子培養成程式設計師的計畫,因為我自己也不是程式設計師。
我現在的職業是作家,以前的職業是測量和製圖員。我在大學時期才學習程式設計,當時可不是為了擺脫遊戲,而是為了賺錢。
請允許我用一些篇幅分享學習程式設計的經歷。
一九九九年,我上大學後,第一節電腦課,老師在電腦教室裡向幾十位同學提問:
「學過電腦的請舉手。」
不到一半同學舉手。
「用電腦打過遊戲的請舉手。」
舉手的超過一半。
「有沒有從來沒摸過電腦的?」
我舉了手,又放下,因為整間教室只有我一個人舉手。
課堂上,我不敢碰任何按鍵,唯恐弄壞要賠。課後偷偷問旁邊的同學:「老師說移動滑鼠,滑鼠是什麼東西啊?」
那節課過後,我開始發憤學電腦。第一,我感覺到「別人都知道而我不知道」的那種壓力;第二,我在報紙上看到一篇新聞 ─某公司招聘程式設計師,月薪新臺幣二萬三千元。
現在月薪二萬三千元屬於低薪,但在二十多年前,可是一筆了不起的鉅款,夠我繳兩年學費!為了這筆錢,我必須學電腦,必須學程式設計,我希望將來也要賺到這麼多錢!
老師讓學盲打,我既沒有電腦,也不捨得花錢買鍵盤,乾脆在紙上畫一個鍵盤。
老師教Word和Excel,說學會了萬用字元和規則運算式的學生,將來會很搶手。我去圖書館借了一本《office高級辦公》教材,背熟上面的所有萬用字元。
二○○○年,我們開始上程式設計,兩個星期才有一次去教室免費上機的機會,平常則要花每小時七元的費用租用電腦。我不捨得花這筆錢,就在紙上寫代碼,想像實際運行的樣
子。後來電腦考試,我是滿分通過。
當然,課堂上那些電腦知識遠遠不夠用,但每所大學都有圖書館,裡面都能借到程式設計參考書。從《VB程式設計》到《C++入門》,從網頁設計手冊到資料庫管理手冊,一本一
本地借,一本一本地啃,看見很酷的代碼就先抄到紙上,再找機會借電腦實測。
從二○○一年下半年起,我已經可以憑程式設計的技能賺錢了。我用FoxPro(一款早已過氣的資料庫管理系統)編寫一個外掛程式,還用 VB 編寫一些能自動計算變異數、標準
差、相關係數,能自動繪製關聯模型的小程式,幫助做課題的導師省去大量毫無意義的手算環節。導師沒有讓我白忙,有段時間按照每月一千三百元的標準發給我補貼。
二○○二年,我為一家勘測規劃機構開發一款「平差計算器」,能夠把測量誤差平均分配到圖紙上。透過這款小軟體,我賺了二千六百元和一臺即將報廢的電腦,這是我擁有的第一臺電腦,一直用到大學畢業。
我當時經常去3C賣場買1.44MB的磁片,把我寫的代碼存到裡面。後來還斥資買了一個32MB的隨身碟,像寶貝一樣掛在脖子上,經常被別人誤認成打火機,要借來點菸。
大學畢業後,我被導師推薦到勘測單位上班,沒有從事電腦行業。但我對程式設計的興趣並未衰減,當年學過的電腦知識,特別是程式設計,今天依然在發揮作用。
母親愛聽戲曲,我寫了一些網路爬蟲去相關網站上自動搜索可以下載的戲曲,批量下載到唱戲機裡。
孩子上小學時要做大量四則運算、分數運算,要找出公因數和公倍數,計算各種幾何體的面積和體積,這些作業通常要求家長檢查和簽名。為了減輕這個工作量,我寫了許多自動檢查作業的小工具。
我自己寫書、寫專欄、寫劇本,要查很多資料,要分析很多文獻,一些科普類書稿還不可避免地涉及數學運算。怎麼辦?透過程式設計來提高效率肯定是最划算的選擇。例如從一部長篇小說裡分析人物關係,完全可以先導入一個自動分詞的函式庫,再用K-近鄰演算法寫一個分析器,最後用matplotlib這樣的三方庫繪製一張龐大但精確的社會網路。你可能對那部長篇小說很熟悉,但借助程式設計卻能發現許多原先很容易被肉眼忽略的關鍵資訊。
金庸武俠經典《笑傲江湖》,主人公令狐沖「自習獨孤九劍後,於武功中只喜劍法」。而我則覺得,當一個人真正領略到程式設計的好處後,就會迷上它,因為程式設計讓生活更美好。
本書是繼《誰說不能從武俠學物理?》、《誰說不能從武俠學化學?》和《誰說不能從武俠學數學?》後,我的第四本「武俠科普」。書中分享的程式設計知識都是入門級,既沒有涉及高深演算法,也沒有涉及當前軟體發展領域正在使用的種種框架。無論是小朋友還是大朋友,只要此前摸過電腦,只要知道什麼是鍵盤和滑鼠,就能讀懂書中的絕大部分內容。
我希望你能耐心讀下去,還希望你在閱讀的同時,最好在電腦上寫一寫代碼,特別是書裡那些不複雜的範例。因為程式設計是一門實踐性極強的技能,光說不練是體會不到樂趣的。
最後祝全天下愈來愈多孩子盡快擺脫遊戲的控制,從此迷上程式設計的魔力。
【開場白】程式設計讓生活更美好
有一年暑假,我的八歲兒子迷上網路遊戲。
老師每天在線上發布作業,他要嘛不寫,要嘛少寫,不然就是唰唰唰地亂寫一通,趕緊拍照交差,騰出時間打遊戲。
我帶他進行戶外運動,他要嘛不去,要嘛拖延,要嘛找藉口提前離開,趕緊回家打遊戲。
打遊戲的時間太長,不僅學業成績倒退,視力下降,注意力也會受影響。但想讓孩子離開網路遊戲,就像讓賭徒離開牌桌一樣困難,也許還更加艱難。
我知道不只一個孩子沉迷遊戲,也不只是孩子沉迷。有些男人年近而立,或者年過而立,不願做家務,不願管孩子,甚至不...
目錄
開場白 程式設計讓生活更美好
第一章 下命令給電腦
讓小紅馬動起來
讓小紅馬跑起來
下命令不等於程式設計
程式設計語言與江湖黑話
第二章 幫俠客做計算
《九陰真經》有多少字?
郭靖對黃蓉說了多少句?
替你的電腦裝上Python
從大鬍子到大蟒蛇
將Python當成超級計算器
是黃蓉算錯了,還是Python算錯了?
遇到浮點數,拿出工具包
變數:江湖上的未知數
第三章 控制語句,三招兩式
直譯器和編輯器
編譯器和一燈大師
段譽比劍
段譽賞花
郭靖磕頭
別讓郭靖死在閉環裡
結構總共三招,只學兩招就夠
第四章 函數和計算的本質
戰鬥力計算模型
函數盒子有機關
神鵰不吃草,閃電貂不吃糖
自訂函數
隨機函數與凌波微步
讓你飛起來的函式庫
用費波那契數列進入桃花島
第五章 寫出人人能用的程式
袁承志尋寶
尋寶升級
溫度轉換器
什麼是「物件導向」?
消耗內力的遞迴
開場白 程式設計讓生活更美好
第一章 下命令給電腦
讓小紅馬動起來
讓小紅馬跑起來
下命令不等於程式設計
程式設計語言與江湖黑話
第二章 幫俠客做計算
《九陰真經》有多少字?
郭靖對黃蓉說了多少句?
替你的電腦裝上Python
從大鬍子到大蟒蛇
將Python當成超級計算器
是黃蓉算錯了,還是Python算錯了?
遇到浮點數,拿出工具包
變數:江湖上的未知數
第三章 控制語句,三招兩式
直譯器和編輯器
編譯器和一燈大師
段譽比劍
段譽賞花
郭靖磕頭
別讓郭靖死在閉環裡
結構總共三招,只學兩招就夠
第...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。