推薦《編程之美》

  推薦《編程之美》
 
我很早知道鄒欣計劃要寫這樣一本書,也能夠預計到這本書定會廣受歡迎,因爲它符合當前大量求職人員的需求,畢竟於他們而言,誰不想知道微軟亞洲研究院在招人時候問些什麼問題呢。另一方面,把考察軟件技術人員專業知識和相應技能的各種手段加以歸納和整理,這本身也是對業界的貢獻,所以,我相信,一旦這本書如計劃般完成,其對業界的影響將是深遠的。
在我的面試經歷中,通過一些具體的程序問題來考察人,往往是最有效的,即使是一些人所皆知的問題,也往往能夠挖掘出被面試者的亮點或弱點,原因在於,每個問題都有不同層次的解答之辭,面試者總是可以刨根究底地問下去。我們在看一段程序的時候,思路固然重要,細節也是不可忽視的,比如整數是否越界、指針是否爲空,等等。這些細節可以用於考察基本功,毫無疑問,基本功不紮實的人通常很難得到面試者的青睞。
當拿到這本書的樣稿時,我迫不及待地放下手頭工作,閱讀起來。有些題目的內容會引起強烈的共鳴,尤其是那些自己非常熟悉並且又深知解答的題目;也有一些題目讓我異常驚詫,原來除了我所知道的解答思路之外,還有更好的解答以及更深層次的原因。還有一些題目是從來沒想到過的。閱讀過程是一次愉快的享受,也是腦細胞持續活躍的過程。
充滿好奇心的人們總是能從生活的點點滴滴中想到或找到各種優化的餘地,比如說,樓宇中的電梯常常顯得很“傻”(微軟研究院所在的希格瑪大廈的電梯是一個典型的例子),更智能或更有效的調度策略完全有可能;近距離內的交通燈聯動可以有效地提高行車效率。程序員在玩電腦遊戲的時候常常會想着怎麼自動完成一些過程,比如說,本書中提到的俄羅斯方塊遊戲中如何有效地旋轉和移動可快速地消除積木塊、24點遊戲如何自動求解、推箱子游戲如何自動求解,掃地雷遊戲如何自動完成,等等。實際上,這些自然的疑問正是訓練程序能力的好來源,本書採錄了不少此類題目。因此,閱讀本書可以滿足很多人的好奇心,這也正是我自己的體會。
儘管作者在前言中聲稱“雖經過幾輪審覈,不少解法仍可能有漏洞或錯誤”,但事實上,在絕大多數題目的講解中,作者已經由淺入深地把問題分析透了,而且,作者也爲讀者指出了進一步思考這些題目的方向。不同背景的人在看到這些題目的時候,可能會有不同的解法,甚至完全不同的思路。舉例而言,鄒欣曾經問過我如何控制CPU佔用率曲線的問題,我當時的直覺是,直接截取Taskmgr調用的相關API函數,從而達到隨意控制CPU佔用率曲線的目的。顯然這不是規範的做法,本書的分析揭示了這個問題背後的本質道理以及考問要點。另一種情況,即使有的問題你深知其理,但看過本書仍然很有收穫。例如,在斐波那契數列問題中,我知道直接遞歸法的缺陷,也知道如何簡化成迭代法來改進效率,還會推導通項公式,但是,書中的細緻講解仍然讓我對這個問題有了更進一步的認識。這是本書的深度所在,如果讀者更加在意所選題目背後的深層次道理,相信書中的講解不會讓你失望。
除了趣味性以外,本書中的題目講解之中也融入了大量專業知識。這使得本書可以作爲計算機數據結構課程或算法課程的輔助參考書。比如,有些問題的解答涉及到貪心算法或動態規劃方法,算法的複雜度分析更是無處不在。數據結構教科書中介紹的鏈表(list)、隊列、hash表和二叉樹等常用數據結構也多有提及。因此,對於正在學習數據結構或算法課程的學生來說,本書中的問題正是對課程中所學知識的一次檢閱,通過本書他們可以看到這些知識是如何用於解決實際問題的。從我自己的教學經驗來看,這樣的題解分析有助於提高學生的學習興趣。另一方面,閱讀本書也需要有必要的計算機算法和程序設計知識作爲基礎,否則閱讀的效果會大打折扣。 
我大致瞭解本書的成書過程,從策劃階段到題目收集,再到成稿和改稿,我能體會到鄒欣和他的寫作團隊傾注了大量的精力來寫作這本書。他們盡了最大的努力來編寫這本書,無論是原創的題目,還是傳統的題目,他們都努力把題目分析透徹並提供擴展思考的餘地。鄒欣在發送樣稿給我的信中說道:“Our goal is to ship a top quality book. I can't say "world class", but definitely "best in China" level.以我閱讀這本書的體會來講,他們做到了這一點。我相信,這本書的出版會符合我當初的預期,它會影響到很多人。
 
潘愛民
2008年2月
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章