16種程式語言是如何命名的?

胖虎讀書 發佈 2020-01-07T04:47:39+00:00

Phil Karlton曾經說過,在計算機科學的世界中,只有兩件事:無效緩存還有命名。也正是由於後者,我們在技術世界中,有著如何多的奇怪名字的程式語言。在本篇文章,我們一起探索一些常見程式語言的由來,來「揭密」為什麼選這樣的名,還有這些單詞的出處。

Phil Karlton曾經說過,在計算機科學的世界中,只有兩件事:無效緩存還有命名。

也正是由於後者,我們在技術世界中,有著如何多的奇怪名字的程式語言。在本篇文章,我們一起探索一些常見程式語言的由來,來「揭密」為什麼選這樣的名,還有這些單詞的出處。

Perl

Perl被譽為瑞士軍刀,功能強大而靈活。它是由美國開發者Larry Wall在1987年創立。它只所以選擇叫Pearl,珍珠的單詞,是因為它覺得這個簡短又讓人難忘的單詞,有著積極的想像力。當時卻已經有一個程式語言叫了這個名字,他就將單詞改成了Perl,以開源的方式是Practical Extraction and Reporting Language,也就是實用提取的報表語言縮寫。Pearl一詞來自古英文語法Perle,意為珠子或有價值的東shgg,而拉丁語perna的意思是「腿」,延伸意義為看起來像羊腿一樣的軟體動物名字。

Ruby

Ruby是由日本開發者Yukihiro Matz Matsumoto在1990年創建的。受Perl的影響,他也想用寶石的名字來給自己的語言起名,他選擇了叫 Ruby, 他認為也是借了Perl的光,是Perl誕生後的寶石:六月的珍珠,七月的紅寶石。Ruby單詞的來源於古法語的 rubi ,意思是微紅的寶石,而拉丁語的 rubeus 意為紅色。

Matz可不僅僅是想讓Ruby成為Perl的繼任者 ,而是一直想替代它。

Python

這是荷蘭人Guido van Rossum 於上世紀80年代末設計的一個語言,現在非常流行,Van Rossum 在起名的時候,想要一些「短的、獨特的、有點神秘色彩的」東西,他是英國著名戲劇團體Monty Python超級粉絲, 就從中找到了靈感,用Python命名了這門新語言。

其實Monty Python劇團有個著名的戲劇叫做Dead Parrot, 似乎沒有消息說他想用這個名字來命名新語言。

Linda

洛夫萊斯(Lovelace)是個跟程序語言有著不解之緣的姓氏。至少有兩種程序語言以 Lovelace 女士的名字命名。較為知名的一個是 Ada Language,這種語言 1970 年代產生於美國國防部,最初目的是減少國防部使用的高級程式語言數量。Ada 的命名則是為了紀念埃達 · 洛夫萊斯(Ada Lovelace)女爵。

這位 Lovelace 女爵就是大名鼎鼎的英國詩人拜倫的女兒。和她父親一樣,Ada 在數學方面也有著極高的天賦。她曾花九個月時間翻譯義大利數學家路易吉 · 米納比亞講述查爾斯 · 巴貝奇計算機分析機的論文,並添加了許多註記來說明用該機器來計算伯努利數的方法。這種方法被認為是世界上第一個電腦程式,Ada 也被認為是世界上第一位女性程式設計師。

程式設計師 Ada Lovelace 女士逝世約 126 年後,耶魯大學的研究生大衛 · 格林特(David Gelernter)聽說了這個故事。當時他正考慮如何為自己編寫的一種程序語言的命名。格林特先生馬上想到了另一位 Lovelace 女士——他最喜歡的情**星琳達 · 洛夫萊斯(Linda Lovelace)。

格林特用 Linda 的名字命名了他的程序語言。以人名命名的程序語言很多,比如 Eiffel Language 得名於艾菲爾鐵塔的設計者居斯塔夫 · 艾菲爾(Gustave Eiffel),Hugo Language 則是以維克多 · 雨果(Victor Hugo)的名字命名。

Java

上世紀90年代初, Sun預感到智能家居設備(如互動TV)的浪潮即將來臨,他們開發了一個叫Oak的語言,但是Sun的律師確定這個名字的商標已經被註冊,他們只好選個新名字,經過一系列的會議,大家想了很多名字,經過律師的「過濾」,只剩下了三個Silk, DNA , Java。

不知道是誰第一個建議使用Java, 但是大家普遍認為靈感來自於Sun的工程師常去一個咖啡店:Pete's Coffee,因為Java是印度尼西亞的爪哇島,那裡盛產咖啡。

Forth

Forth 是Charles Moore在上世紀60年代設計的一個古老語言, 當時他在一個家裝公司工作,公司給它提供了一台IBM 1130 微型計算機,還帶著一個2250顯示卡,公司想讓他用電腦來設計地毯!

Moore最初想使用FORTRAN, 但這個語言沒法使用2250 顯卡。他只好發明了一個新語言,叫做Fourth ,意思是第四代程式語言。可是1130計算機要求文件名不能超過5個字符, 於是他只好把u給踢了出去,變成了Forth。

Lua

Lua 是巴西的一個大學所發明的,它基於兩個語言:DEL(Date Entry Language)和SOL(Simple Object Language)。新語言把兩個語言的優點都結合了起來。

Sol在葡萄牙語中的意思是太陽, 那新的語言就叫做月亮:Lua。

Smalltalk

Smalltalk是一個面向對象的語言,由施樂帕洛•阿爾托研究中心發明,這門語言給Java,Python,Ruby等很多後來者帶來了巨大影響。

Alan Kay的小組發明了Smalltalk,正如他所說,這一名字的選取是針鋒相對於「印歐神靈理論」的,該理論中任何系統都會被賦予一個它們永遠無法企及的、類似於神靈的名字,例如宙斯(與天神同名)和索爾(與雷神同名)。相反地,他選擇了一個超級平淡無奇的名字,Smalltalk,以杜絕招致任何過高的期望值。

Logo

這是MIT開發的一個用於教育的一門語言,作為LISP的一個方言,可以用來教授很多的編程概念,它也影響了很多後來的致力於教育的程式語言,例如Scratch。

Logo編程時有個小海龜,可以根據用戶的指令來畫圖。

Logo來源於logos, 在希臘語中意思是「詞」或者「思想」, 這個名稱和那些面向數字的程式語言區分開了。

Scheme

上世紀50年代, John McCathy在MIT發明了Lisp,這是最早的高級程式語言之一,並且很快變成了人工智慧研究者的最愛。

隨著時間的推移,很多LISP的方言被開發出來,其中的兩個是Planner和Conniver。

1975年,MIT的Gerald Jay Sussman和Guy Steele 又開了一個Lisp的新方言(方言真多!),他們把它稱為Schemer, 這個Schemer 使用了Planner和Conniver的命名規範。

然而,這個語言跑在一個MIT開發的叫做ITS的作業系統上,它的文件名支持兩個部分, 每個部分都只能有6個字符, 於是Schemer只好縮水,變成Scheme。

Scala

Scala是個年輕的語言,2001年由Martin Odersky創建,這是一個既支持函數式編程又支持面向對象編程的語言。被編譯以後,它成為了Java字節碼,在JVM中運行(之前,Scala可以被編譯成.NET的中間代碼來執行)。

選擇Scala作為名稱有兩個原因:首先它表示SCAlable LAN這兩個詞的組合,其次在義大利語中表示樓梯或者梯子,這就暗含著Scala要幫助你不斷上升,成為更好的程式語言。

Scratch

又是一個MIT開發的面向孩子的程式語言!

孩子們可以通過可視化的形式來操作螢幕上的「精靈」, 從而創造一些故事,小電影,遊戲,音樂以及他們夢想創造的任何東西。

這個語言的名字來源於嘻哈音樂DJ,他們會通過手動旋轉和刮擦(scratching)唱機上的黑膠唱盤來創造新的聲音和音樂。

AWK

使用過Unix都會對AWK很熟悉,這是一個腳本語言用來處理文本文件, 1977當它被開發出來的時候主要是想做一個grep 工具的一個更加通用的版本。AWK對Larry Wall設計Perl產生了重要的影響。

和很多程式語言的名稱類似,AWK也是一種縮寫,但是這個縮寫不是表示語言能做什麼,相反,它是三個來自於貝爾實驗室的發明人的名稱:Alfred Aho, Peter Weinberger 和Brian Kernighan。

Groovy

2003年,一個叫James的Java程式設計師想要一個像Python 和Ruby 的腳本語言, 但是要運行在JVM中。

他的解決方案就是設計一個新的語言,能夠動態地編譯成Java 字節碼。用他自己的話來說:「我更期待一種(僅僅)建立在那些精妙的Java代碼和JVM之上的動態語言(精妙-Groovy)。」

Kotlin

Kotlin是JetBrains在2011年發布的新程式語言。它的名稱來自俄羅斯的Kotlin島。團隊希望使用像Java一樣的島嶼名稱-儘管從技術上來說,Java是根據咖啡而不是島嶼來命名的!Kotlin(俄語為Котлин)曾經是瑞典國的一部分,芬蘭人稱其為Kettusaari,意為「狐狸島」,瑞典人稱其為Ketlingen,這可能源於德國下層的kettel,意為「大鍋」。彼得大帝(Peter Great)和他的沙俄軍隊在1703年奪取了該島的控制權後,將其改名為科特林(Kotling),後來簡稱為科特林(Kotlin)。

Swift

關於蘋果公司為什麼選擇Swift的名稱,目前尚無明確答案,但是有人在Quora上討論過,它不是以Taylor Swift的名字命名的!我們的猜測是蘋果的團隊想給人以快速的印象。swift一詞的意思是「以極快的速度或快速運動」,可以追溯到史前的swipt,意思是「以驚掠的方式運動」。這種燕狀的鳥兒從17世紀起就被稱為燕子,並被用作程式語言的徽標。

還有一些有趣的例子:

最早有種叫「B語言」的程序語言,B是發明者妻子名字的第一個字母,也許他覺得他的發明和他老婆一樣重要。這個故事說明程式設計師活該沒老婆。

後來B語言經過改進,沒想到啥好名字,就往後一個字母,叫C語言。這個故事說明這個程式設計師沒老婆。

後來C語言擴展出面向對象功能,叫C++。別問我++是什麼,我不是程式設計師,你才是程式設計師,你全家都是程式設計師。

再後來微軟又發明了一種類似Java的語言,語法依然是C/C++的風格,叫C#,念「C Sharp」。什麼含義?和樂理有關。C就是「C大調」那個C,表示某個音,C#就是比C高一個半音。C#發明者的想像力比上面三位都強多了,所以編程水平比較低,寫出來的東西愛藍屏。

還有一些有趣的例子:

Linux

Linux Is Not UniX,這就有點像GNU了,但是是否屬實就有待考證了。

PHP

原名Personal Home Page,剛開始是Rasmus Lerdorf為了維護個人網頁而開發的,後來功能強大了,改名為PHP: Hypertext Preprocessor,相應地含義也變成了超文本預處理器。

RPM

RPM Package Manager,原名是Red Hat Package Manager,一種用於網際網路下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有.RPM擴展名的文件。與Dpkg類似。

Wine

Wine Is Not an Emulator,是一個能夠在多種 POSIX-compliant 作業系統(諸如 Linux,Mac OSX 及 BSD 等)上運行 Windows 應用的兼容層。關於Wine的真正含義,有人對「Wine Is Not an Emulator」的說法表示質疑,認為」非模擬器「的解釋不過是一種娛樂性的說法,Wine的真實意思應當是是Windows Environment的縮寫,即WinE。

PNG

PNG’s Not GIF,一種圖像文件存儲格式,其設計目的是試圖替代GIF和TIFF文件格式,同時增加一些GIF文件格式所不具備的特性。PNG的名稱來源於「可移植網絡圖形格式(Portable Network Graphic Format,PNG)」,

EMACS

EMACS Makes A Computer Slow,其自我調侃的意味就太明顯了,大概也是對自己集成的強大的功能洋洋得意吧。

是不是挺有趣,儘管有的語言名字起的有點奇異,但聽起來確定很酷:D

編譯:洛逸

關鍵字: