正在看周思博(www.joelonsoftware.com)的新文章。這次是瘋狂攻擊Java。主要論點是:Java不夠難,作為工業語言不錯,但作為學校的教學語言,就忒差了。學校應該用指針和遞歸這類東西把真正的程序員篩選出來。對指針(代表系統底層)和函數編程(代表高層抽象)的學習是脫胎成優秀程序員的必經之路。看這種滔滔雄辯的文章最爽了。摘取一段哈:
不了解泛函編程,你不可能發明MapReduce -- 讓Google獲得超大規模擴展能力的算法。Map和Reduce這兩個術語就是來自Lisp和函數編程。現在看來,MapReduce對每個記得6.001等同課程的人都是顯而易見的選擇:純函數編程沒有副作用,所以才能讓并行處理出奇地容易。恰恰是Google而不是微軟發明了MapRequest在某種程度上說明了為什么微軟還在努力追上Google的基本搜索功能的時候,Google已經開始需求解決另一個問題:開發天網^H^H^H^H^H^H這個世界上最大規模的并行超級計算機。我覺得微軟還不清楚他們到底落后了多少。
還有這一段:除開指針和遞歸本身的重要性以外,他們的真正價值在于開發大型系統需要某種思維上的靈活性。而這種靈活性得從學習指針和遞歸得來。開發大型系統也需要一種思維上的天賦,這種天賦可以通過教授指針和遞歸被篩選出來。指針和遞歸要求一定的推理能力,抽象思維的能力,和更重要的在不同抽象層次上看待問題的能力。因此,理解指針和遞歸的能力和當優秀程序員的能力直接相關。
還有這一段:計算機科學是證明(遞歸),算法(遞歸),語言(lambda 算子), 操作系統(指針),編譯器(lambda 算子) -- 所以底線是不教C和scheme的Java派也沒有真正地教你計算機科學。
注解一下哈:6.001是MIT CS入門第一課,用著名經典SICP(早就有中文版了),用scheme(LISP的一種)講各種編程思想。網上也有授課錄像。這個課第一堂就基本講完Scheme所有語法(當然,lisp本來就是非常簡單但深刻的語言),并開始談論定點理論。第二節課就用短短數行寫出了找平方根算法,干凈漂亮,讓人嘆為觀止。
天網是終結者里發動核攻擊消滅人類的超級計算機,第三集里說天網其實不是一臺機器,而是通過互聯網變得擁有智能的程序。
^H^H^H^H是在Unix的基本配置下,命令行輸入按Backspace出現的效果。也就是說,作者暗示自己本來想說的是天網,但改成后面的說法了。一種技術文章里常用的強調/幽默寫法。
文章列表