技術(shù)趣聞:十三種編程語(yǔ)言和它們名稱背后的故事
譯文編程語(yǔ)言的名稱通常既公式化又枯燥無(wú)聊,但其中也不乏一些令人眼前一亮的字眼。在今天的文章中,我們將一同了解編程語(yǔ)言名稱背后的那些創(chuàng)意與靈感。
如果玫瑰不叫玫瑰,芳香是否如故?
程序員們普遍認(rèn)為,軟件開(kāi)發(fā)工作當(dāng)中難度最高的一項(xiàng)任務(wù)就是為成果命名。盡管這種情況并不多見(jiàn),但命名過(guò)程中尤其令人頭大的就是面對(duì)著一種新型編程語(yǔ)言。
在一種新型語(yǔ)言的設(shè)計(jì)工作宣告結(jié)束后,隨之而來(lái)的命名過(guò)程往往遵循以下幾個(gè)步驟:以語(yǔ)言本身的特性或者描述為名,采取首字母或者縮寫(xiě)形式(例如BASIC、COBOL、TCL以及LISP);從現(xiàn)有語(yǔ)言當(dāng)中派生而來(lái)的新名稱(例如C++、C#以及CoffeeScript);又或者直接取自某位對(duì)數(shù)學(xué)或者計(jì)算科學(xué)作出卓越貢獻(xiàn)的偉人(例如Ada、Pascal以及Turing)。
不過(guò)有時(shí)候,語(yǔ)言設(shè)計(jì)得們也會(huì)發(fā)掘出一些特別的靈感、進(jìn)而為我們帶來(lái)更為豐富的命名方式。下面我們就一起來(lái)看看這十三種擁有不同尋常名稱的編程語(yǔ)言和它們背后的故事。
Python
這款最初發(fā)布于1991年的語(yǔ)言人氣極高,它是由荷蘭程序員Guido van Rossum于上世紀(jì)八十年代末著手開(kāi)發(fā)的。由他一手打造的這款新型腳本語(yǔ)言派生自ABC編程語(yǔ)言,其誕生源自Rossum在圣誕節(jié)假期中的興趣之作。
當(dāng)需要為這種全新語(yǔ)言選擇名稱時(shí),van Rossum希望選擇一個(gè)“簡(jiǎn)短、獨(dú)特而且略帶神秘色彩”的字眼。他從著名英國(guó)喜劇團(tuán)體Monty Python(巨蟒)身上得到了靈感,他本人也是該劇團(tuán)的鐵桿粉絲。不知道他當(dāng)時(shí)有沒(méi)有考慮過(guò)Dead Parrot(死鸚鵡,同樣為英國(guó)喜劇團(tuán)體)這個(gè)名稱。
Java
Java的前身是誕生于上世紀(jì)九十年代早期、由Sun公司打造的Green項(xiàng)目,該項(xiàng)目的初衷在于為即將到來(lái)的智能設(shè)備浪潮——例如互動(dòng)式電視——建立一套技術(shù)支持方案。這款新語(yǔ)言在建立之初被稱為Oak,但Sun公司的律師團(tuán)很快發(fā)現(xiàn)該名稱已經(jīng)被注冊(cè),這迫使他們必須重新尋找合適的新名稱。
公司旋即召開(kāi)了一系列會(huì)議,并整理出一份簡(jiǎn)短的備選名稱清單(經(jīng)過(guò)律師團(tuán)隊(duì)的嚴(yán)格甄選),其中包括Silk、DNA以及Java。盡管現(xiàn)在我們已經(jīng)無(wú)法考證當(dāng)初是哪位仁兄最先推薦了Java這一選項(xiàng),但它確實(shí)受到了大多數(shù)與會(huì)者的廣泛支持。Java的靈感源自Peet咖啡店(Java即英文的爪哇,以盛產(chǎn)咖啡而聞名),這里是Sun公司的各位工程師們最青睞的休閑場(chǎng)所。
Forth
Forth語(yǔ)言的開(kāi)發(fā)工作可以追溯到上世紀(jì)六十年代,由Charles Moore負(fù)責(zé)開(kāi)發(fā)。他曾于1968年效力于一家名為Mohasco的家居家具公司,當(dāng)時(shí)公司為他配備了一臺(tái)IBM 1130微型計(jì)算機(jī)外加一臺(tái)2250圖形顯示器,希望他能借此進(jìn)行地毯產(chǎn)品的設(shè)計(jì)。
由于無(wú)法利用FORTRAN語(yǔ)言進(jìn)行圖形設(shè)計(jì),Moore決定自己開(kāi)發(fā)一套編程語(yǔ)言——這就是Forth。他最初選擇的名稱是“Fourth”,代表這是第四代語(yǔ)言。但問(wèn)題在于,IBM 1130微機(jī)只允許在文件名當(dāng)中包含最多五個(gè)字符,所以在去掉了“U”之后、Forth由此誕生。
Perl
作為一款被稱為“瑞士軍刀”的語(yǔ)言,Perl以其出色的靈活性與強(qiáng)大能力聞名于世。Perl由Larry Wall于上世紀(jì)八十年代末所創(chuàng)建。在為其選擇名稱時(shí),Wall表示他希望能在簡(jiǎn)短的詞匯中包含“積極的內(nèi)涵”。他考慮過(guò)使用他妻子的名字(Gloria),但后來(lái)轉(zhuǎn)而選擇了“pearl(珍珠)”。
然而當(dāng)時(shí)這個(gè)名稱已經(jīng)被另一款編程語(yǔ)言所占用(即PEARL,‘流程與實(shí)驗(yàn)自動(dòng)化實(shí)時(shí)語(yǔ)言’的縮寫(xiě)),為了避免沖突、他去掉了其中的“A”并由此衍生出perl。值得注意的是,最初peal這個(gè)名稱的四個(gè)字母全部為小寫(xiě),這是受到了Unix全部小寫(xiě)規(guī)則的啟發(fā)。不過(guò)到了后來(lái),也就是1993年P(guān)erl 4版本正式發(fā)布時(shí),名稱的首字母開(kāi)始轉(zhuǎn)為大寫(xiě)并一直沿用至今。
Lua
Lua是由TeCGraf于1993年創(chuàng)建的一款腳本化語(yǔ)言——很多朋友對(duì)于TeCGrag可能并不熟悉,它是巴西里約熱內(nèi)盧天主教大學(xué)計(jì)算機(jī)圖形技術(shù)小組的簡(jiǎn)稱。Lua以TeCGraf此前所開(kāi)發(fā)的兩款早期語(yǔ)言為基礎(chǔ),它們分別是DEL(即日期輸入語(yǔ)言)與SOL(即簡(jiǎn)單對(duì)象語(yǔ)言)。
當(dāng)一種結(jié)合了DEL與SOL的精華與其它諸多功能(例如流控制)于一身的新型語(yǔ)言被創(chuàng)造出來(lái)時(shí),開(kāi)發(fā)者為其取名為L(zhǎng)ua——也就是葡萄牙語(yǔ)中的“月亮”。理由非常簡(jiǎn)單,因?yàn)樽鳛槠涓篙?,SOL在葡萄牙語(yǔ)中是指“太陽(yáng)”。
Smalltalk
Smalltalk是一個(gè)包含多種面向?qū)ο缶幊陶Z(yǔ)言的家族,最初由Xerox公司的帕洛阿爾托研究中心(簡(jiǎn)稱PARC)于上世紀(jì)七十年代所創(chuàng)建。它的出現(xiàn)給眾多后續(xù)出現(xiàn)的編程語(yǔ)言帶來(lái)了重大影響,其中包括Java、Python以及Ruby等等。
Alan Kay的學(xué)習(xí)研究小組一手建立起了Smalltalk,而根據(jù)Kay的回憶,當(dāng)時(shí)選擇這個(gè)名稱是為了迎合“印歐神話體系”中的設(shè)定。在這套理論系統(tǒng)中,像宙斯以及托爾這類名號(hào)霸氣側(cè)漏的神往往歷盡坎坷、飽經(jīng)磨難。因此他反其道而行之,選擇了Smalltalk這樣一個(gè)聽(tīng)起來(lái)就人畜無(wú)害的字眼,平和舒緩的風(fēng)格也讓人們不至于對(duì)這種語(yǔ)言抱有不切實(shí)際的期望。
Logo
Logo是一款由麻省理工學(xué)院人工智能實(shí)驗(yàn)室的多位計(jì)算機(jī)科學(xué)家于上世紀(jì)六十年代中期開(kāi)發(fā)完成的編程語(yǔ)言,當(dāng)時(shí)主要是為了滿足教學(xué)需要。它屬于Lisp語(yǔ)言的一類分支,能夠被用于實(shí)現(xiàn)多種編程概念的教學(xué)、同時(shí)也給Scratch等后續(xù)教學(xué)型語(yǔ)言帶來(lái)了深遠(yuǎn)影響。
它的一大主要特點(diǎn)在于利用海龜圖形生成源自命令的輸出結(jié)果。Logo這一名稱明顯源自希臘語(yǔ)的“logos”,原意為“字”或者“思想”,開(kāi)發(fā)者希望借此對(duì)其與傳統(tǒng)中面向數(shù)字的編程語(yǔ)言加以區(qū)分。
Ruby
Ruby由松本行弘于1993年所創(chuàng)建,這款真正面向?qū)ο蟮哪_本化語(yǔ)言被作為Perl以及Python的替代方案。與Perl類似,松本希望選擇一個(gè)與珠寶相關(guān)的詞匯為其命名。在與同事石冢圭樹(shù)進(jìn)行討論之后,最終名稱選項(xiàng)被鎖定在Coral(珊瑚)與Ruby(紅寶石)二者之間。
Ruby最終當(dāng)選,這一方面是由于松本更喜愛(ài)這個(gè)名稱、另一方面它同時(shí)也是石冢的生日石。松本還明確指出,雖然Perl所代表的珍珠象征著六月、而Ruby所代表的紅寶石則象征著七月,但Ruby并非Perl的繼承者(松本一直認(rèn)為Perl只是一種‘玩具性質(zhì)的語(yǔ)言’);相反,Ruby將徹底取代Perl。
Scheme
在上世紀(jì)五十年代末,麻省理工學(xué)院的John McCarthy創(chuàng)造出了Lisp。作為歷史最為悠久的早期高級(jí)編程語(yǔ)言之一,Lisp很快成為人工智能研究者們最為青睞的編程方案。隨著時(shí)間的推移,Lisp的一系列不同分支也爭(zhēng)相涌現(xiàn),其中就包括Planner與Conniver。
1975年,麻省理工學(xué)院的Gerald Jay Sussman與Guy Steele開(kāi)發(fā)出了Lisp的又一款衍生方案,并按照Planner與Conniver的命名慣例為其選擇了Schemer作為名稱。不過(guò)這種語(yǔ)言當(dāng)時(shí)運(yùn)行在由麻省理工學(xué)院自主開(kāi)發(fā)的ITS(即非兼容分時(shí)系統(tǒng))系統(tǒng)之上,該系統(tǒng)強(qiáng)制要求文件名由兩部分組成、且每一部分最多只能包含六個(gè)字符。有鑒于此,Schemer最終被縮減成了Scheme。
Scala
Scala語(yǔ)言由Martin Odersky于2001年創(chuàng)建,它身兼函數(shù)與面向?qū)ο髢煞N特性。它在編寫(xiě)時(shí)充分考慮到了將開(kāi)發(fā)成果編譯為Java字節(jié)碼的需求(在此之前,它也能夠被編譯為.NET代碼)。
Scala這一名稱的確定基于兩個(gè)不同理由:第一,由于結(jié)合了可擴(kuò)展LAN、因此它具備很好的擴(kuò)展(scale)能力;第二,“scala”在意大利語(yǔ)中代表著樓梯或者階梯,這為該語(yǔ)言賦予了美好的雙重含義——幫助使用者通往目標(biāo)的卓越編程語(yǔ)言。
Scratch
Scratch是一款教學(xué)性編程語(yǔ)言,由麻省理工學(xué)院媒體實(shí)驗(yàn)室于2003年開(kāi)發(fā)完成。孩子們可以利用它將屏幕上的各個(gè)積木狀模塊(被稱為sprite,即精靈)連接起來(lái),并借此完成程序創(chuàng)建。在它的幫助下,年輕的開(kāi)發(fā)者們能夠創(chuàng)造出屬于自己的故事、電影、游戲、音樂(lè)以及一切曾經(jīng)出現(xiàn)在他們夢(mèng)中的事物。
這款語(yǔ)言的名稱來(lái)自嘻哈電臺(tái)主持人通過(guò)旋轉(zhuǎn)并刮擦(scratch)塑膠唱片來(lái)創(chuàng)造全新音效與音樂(lè)作品的表演方式。
AWK
任何一位曾經(jīng)與Unix系統(tǒng)打過(guò)交道的朋友肯定也對(duì)AWK相當(dāng)熟悉,這是一種用于處理文本文件的解釋型語(yǔ)言。它最初誕生于1977年,當(dāng)時(shí)被作為Unix grep工具的通用版本使用,隨后于1979年首次成為Unix版本7中的內(nèi)置方案。
在開(kāi)發(fā)Perl時(shí),Larry Wall受到了來(lái)自AWK的諸多影響。與其它大部分編程語(yǔ)言的名稱一樣,AWK同樣是個(gè)縮寫(xiě)詞;但與常見(jiàn)情況不同的是,這一縮寫(xiě)代表的并非語(yǔ)言本身的作用、而是來(lái)自貝爾實(shí)驗(yàn)室的三位開(kāi)發(fā)者的姓氏首字母:Alfred Aho、Peter Weingerber以及Brian Kernighan(上圖)。
Groovy(精妙,亦有時(shí)髦之意——如上狗所示)
時(shí)間轉(zhuǎn)回2003年,當(dāng)時(shí)Java程序員James Strachan希望能用上一款像Python或者Ruby那樣的腳本化語(yǔ)言——但卻要能夠運(yùn)行在Java平臺(tái)之上。這可怎么辦?
答案是自己動(dòng)手。他設(shè)計(jì)出的這款新語(yǔ)言能夠?qū)㈤_(kāi)發(fā)成果動(dòng)態(tài)編譯為Java字節(jié)碼,用他自己的話說(shuō),這是一款“站在全部精妙(groovy)Java代碼的肩膀上而被創(chuàng)造出來(lái)的語(yǔ)言”。接下來(lái)的工作就簡(jiǎn)單了,沒(méi)費(fèi)什么腦子、Groovy這個(gè)名稱已然被敲定。
原文鏈接:http://www.computerworld.com/slideshow/detail/146077#slide1