從眾多語言中,挑出本書包含的幾門語言,這一過程也許不像你想得那么復(fù)雜。我們只不過發(fā)了些調(diào)查問卷,向本書的潛在讀者請(qǐng)教了一番。調(diào)查數(shù)據(jù)匯總上來時(shí),有八門語言入選希望最大。不過,我先是把JavaScript“踢”了出去,因?yàn)樗鼘?shí)在是過于熱門了,取而代之的是原型語言中熱門程度僅次于JavaScript的Io。隨后,我又把Python“踢”了出去,因?yàn)槲抑幌虢o面向?qū)ο笳Z言一個(gè)名額,而Ruby的票數(shù)多于Python。同時(shí),這也給一個(gè)出人意料的候選者讓出了位置——名單上位列前十的Prolog。下面,我給出成功入圍本書的最終名單和挑選它們的理由
- Ruby。這門面向?qū)ο笳Z言高票當(dāng)選,因?yàn)樗粌H好用,而且好讀。我曾經(jīng)考慮過不介紹任何一門面向?qū)ο笳Z言,但我又想在其他編程范型與面向?qū)ο缶幊讨g作一些比較,因此,至少介紹一門面向?qū)ο笳Z言還是有必要的。相比于大多數(shù)程序員的日常用法,我想把它挖掘得更深入一些,以揭示設(shè)計(jì)者的良苦用心。我最終決定重點(diǎn)介紹Ruby元編程(metaprogramming),因?yàn)樗梢詳U(kuò)展Ruby的語法。對(duì)于Ruby榜上有名的結(jié)果,我還是相當(dāng)認(rèn)可的。
- Io。和Prolog一樣,Io也是本書頗具爭議的語言。它雖與商業(yè)成功無緣,但其兼具簡單性和語法一致性的并發(fā)結(jié)構(gòu),卻是十分重要的思想。它的最簡語法(minimal syntax)功能強(qiáng)大,與Lisp的相似性也頗能給人留下幾分印象。Io不僅和JavaScript一樣同為原型語言,還有著獨(dú)一無二、韻味無窮的消息分發(fā)機(jī)制,因此在眾多編程語言之中,它也占有小小的一席之地。
- Prolog。沒錯(cuò),我知道Prolog年事已高,但它仍然力大無窮。它能輕松解出數(shù)獨(dú)問題,這不禁讓我大開眼界。而且用Java或C語言時(shí),有些難題我殫精竭慮方能解決,用它卻能干凈利落地搞定。承蒙Erlang的發(fā)明者Joe Armstrong出手相助,我得以深刻體會(huì)到Prolog之妙。同時(shí),也正是深受Prolog影響,Erlang才得以問世。如果你此前從未用過Prolog,我保證,它定會(huì)帶給你驚喜。
- Scala。作為運(yùn)行于Java虛擬機(jī)上的新一代語言,Scala為Java系統(tǒng)引入了強(qiáng)大的函數(shù)式思想,而且也并未丟棄面向?qū)ο缶幊獭;仡櫄v史,我發(fā)現(xiàn)C++和它有著驚人的相似之處,因?yàn)閺倪^程式編程過渡到面向?qū)ο缶幊唐陂g,C++同樣起到了舉足輕重的作用。當(dāng)你真正融入Scala社區(qū)之后,你就會(huì)明白,為什么對(duì)于函數(shù)式語言程序員來說,Scala是異端邪說,而對(duì)于Java開發(fā)者來說,Scala是天降福音。
- Erlang。作為名單上歷史最悠久的語言之一,Erlang不僅是一門函數(shù)式語言,而且在并發(fā)、分布式編程、容錯(cuò)等諸多方面都有著優(yōu)異表現(xiàn),真是想不火都難。CouchDB(新興的基于云的數(shù)據(jù)庫)的創(chuàng)始人就選擇了Erlang,并且義無反顧地一直用它,只要花上點(diǎn)時(shí)間了解這門分布式語言,你就會(huì)明白原因所在。在Erlang幫助下,設(shè)計(jì)帶有并發(fā)、分布式、容錯(cuò)等特征的應(yīng)用程序?qū)⒆兊脽o比簡單。
- Clojure。這又是一門Java虛擬機(jī)語言,但正是這門Lisp方言,徹底顛覆了我們?cè)贘ava虛擬機(jī)上并發(fā)編程的思考方式。它是本書唯一在版本數(shù)據(jù)庫中使用同一種策略管理并發(fā)的語言。作為Lisp方言,Clojure或許擁有本書所有語言中最靈活的編程模型,因此絕不缺乏號(hào)召力。與其他Lisp方言不同的是,它不會(huì)帶那么多括號(hào) ,還有眾多Java庫和在各平臺(tái)上的廣泛部署作為堅(jiān)強(qiáng)后盾。
- Haskell。它是本書唯一的純函數(shù)式語言,這也意味著,它根本不存在可變狀態(tài):只要使用相同的輸入?yún)?shù)調(diào)用相同的函數(shù),就會(huì)返回相同的輸出。在所有強(qiáng)類型語言中,Haskell擁有最令人稱羨的類型模型。和Prolog一樣,它也需要你花一些時(shí)間理解,但你得到的回報(bào)絕對(duì)物超所值。
如果名單上沒有你鐘愛的語言,我深感抱歉。老實(shí)說,還真有語言狂熱分子給我發(fā)過好幾封恐嚇信。在本節(jié)開始提到的民意調(diào)查中,我們總共列出了幾十門語言。我挑的這幾門語言未必是其中最出色的,但它們特點(diǎn)突出、個(gè)性鮮明,都具有重要的學(xué)習(xí)價(jià)值。
|