說說代碼之美

   說到中美程序員的差別,北美的程序員,尤其是發明那些根本性東西比如JAVA, 比如Message機制,用得都是非常簡單的辦法,一方面,英語作爲母語,與程序設計語言更加靠近,比中國的象形文字來的近,另一方面,這些北美的程序員似乎都深諳大道至簡的道理,代碼都寫得很簡單,當然問題的思維方式更爲系統。相對的來說,國內的技術人員總是習慣把問題複雜化,不僅理解問題複雜化,解法也複雜,有時正是因爲沒有理解核心代碼的設計,反而使得解法更加背道而馳。
   《代碼之美》這本書,剛好給了一些關於北美(但不限於)的頂級程序員的例子,與其說它是講代碼之美,到不如說是講他們的思維方式,我們甚至可以窺見他們的價值觀,個人的體會是,這本書裏面的頂級程序員們體現了以一系列思維習慣值得國內同行參考:
   第一:非常認真全面的研究問題/客戶需求,比如在爲霍金開發只用一個按鈕的交互軟件時,他們很快意識到按鈕不止表達01,按扭的時長可以成爲一種模擬輸入,從而爲長按和短按分別設計更細化的選項,由此簡化了後面的設計。
   第二:總是希望用一個個案抽象一種模型,並用於更大的範圍,前面的程序可以服務給盲人,Google著名的MapReduce算法開始用於統計百萬億網頁上的詞頻率,後來用於所有分佈式環境。
   第三:永遠尋求簡單的方式來解決問題,不過有個技巧,就是可以把複雜的難題恰當的分割。MapReduce算法體現了一種簡約之美,如同我們常講的中間件,屏蔽一切分佈式,普通的程序員都可以依靠MapReduce和GFS來寫用於上千臺機器的分佈式應用。
  在另一章開源ERP5的項目中,複雜的ERP項目的一級類僅有五個,Resouce, Node, Path, Movement, Item, 這些概念加上Order和Delivery的業務基本項構成了基礎業務模型,這個設計思維有點像說宇宙是四大元素組成的。

  另一個不錯的案例來自Linux內核小組關於驅動的研究。
  這個模型的抽象能力的缺乏,估計是中國工程師的軟肋,也是思維複雜化的原因。硅谷軟件人才IC(India/China)比比皆是,但能夠定義軟件行業的,還都是白人。或許,這個刪繁入簡的抽象能力,早在中國人學語文的時候被虛情假意的形容詞淹沒了。
   第四:對於技術難題的靈感需要等待,從這本書看起來,軟件天才是不存在的,幾位頂級程序員都遇到一籌莫展的問題,有些幾個月也沒有解法,有的是某次喝咖啡的靈光一閃,或者乾脆關鍵的程序都是在喜馬拉雅山下的山村寫的。
   第五:他們都懷有程序改變世界的信心,在關於安全通訊的一章結尾,作者深信他們對於世界的民主化在做貢獻,在他們看來:人類文明的代碼,越來越需要程序員對其進行重新編程,然後重新接入社會這個操作系統中。比如,基因序列分析,商業軟件,計算機建模,更不要說互聯網上的多次革命,Email, Blog, SNS, VoIP。
   這下理解爲什麼Google敢於對抗各國政府。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章