Phil Karlton曾經(jīng)說過,在計(jì)算機(jī)科學(xué)的世界中,只有兩件事:無效緩存還有命名。
也正是由于后者,我們在技術(shù)世界中,有著如何多的奇怪名字的編程語言。在本篇文章,我們一起探索一些常見編程語言的由來,來“揭密”為什么選這樣的名,還有這些單詞的出處。
Perl
Perl被譽(yù)為瑞士軍刀,功能強(qiáng)大而靈活。它是由美國開發(fā)者Larry Wall在1987年創(chuàng)立。它只所以選擇叫Pearl,珍珠的單詞,是因?yàn)樗X得這個(gè)簡短又讓人難忘的單詞,有著積極的想像力。當(dāng)時(shí)卻已經(jīng)有一個(gè)編程語言叫了這個(gè)名字,他就將單詞改成了Perl,以開源的方式是Practical Extraction and Reporting Language,也就是實(shí)用提取的報(bào)表語言縮寫。Pearl一詞來自古英文語法Perle,意為珠子或有價(jià)值的東shgg,而拉丁語perna的意思是“腿”,延伸意義為看起來像羊腿一樣的軟體動(dòng)物名字。
Ruby
Ruby是由日本開發(fā)者Yukihiro Matz Matsumoto在1990年創(chuàng)建的。受Perl的影響,他也想用寶石的名字來給自己的語言起名,他選擇了叫 Ruby, 他認(rèn)為也是借了Perl的光,是Perl誕生后的寶石:六月的珍珠,七月的紅寶石。Ruby單詞的來源于古法語的 rubi ,意思是微紅的寶石,而拉丁語的 rubeus 意為紅色。
Matz可不僅僅是想讓Ruby成為Perl的繼任者 ,而是一直想替代它。
Python
這是荷蘭人Guido van Rossum 于上世紀(jì)80年代末設(shè)計(jì)的一個(gè)語言,現(xiàn)在非常流行,Van Rossum 在起名的時(shí)候,想要一些“短的、獨(dú)特的、有點(diǎn)神秘色彩的”東西,他是英國著名戲劇團(tuán)體Monty Python超級粉絲, 就從中找到了靈感,用Python命名了這門新語言。
其實(shí)Monty Python劇團(tuán)有個(gè)著名的戲劇叫做Dead Parrot, 似乎沒有消息說他想用這個(gè)名字來命名新語言。
Linda
洛夫萊斯(Lovelace)是個(gè)跟程序語言有著不解之緣的姓氏。至少有兩種程序語言以 Lovelace 女士的名字命名。較為知名的一個(gè)是 Ada Language,這種語言 1970 年代產(chǎn)生于美國國防部,最初目的是減少國防部使用的高級編程語言數(shù)量。Ada 的命名則是為了紀(jì)念埃達(dá) · 洛夫萊斯(Ada Lovelace)女爵。
這位 Lovelace 女爵就是大名鼎鼎的英國詩人拜倫的女兒。和她父親一樣,Ada 在數(shù)學(xué)方面也有著極高的天賦。她曾花九個(gè)月時(shí)間翻譯意大利數(shù)學(xué)家路易吉 · 米納比亞講述查爾斯 · 巴貝奇計(jì)算機(jī)分析機(jī)的論文,并添加了許多注記來說明用該機(jī)器來計(jì)算伯努利數(shù)的方法。這種方法被認(rèn)為是世界上第一個(gè)計(jì)算機(jī)程序,Ada 也被認(rèn)為是世界上第一位女性程序員。
程序員 Ada Lovelace 女士逝世約 126 年后,耶魯大學(xué)的研究生大衛(wèi) · 格林特(David Gelernter)聽說了這個(gè)故事。當(dāng)時(shí)他正考慮如何為自己編寫的一種程序語言的命名。格林特先生馬上想到了另一位 Lovelace 女士——他最喜歡的情**星琳達(dá) · 洛夫萊斯(Linda Lovelace)。
格林特用 Linda 的名字命名了他的程序語言。以人名命名的程序語言很多,比如 Eiffel Language 得名于埃菲爾鐵塔的設(shè)計(jì)者居斯塔夫 · 埃菲爾(Gustave Eiffel),Hugo Language 則是以維克多 · 雨果(Victor Hugo)的名字命名。
JAVA
上世紀(jì)90年代初, Sun預(yù)感到智能家居設(shè)備(如互動(dòng)TV)的浪潮即將來臨,他們開發(fā)了一個(gè)叫Oak的語言,但是Sun的律師確定這個(gè)名字的商標(biāo)已經(jīng)被注冊,他們只好選個(gè)新名字,經(jīng)過一系列的會(huì)議,大家想了很多名字,經(jīng)過律師的“過濾”,只剩下了三個(gè)Silk, DNA , Java。
不知道是誰第一個(gè)建議使用Java, 但是大家普遍認(rèn)為靈感來自于Sun的工程師常去一個(gè)咖啡店:Pete's Coffee,因?yàn)镴ava是印度尼西亞的爪哇島,那里盛產(chǎn)咖啡。
Forth
Forth 是Charles Moore在上世紀(jì)60年代設(shè)計(jì)的一個(gè)古老語言, 當(dāng)時(shí)他在一個(gè)家裝公司工作,公司給它提供了一臺(tái)IBM 1130 微型計(jì)算機(jī),還帶著一個(gè)2250顯示卡,公司想讓他用電腦來設(shè)計(jì)地毯!
Moore最初想使用FORTRAN, 但這個(gè)語言沒法使用2250 顯卡。他只好發(fā)明了一個(gè)新語言,叫做Fourth ,意思是第四代編程語言??墒?130計(jì)算機(jī)要求文件名不能超過5個(gè)字符, 于是他只好把u給踢了出去,變成了Forth。
Lua
Lua 是巴西的一個(gè)大學(xué)所發(fā)明的,它基于兩個(gè)語言:DEL(Date Entry Language)和SOL(Simple Object Language)。新語言把兩個(gè)語言的優(yōu)點(diǎn)都結(jié)合了起來。
Sol在葡萄牙語中的意思是太陽, 那新的語言就叫做月亮:Lua。
Smalltalk
Smalltalk是一個(gè)面向?qū)ο蟮恼Z言,由施樂帕洛•阿爾托研究中心發(fā)明,這門語言給Java,Python,Ruby等很多后來者帶來了巨大影響。
Alan Kay的小組發(fā)明了Smalltalk,正如他所說,這一名字的選取是針鋒相對于“印歐神靈理論”的,該理論中任何系統(tǒng)都會(huì)被賦予一個(gè)它們永遠(yuǎn)無法企及的、類似于神靈的名字,例如宙斯(與天神同名)和索爾(與雷神同名)。相反地,他選擇了一個(gè)超級平淡無奇的名字,Smalltalk,以杜絕招致任何過高的期望值。
Logo
這是MIT開發(fā)的一個(gè)用于教育的一門語言,作為LISP的一個(gè)方言,可以用來教授很多的編程概念,它也影響了很多后來的致力于教育的編程語言,例如Scratch。
Logo編程時(shí)有個(gè)小海龜,可以根據(jù)用戶的指令來畫圖。
Logo來源于logos, 在希臘語中意思是“詞”或者“思想”, 這個(gè)名稱和那些面向數(shù)字的編程語言區(qū)分開了。
Scheme
上世紀(jì)50年代, John McCathy在MIT發(fā)明了Lisp,這是最早的高級編程語言之一,并且很快變成了人工智能研究者的最愛。
隨著時(shí)間的推移,很多LISP的方言被開發(fā)出來,其中的兩個(gè)是Planner和Conniver。
1975年,MIT的Gerald Jay Sussman和Guy Steele 又開了一個(gè)Lisp的新方言(方言真多!),他們把它稱為Schemer, 這個(gè)Schemer 使用了Planner和Conniver的命名規(guī)范。
然而,這個(gè)語言跑在一個(gè)MIT開發(fā)的叫做ITS的操作系統(tǒng)上,它的文件名支持兩個(gè)部分, 每個(gè)部分都只能有6個(gè)字符, 于是Schemer只好縮水,變成Scheme。
Scala
Scala是個(gè)年輕的語言,2001年由Martin Odersky創(chuàng)建,這是一個(gè)既支持函數(shù)式編程又支持面向?qū)ο缶幊痰恼Z言。被編譯以后,它成為了Java字節(jié)碼,在JVM中運(yùn)行(之前,Scala可以被編譯成.NET的中間代碼來執(zhí)行)。
選擇Scala作為名稱有兩個(gè)原因:首先它表示SCAlable LAN這兩個(gè)詞的組合,其次在意大利語中表示樓梯或者梯子,這就暗含著Scala要幫助你不斷上升,成為更好的編程語言。
Scratch
又是一個(gè)MIT開發(fā)的面向孩子的編程語言!
孩子們可以通過可視化的形式來操作屏幕上的“精靈”, 從而創(chuàng)造一些故事,小電影,游戲,音樂以及他們夢想創(chuàng)造的任何東西。
這個(gè)語言的名字來源于嘻哈音樂DJ,他們會(huì)通過手動(dòng)旋轉(zhuǎn)和刮擦(scratching)唱機(jī)上的黑膠唱盤來創(chuàng)造新的聲音和音樂。
AWK
使用過Unix都會(huì)對AWK很熟悉,這是一個(gè)腳本語言用來處理文本文件, 1977當(dāng)它被開發(fā)出來的時(shí)候主要是想做一個(gè)grep 工具的一個(gè)更加通用的版本。AWK對Larry Wall設(shè)計(jì)Perl產(chǎn)生了重要的影響。
和很多編程語言的名稱類似,AWK也是一種縮寫,但是這個(gè)縮寫不是表示語言能做什么,相反,它是三個(gè)來自于貝爾實(shí)驗(yàn)室的發(fā)明人的名稱:Alfred Aho, Peter Weinberger 和Brian Kernighan。
Groovy
2003年,一個(gè)叫James的Java程序員想要一個(gè)像Python 和Ruby 的腳本語言, 但是要運(yùn)行在JVM中。
他的解決方案就是設(shè)計(jì)一個(gè)新的語言,能夠動(dòng)態(tài)地編譯成Java 字節(jié)碼。用他自己的話來說:“我更期待一種(僅僅)建立在那些精妙的Java代碼和JVM之上的動(dòng)態(tài)語言(精妙-Groovy)。”
Kotlin
Kotlin是JetBrains在2011年發(fā)布的新編程語言。它的名稱來自俄羅斯的Kotlin島。團(tuán)隊(duì)希望使用像Java一樣的島嶼名稱-盡管從技術(shù)上來說,Java是根據(jù)咖啡而不是島嶼來命名的!Kotlin(俄語為Котлин)曾經(jīng)是瑞典國的一部分,芬蘭人稱其為Kettusaari,意為“狐貍島”,瑞典人稱其為Ketlingen,這可能源于德國下層的kettel,意為“大鍋”。彼得大帝(Peter Great)和他的沙俄軍隊(duì)在1703年奪取了該島的控制權(quán)后,將其改名為科特林(Kotling),后來簡稱為科特林(Kotlin)。
Swift
關(guān)于蘋果公司為什么選擇Swift的名稱,目前尚無明確答案,但是有人在Quora上討論過,它不是以Taylor Swift的名字命名的!我們的猜測是蘋果的團(tuán)隊(duì)想給人以快速的印象。swift一詞的意思是“以極快的速度或快速運(yùn)動(dòng)”,可以追溯到史前的swipt,意思是“以驚掠的方式運(yùn)動(dòng)”。這種燕狀的鳥兒從17世紀(jì)起就被稱為燕子,并被用作編程語言的徽標(biāo)。
還有一些有趣的例子:
最早有種叫“B語言”的程序語言,B是發(fā)明者妻子名字的第一個(gè)字母,也許他覺得他的發(fā)明和他老婆一樣重要。這個(gè)故事說明程序員活該沒老婆。
后來B語言經(jīng)過改進(jìn),沒想到啥好名字,就往后一個(gè)字母,叫C語言。這個(gè)故事說明這個(gè)程序員沒老婆。
后來C語言擴(kuò)展出面向?qū)ο蠊δ埽蠧++。別問我++是什么,我不是程序員,你才是程序員,你全家都是程序員。
再后來微軟又發(fā)明了一種類似Java的語言,語法依然是C/C++的風(fēng)格,叫C#,念“C Sharp”。什么含義?和樂理有關(guān)。C就是“C大調(diào)”那個(gè)C,表示某個(gè)音,C#就是比C高一個(gè)半音。C#發(fā)明者的想象力比上面三位都強(qiáng)多了,所以編程水平比較低,寫出來的東西愛藍(lán)屏。
還有一些有趣的例子:
linux
Linux Is Not UniX,這就有點(diǎn)像GNU了,但是是否屬實(shí)就有待考證了。
php
原名Personal Home Page,剛開始是Rasmus Lerdorf為了維護(hù)個(gè)人網(wǎng)頁而開發(fā)的,后來功能強(qiáng)大了,改名為PHP: Hypertext Preprocessor,相應(yīng)地含義也變成了超文本預(yù)處理器。
RPM
RPM Package Manager,原名是Red Hat Package Manager,一種用于互聯(lián)網(wǎng)下載包的打包及安裝工具,它包含在某些Linux分發(fā)版中。它生成具有.RPM擴(kuò)展名的文件。與Dpkg類似。
Wine
Wine Is Not an Emulator,是一個(gè)能夠在多種 POSIX-compliant 操作系統(tǒng)(諸如 Linux,mac OSX 及 BSD 等)上運(yùn)行 windows 應(yīng)用的兼容層。關(guān)于Wine的真正含義,有人對“Wine Is Not an Emulator”的說法表示質(zhì)疑,認(rèn)為”非模擬器“的解釋不過是一種娛樂性的說法,Wine的真實(shí)意思應(yīng)當(dāng)是是Windows Environment的縮寫,即WinE。
PNG
PNG’s Not GIF,一種圖像文件存儲(chǔ)格式,其設(shè)計(jì)目的是試圖替代GIF和TIFF文件格式,同時(shí)增加一些GIF文件格式所不具備的特性。PNG的名稱來源于“可移植網(wǎng)絡(luò)圖形格式(Portable Network Graphic Format,PNG)”,
EMACS
EMACS Makes A Computer Slow,其自我調(diào)侃的意味就太明顯了,大概也是對自己集成的強(qiáng)大的功能洋洋得意吧。
是不是挺有趣,盡管有的語言名字起的有點(diǎn)奇異,但聽起來確定很酷:D
編譯:洛逸