我要翻譯《Think Python》 - 001 序言部分
PDF源文件地址 : http://www.greenteapress.com/thinkpython/thinkpython.pdf
《思考Python - 如何像計算機一樣思考》
Version 1.1.21
艾倫·唐尼
綠茶出版社
李約瑟,馬薩諸塞州
版權 © 2008 艾倫·唐尼
出版歷史:
2002年4月:首次出版《如何像計算機一樣思考》
2007年8月:主要改版,修改書名為《如何像一個程序員(Python)思考》
2008年6月:主要改版,修改書名為《思考Python·如何像計算機一樣思考》
綠茶出版社
沃什伯恩大街9號
李約瑟馬02492
在基於GUN通用公共許可的前提下,允許拷貝,發布/或修改此文檔,自由軟件基金會發布的1.1及以後的版本。GUN自由文檔許可證可以從www.gun.org獲取。
序言
本書的奇異誕生史
1999年1月,我準備用Java語言作為我的學生的入門編程課程。事實上我卻覺得很沮喪,因為我已經開了3次這個課程了。選修這門課程的學生的失敗比率實在是太高了,即使是那些看起來學得還不錯的學生來說,水平也不盡如意。
當時,我能看出來的唯一問題就是教材本身。這本教材裏面寫了太多不必要的關於Java的細節,過於臃腫,並且沒有足夠高水準的對如何編程進行引導。以至於所有學生都深深陷入了這樣一個陷阱裏:一開始很覺得很簡單,接著循序漸進的深入學習,當到了第5章的時候就突然懵逼了。由於學生們一下子接收了太多信息,時間又過於緊張,以至於在學習過程中還要花費更多時間再去從頭消化這些信息。
兩周前開始上課之前,我做了一個決定:寫一本書。目標如下:
-
- 保持簡練。讓學生們看10頁的內容,肯定比讓學生面對那望而生畏而不願去看的50頁內容要有效。
- 用詞要註意分寸。我盡量避免專業詞匯去定義每一個術語。
- 循序漸進,避免挖坑,用化繁為簡的方式處理復雜的問題。
- 專註在程序本身,而不是程序的語法上。歸納總結Java語言中最有用的部分。
首先,我要給我的書起一個名字,於是我一時興起選擇了這個名字《如何像計算機科學家一樣思考》
首版的發行過程比較艱難,但是它確實起作用了。學生們能夠把書讀完,並且能夠充分的理解我在課堂上所講授的難點,最有趣的一點(也是最重要的)就是讓學生們多練習。
我基於GUN通用文檔的協議,免費發行了本書,並且允許用戶拷貝,修改和分發本書的內容。
接下來發生了一件很酷的事情,那就是弗吉尼亞州的一位高中老師Jeff Elkner,他把這本書翻譯成了Python版本。他把他完成的Python版本發給了我,這讓我有了一種非同尋常的體驗——通過讀自己的書學習了Python。
於是,Jeff和我接著修改了本書,並且把Chris Meyers的案例加入了其中,並且在2001年發布了《如何像計算機科學家一樣思考——學習Python》,同樣,這也是基於GUN通用免費文檔協議發行。後來綠茶出版社找到我,我就開始通過亞馬孫和大學書城發售本書。綠茶出版社的其它書籍可以通過其官方網站 www.greenteapress.com 來獲取。
從2003年開始,我首次在奧林學院教授Python語言,它跟Java語言的差異是非常大的。學生們可以在花費很少精力的情況下學到更多編程知識,並且對自己所做的項目非常感興趣,甚至樂此不疲。
在過去的5年時間裏,我依然繼續完善本書,修正裏面的錯誤,完善其中一些範例,並且加入了更多的資料,尤其是練習的內容。到了2008年,我開始對本書做一些大的調整,與此同時,哥倫比亞大學出版社開始聯系我,表示他們願意出版我這本書的新版本。真是太巧了!
其中最大的變化就是本書的標題不再浮誇,變得很簡潔——《思考Python》,其它主要變化如下:
- 在每一章節的最後,我加入了調試部分。這部分內容主要是展示如何查找和避免錯誤,以及列出了一些在Python裏面容易犯的錯誤。
- 刪除了最後幾個章節的一些關於列表和樹的內容。我雖然喜歡這部分內容,但是我認為這部分內容跟本書的其他章節內容關聯性不大。
- 添加了更多的練習,覆蓋了從簡單測試到一些實質項目的理解。
- 添加了一些實際案例——長期案例和練習,解決方案和研討。
- 其中一部分是基於Swampy,這是我寫的一個基於Python教學的插件。
- Swampy的範例代碼以及一些解決方案可以從 thinkpython.com 獲取。
- 擴展了程序設計研討計劃和基礎設計模式
- Python更符合人類的語言習慣。本書依然是介紹編程而非Python,我認為可以從本書中獲得比編程語言本身更多的內容——思想。
我期望本書可以讓你在工作中如魚得水,希望可以幫助你領會到編程的精髓,哪怕只有一點點幫助。
艾倫·唐尼
沃什伯恩大街
艾倫·唐尼現在是富蘭克林奧林工程學院計算機科學副教授。
鳴謝
首先,也是最重要的就是,我要感謝Jeff Elkner為我把這本書從Java翻譯成Python版本,正是因為如此,我才真正開始了這個項目,並且把Python轉變成了我自己最喜歡的語言。同時我還要感謝Chris Meyers,是他為《如何像計算機科學家一樣思考》這本書貢獻了一些章節。我還要感謝自由軟件基金會提供的GUN自由文檔許可,這讓我有幸能跟Jeff和Chris的合作成為可能。再此,還要感謝我們的Lulu編輯為《如何像計算機科學家一樣思考》的付出。我還要感謝我的學生們為我這本書的早期版本作出的貢獻、糾錯和建議。我要感謝我的妻子Lisa為我這本書的付出,還有綠茶出版社以及所有支持我們項目的人。
我要翻譯《Think Python》 - 001 序言部分