技術趣聞:十三種程式語言和它們名稱背後的故事

edithfang發表於2014-05-09

程式語言的名稱通常既公式化又枯燥無聊,但其中也不乏一些令人眼前一亮的字眼。在今天的文章中,我們將一同瞭解程式語言名稱背後的那些創意與靈感。

 

如果玫瑰不叫玫瑰,芳香是否如故?

程式設計師們普遍認為,軟體開發工作當中難度最高的一項任務就是為成果命名。儘管這種情況並不多見,但命名過程中尤其令人頭大的就是面對著一種新型程式語言。

在一種新型語言的設計工作宣告結束後,隨之而來的命名過程往往遵循以下幾個步驟:以語言本身的特性或者描述為名,採取首字母或者縮寫形式(例如BASIC、COBOL、TCL以及LISP);從現有語言當中派生而來的新名稱(例如C++、C#以及CoffeeScript);又或者直接取自某位對數學或者計算科學作出卓越貢獻的偉人(例如Ada、Pascal以及Turing)。

不過有時候,語言設計得們也會發掘出一些特別的靈感、進而為我們帶來更為豐富的命名方式。下面我們就一起來看看這十三種擁有不同尋常名稱的程式語言和它們背後的故事。

 

Python

這款最初釋出於1991年的語言人氣極高,它是由荷蘭程式設計師Guido van Rossum於上世紀八十年代末著手開發的。由他一手打造的這款新型指令碼語言派生自ABC程式語言,其誕生源自Rossum在聖誕節假期中的興趣之作。

當需要為這種全新語言選擇名稱時,van Rossum希望選擇一個“簡短、獨特而且略帶神祕色彩”的字眼。他從著名英國喜劇團體Monty Python(巨蟒)身上得到了靈感,他本人也是該劇團的鐵桿粉絲。不知道他當時有沒有考慮過Dead Parrot(死鸚鵡,同樣為英國喜劇團體)這個名稱。

 

Java

Java的前身是誕生於上世紀九十年代早期、由Sun公司打造的Green專案,該專案的初衷在於為即將到來的智慧裝置浪潮——例如互動式電視——建立一套技術支援方案。這款新語言在建立之初被稱為Oak,但Sun公司的律師團很快發現該名稱已經被註冊,這迫使他們必須重新尋找合適的新名稱。

公司旋即召開了一系列會議,並整理出一份簡短的備選名稱清單(經過律師團隊的嚴格甄選),其中包括Silk、DNA以及Java。儘管現在我們已經無法考證當初是哪位仁兄最先推薦了Java這一選項,但它確實受到了大多數與會者的廣泛支援。Java的靈感源自Peet咖啡店(Java即英文的爪哇,以盛產咖啡而聞名),這裡是Sun公司的各位工程師們最青睞的休閒場所。

 

Forth

Forth語言的開發工作可以追溯到上世紀六十年代,由Charles Moore負責開發。他曾於1968年效力於一家名為Mohasco的家居傢俱公司,當時公司為他配備了一臺IBM 1130微型計算機外加一臺2250圖形顯示器,希望他能借此進行地毯產品的設計。

由於無法利用FORTRAN語言進行圖形設計,Moore決定自己開發一套程式語言——這就是Forth。他最初選擇的名稱是“Fourth”,代表這是第四代語言。但問題在於,IBM 1130微機只允許在檔名當中包含最多五個字元,所以在去掉了“U”之後、Forth由此誕生。

 

Perl

作為一款被稱為“瑞士軍刀”的語言,Perl以其出色的靈活性與強大能力聞名於世。Perl由Larry Wall於上世紀八十年代末所建立。在為其選擇名稱時,Wall表示他希望能在簡短的詞彙中包含“積極的內涵”。他考慮過使用他妻子的名字(Gloria),但後來轉而選擇了“pearl(珍珠)”。

然而當時這個名稱已經被另一款程式語言所佔用(即PEARL,‘流程與實驗自動化實時語言’的縮寫),為了避免衝突、他去掉了其中的“A”並由此衍生出perl。值得注意的是,最初peal這個名稱的四個字母全部為小寫,這是受到了Unix全部小寫規則的啟發。不過到了後來,也就是1993年Perl 4版本正式釋出時,名稱的首字母開始轉為大寫並一直沿用至今。

 

Lua

Lua是由TeCGraf於1993年建立的一款指令碼化語言——很多朋友對於TeCGrag可能並不熟悉,它是巴西里約熱內盧天主教大學計算機圖形技術小組的簡稱。Lua以TeCGraf此前所開發的兩款早期語言為基礎,它們分別是DEL(即日期輸入語言)與SOL(即簡單物件語言)。

當一種結合了DEL與SOL的精華與其它諸多功能(例如流控制)於一身的新型語言被創造出來時,開發者為其取名為Lua——也就是葡萄牙語中的“月亮”。理由非常簡單,因為作為其父輩,SOL在葡萄牙語中是指“太陽”。

 

Smalltalk

Smalltalk是一個包含多種物件導向程式語言的家族,最初由Xerox公司的帕洛阿爾託研究中心(簡稱PARC)於上世紀七十年代所建立。它的出現給眾多後續出現的程式語言帶來了重大影響,其中包括Java、Python以及Ruby等等。

Alan Kay的學習研究小組一手建立起了Smalltalk,而根據Kay的回憶,當時選擇這個名稱是為了迎合“印歐神話體系”中的設定。在這套理論系統中,像宙斯以及托爾這類名號霸氣側漏的神往往歷盡坎坷、飽經磨難。因此他反其道而行之,選擇了Smalltalk這樣一個聽起來就人畜無害的字眼,平和舒緩的風格也讓人們不至於對這種語言抱有不切實際的期望。

 

Logo

Logo是一款由麻省理工學院人工智慧實驗室的多位電腦科學家於上世紀六十年代中期開發完成的程式語言,當時主要是為了滿足教學需要。它屬於Lisp語言的一類分支,能夠被用於實現多種程式設計概念的教學、同時也給Scratch等後續教學型語言帶來了深遠影響。

它的一大主要特點在於利用海龜圖形生成源自命令的輸出結果。Logo這一名稱明顯源自希臘語的“logos”,原意為“字”或者“思想”,開發者希望藉此對其與傳統中面向數字的程式語言加以區分。

 

Ruby

Ruby由松本行弘於1993年所建立,這款真正物件導向的指令碼化語言被作為Perl以及Python的替代方案。與Perl類似,松本希望選擇一個與珠寶相關的詞彙為其命名。在與同事石冢圭樹進行討論之後,最終名稱選項被鎖定在Coral(珊瑚)與Ruby(紅寶石)二者之間。

Ruby最終當選,這一方面是由於松本更喜愛這個名稱、另一方面它同時也是石冢的生日石。松本還明確指出,雖然Perl所代表的珍珠象徵著六月、而Ruby所代表的紅寶石則象徵著七月,但Ruby並非Perl的繼承者(松本一直認為Perl只是一種‘玩具性質的語言’);相反,Ruby將徹底取代Perl。

 

Scheme

在上世紀五十年代末,麻省理工學院的John McCarthy創造出了Lisp。作為歷史最為悠久的早期高階程式語言之一,Lisp很快成為人工智慧研究者們最為青睞的程式設計方案。隨著時間的推移,Lisp的一系列不同分支也爭相湧現,其中就包括Planner與Conniver。

1975年,麻省理工學院的Gerald Jay Sussman與Guy Steele開發出了Lisp的又一款衍生方案,並按照Planner與Conniver的命名慣例為其選擇了Schemer作為名稱。不過這種語言當時執行在由麻省理工學院自主開發的ITS(即非相容分時系統)系統之上,該系統強制要求檔名由兩部分組成、且每一部分最多隻能包含六個字元。有鑑於此,Schemer最終被縮減成了Scheme。

 

Scala

Scala語言由Martin Odersky於2001年建立,它身兼函式與物件導向兩種特性。它在編寫時充分考慮到了將開發成果編譯為Java位元組碼的需求(在此之前,它也能夠被編譯為.NET程式碼)。

Scala這一名稱的確定基於兩個不同理由:第一,由於結合了可擴充套件LAN、因此它具備很好的擴充套件(scale)能力;第二,“scala”在義大利語中代表著樓梯或者階梯,這為該語言賦予了美好的雙重含義——幫助使用者通往目標的卓越程式語言。

 

Scratch

Scratch是一款教學性程式語言,由麻省理工學院媒體實驗室於2003年開發完成。孩子們可以利用它將螢幕上的各個積木狀模組(被稱為sprite,即精靈)連線起來,並藉此完成程式建立。在它的幫助下,年輕的開發者們能夠創造出屬於自己的故事、電影、遊戲、音樂以及一切曾經出現在他們夢中的事物。

這款語言的名稱來自嘻哈電臺主持人通過旋轉並刮擦(scratch)塑膠唱片來創造全新音效與音樂作品的表演方式。

 

AWK

任何一位曾經與Unix系統打過交道的朋友肯定也對AWK相當熟悉,這是一種用於處理文字檔案的解釋型語言。它最初誕生於1977年,當時被作為Unix grep工具的通用版本使用,隨後於1979年首次成為Unix版本7中的內建方案。

在開發Perl時,Larry Wall受到了來自AWK的諸多影響。與其它大部分程式語言的名稱一樣,AWK同樣是個縮寫詞;但與常見情況不同的是,這一縮寫代表的並非語言本身的作用、而是來自貝爾實驗室的三位開發者的姓氏首字母:Alfred Aho、Peter Weingerber以及Brian Kernighan(上圖)。

 

Groovy(精妙,亦有時髦之意——如上狗所示)

時間轉回2003年,當時Java程式設計師James Strachan希望能用上一款像Python或者Ruby那樣的指令碼化語言——但卻要能夠執行在Java平臺之上。這可怎麼辦?

答案是自己動手。他設計出的這款新語言能夠將開發成果動態編譯為Java位元組碼,用他自己的話說,這是一款“站在全部精妙(groovy)Java程式碼的肩膀上而被創造出來的語言”。接下來的工作就簡單了,沒費什麼腦子、Groovy這個名稱已然被敲定。

相關閱讀
評論(1)

相關文章