程式語言名稱背後的有趣故事
摘要:你知道這些故事嗎?
- 原文: ofollow,noindex">How 13 programming languages got their names
- 譯文: 程式語言名稱背後的有趣故事
- 譯者: 劉欣
- 微信公眾號:碼農翻身
Fundebug經授權轉載,版權歸原作者所有。
軟體開發中最難的一項任務可能就是“命名”了,給類,變數,函式命名。
相比而言,當一個新的語言被創造出來,想一個好的名稱更不容易。
程式語言的名稱選擇通常有這麼幾種“公式”:
- 縮寫,用來描述這麼語言是做什麼的, 例如Basic (Beginners’ All-purpose Symbolic Instruction Code), COBOL, TCL , LISP等
- 從現有的語言派生而來,例如 C++, C#,CoffeScript
- 用大師的名字來命名, 例如Ada, Pascal, Turing
有時候,語言的創造者們在選擇名字的時候非常有創意,今天就來聊一聊13個不同尋常的程式語言名稱背後的故事。
1. Python
這是荷蘭人Guido van Rossum 於上世紀80年代末設計的一個語言,現在非常流行,Van Rossum 在起名的時候,想要一些“短的、獨特的、有點神祕色彩的”東西,他是英國著名戲劇團體Monty Python超級粉絲, 就從中找到了靈感,用Python命名了這門新語言。
其實Monty Python劇團有個著名的戲劇叫做Dead Parrot, 似乎沒有訊息說他想用這個名字來命名新語言。
2. Java
上世紀90年代初, Sun預感到智慧家居裝置(如互動TV)的浪潮即將來臨,他們開發了一個叫Oak的語言,但是Sun的律師確定這個名字的商標已經被註冊,他們只好選個新名字,經過一系列的會議,大家想了很多名字,經過律師的“過濾”,只剩下了三個Silk, DNA , Java。
不知道是誰第一個建議使用Java, 但是大家普遍認為靈感來自於Sun的工程師常去一個咖啡店:Pete’s Coffee,因為Java是印度尼西亞的爪哇島,那裡盛產咖啡。
3. Forth
Forth 是Charles Moore在上世紀60年代設計的一個古老語言, 當時他在一個家裝公司工作,公司給它提供了一臺IBM 1130 微型計算機,還帶著一個2250顯示卡,公司想讓他用電腦來設計地毯!
Moore最初想使用FORTRAN, 但這個語言沒法使用2250 顯示卡。他只好發明了一個新語言,叫做Fourth ,意思是第四代程式語言。 可是1130計算機要求檔名不能超過5個字元, 於是他只好把u給踢了出去,變成了Forth。
4. Perl
Perl 被譽為瑞士軍刀,功能強大而靈活,是由Larry Wall上世紀80年代發明的。Larry想要一個短的,有“內涵的”名稱,他曾經考慮了妻子的名字Gloria, 後來還是選擇了pearl(珍珠)。
悲催的是同名的語言已經存在了,於是他就把A去掉,最終變成了perl !
注意最初名稱是全小寫的,直到1993年 Perl4釋出的時候,才變成首字母大寫。
5. Lua
Lua 是巴西的一個大學所發明的,它基於兩個語言:DEL(Date Entry Language)和SOL(Simple Object Language)。 新語言把兩個語言的優點都結合了起來。
Sol在葡萄牙語中的意思是太陽, 那新的語言就叫做月亮: Lua。
6. Smalltalk
Smalltalk是一個面向物件的語言,由施樂帕洛•阿爾託研究中心發明,這門語言給Java,Python,Ruby等很多後來者帶來了巨大影響。
Alan Kay的小組發明了Smalltalk,正如他所說,這一名字的選取是針鋒相對於“印歐神靈理論”的,該理論中任何系統都會被賦予一個它們永遠無法企及的、類似於神靈的名字,例如宙斯(與天神同名)和索爾(與雷神同名)。相反地,他選擇了一個超級平淡無奇的名字,Smalltalk,以杜絕招致任何過高的期望值。
7. Logo
這是MIT開發的一個用於教育的一門語言,作為LISP的一個方言,可以用來教授很多的程式設計概念,它也影響了很多後來的致力於教育的程式語言,例如Scratch。
Logo程式設計時有個小海龜,可以根據使用者的指令來畫圖。
Logo來源於logos, 在希臘語中意思是“詞”或者“思想”, 這個名稱和那些面向數字的程式語言區分開了。
8. Ruby
Ruby 由日本人Yukihiro Matsumoto(“Matz”)開發,這是個面向物件的指令碼語言。
類似Perl , Matz想要一個寶石作為語言的名稱,經過和同事討論後,Coral和Ruby 被留在了最後的名單內。 Matz選擇了Ruby , 這是大有深意的,根據歐美“誕生石(Birthstone)”的傳統,每個星座都有誕生石。 其中7月的誕生石是ruby , 6月的是pearl (對應的語言就是Larry Wall發明的perl)。
Matz可不僅僅是想讓Ruby成為Perl的後繼,而是想替代它。
9. 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。
10 . Scala
Scala是個年輕的語言,2001年由Martin Odersky建立,這是一個既支援函數語言程式設計又支援面向物件程式設計的語言。 被編譯以後,它成為了Java位元組碼,在JVM中執行(之前,Scala可以被編譯成.NET的中間程式碼來執行)。
選擇Scala作為名稱有兩個原因: 首先它表示SCAlable LAN這兩個詞的組合,其次在義大利語中表示樓梯或者梯子,這就暗含著Scala要幫助你不斷上升,成為更好的程式語言。
11. Scratch
又是一個MIT開發的面向孩子的程式語言!
孩子們可以通過視覺化的形式來操作螢幕上的“精靈”, 從而創造一些故事,小電影,遊戲,音樂以及他們夢想創造的任何東西。
這個語言的名字來源於嘻哈音樂DJ,他們會通過手動旋轉和刮擦(scratching)唱機上的黑膠唱盤來創造新的聲音和音樂。
12. AWK
使用過Unix都會對AWK很熟悉,這是一個指令碼語言用來處理文字檔案, 1977當它被開發出來的時候主要是想做一個grep 工具的一個更加通用的版本。AWK對Larry Wall設計Perl產生了重要的影響。
和很多程式語言的名稱類似,AWK也是一種縮寫,但是這個縮寫不是表示語言能做什麼,相反,它是三個來自於貝爾實驗室的發明人的名稱: Alfred Aho, Peter Weinberger 和Brian Kernighan。
13. Groovy
2003年,一個叫James的Java程式員想要一個像Python 和Ruby 的指令碼語言, 但是要執行在JVM中。
他的解決方案就是設計一個新的語言,能夠動態地編譯成Java 位元組碼。用他自己的話來說: “我更期待一種(僅僅)建立在那些精妙的Java程式碼和JVM之上的動態語言(精妙-Groovy)。”
(完)
碼農翻身,用故事講解技術本質, 更多精彩文章,請移步《 碼農翻身三年文章精華 》
關於Fundebug
Fundebug專注於JavaScript、微信小程式、微信小遊戲、支付寶小程式、React Native、Node.js和Java實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了6億+錯誤事件,得到了Google、360、金山軟體等眾多知名使用者的認可。歡迎免費試用!