12 種程式語言的起源故事

OneAPM官方技術部落格發表於2016-05-19

過去的幾十年間,大量的程式語言被發明、被替換、被修改或組合在一起。每種語言總在爭論中誕生,又在進化中消亡。而這些語言的的創造者,無一不是程式設計世界中的標誌性人物,高舉探索的旗幟不斷前行。敬仰之情促使了這篇文章的誕生,這裡收集並分享了這五十年來最成功、最流行的十二門程式語言和它們的創造者的故事。

12 種程式語言的起源故事

1、Java 的起源

1990 年代初,任職於 Sun 公司的詹姆斯·高斯林等人開始開發 Java 語言的雛形,最初被命名為 Oak,目標設定在家用電器等小型系統的程式語言,應用在電視機、電話、鬧鐘、烤麵包機等家用電器的控制和通訊。由於這些智慧化家電的市場需求沒有預期的高, Sun 公司放棄了該項計劃。隨著 1990 年代網際網路的發展, Sun 公司看見 Oak 在網際網路上應用的前景,於是改造了 Oak,於1995年5月以 Java 的名稱正式釋出。Java 伴隨著網際網路的迅猛發展而發展,逐漸成為重要的網路程式語言。

與傳統型態不同, Sun 公司在推出 Java 時就將其作為開放的技術。全球數以萬計的 Java 開發公司被要求所設計的Java軟體必須相互相容。“Java語言靠群體的力量而非公司的力量”是 Sun 公司的口號之一,並獲得了廣大軟體開發商的認同。這與微軟公司所倡導的注重精英和封閉式的模式完全不同,此外,微軟公司後來推出了與之競爭的 .NET 平臺以及模仿 Java 的 C# 語言。後來 Sun 公司被甲骨文公司併購,Java 也隨之成為甲骨文公司的產品。

Java 的創造是為了完成 WORA(Write once, run anywhere 一次編寫到處執行)的理念,它的平臺獨立性使它在企業應用中獲得了巨大成功。到目前為止,它已經成為了最流行的一門應用程式程式語言,被廣泛應用於企業級Web應用開發和移動應用開發。

2、C++ 的起源

這個構思起源於 Stroustrup 做博士論文時的一些程式撰寫經驗。他發現 Simula 具備很利於大型軟體開發的特點,但 Simula 的執行速度太慢,無法對現實需求發揮功效;BCPL 雖快得多,但它過於低階的特性,使其不適於大型軟體的開發。當 Stroustrup 開始在貝爾實驗室工作時,他有分析 UNIX 核心關於分散式計算的問題。回想起他的博士論文經驗,Stroustrup 開始為 C 語言增強一些類似 Simula 的特點。之所以選擇 C,是因為它適於各種用途、快速和可移植性。除了 C 和 Simula 之外,同時也從其它語言中獲取靈感,如 ALGOL 68、Ada、CLU 以及 ML。剛開始時,類、派生類、儲存型別檢查、內聯和預設引數特性,都是通過 Cfront 引入 C 語言之中。1985 年 10 月出現了第一個商業化釋出。

1983 年,C with Classes 改命名為 C++。加入了新的特性,其中包括虛擬函式、函式名和運算子過載、參考、常數、使用者可控制的自由空間儲存區控制、改良的型別檢查,以及新的雙斜線(//)單行註解風格。1985年,釋出第一版《C++程式設計語言》,提供一個重點的語言參考,至此還不是官方標準。1989年,釋出了Release 2.0。引入了多重繼承、抽象類、靜態成員函式、常數成員函式,以及成員保護。1990年,出版了The Annotated C++ Reference Manual。這本書後來成為標準化的基礎。稍後還引入了模板、異常處理、名字空間、新的強制型別轉換,以及布林型別。

C++ 這個名字是 Rick Mascitti 於 1983 年中所建議的,並於 1983 年 12 月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為“new C”,之後是“C with Classes”。在電腦科學中,C++ 仍被稱為 C 語言的上層結構。它最後得名於 C 語言中的“++”操作符(其對變數的值進行遞增)。而且在共同的命名約定中,使用“+”以表示增強的程式。Stroustrup 說:“這個名字象徵著源自於C語言變化的自然演進”。C+ 是一個和 C/C++ 無關的早期程式語言。

3、ASP.NET 的起源

1997 年時,微軟開始針對 ASP 的缺點(尤其是義大利麵型的程式開發方法)準備開始一個新專案來開發,當時 ASP.NET 的主要領導人 Scott Guthrie 剛從杜克大學畢業,他和 IIS 團隊的 Mark Anders 經理一起合作兩個月,開發出了下一代 ASP 技術的原型,這個原型在 1997 年的聖誕節時被髮展出來,並給予一個名稱:XSP,這個原型產品使用的是 Java 語言。不過它馬上就被納入當時還在開發中的 CLR 平臺,Scott Guthrie事後也認為將這個技術移植到當時的 CLR 平臺,確實有很大的風險,但當時的 XSP 團隊卻是以 CLR 開發應用的第一個團隊。

為了將 XSP 移植到 CLR 中,XSP 團隊將 XSP 的核心程式全部以 C# 語言重新撰寫(在內部的專案代號是 "Project Cool",但是當時對公開場合是保密的),並且改名為 ASP+,作為 ASP 技術的後繼者,並且也會提供一個簡單的移轉方法給 ASP 開發人員。ASP+ Beta 版本以及應用在 PDC 2000 中亮相,由 Bill Gates 主講,由富士通公司展示使用 COBOL 語言撰寫 ASP+ 應用程式,並且宣佈它可以使用 Visual Basic .NET、C#、Perl、Nemerle 與 Python 語言來開發。

在 2000 年第二季時,微軟正式推動 .NET 策略,ASP+ 也順理成章的改名為 ASP.NET,經過四年的開發,第一個版本的 ASP.NET 在 2002 年 1 月 5 日亮相(和.NET Framework 1.0),Scott Guthrie 也成為ASP.NET的產品經理(到現在已經開發了數個微軟產品,像 ASP.NET AJAX 和 Microsoft Silverlight)。

4、PHP 的起源

PHP 原本的簡稱為 Personal Home Page,是拉斯姆斯·勒多夫為了要維護個人網頁,而用 C 語言開發的一些CGI 工具程式集,來替換原先使用的 Perl 程式。最初這些工具程式用來顯示拉斯姆斯·勒多夫的個人履歷,以及統計網頁流量。他將這些程式和一些窗體直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連線,產生簡單的動態網頁程式。拉斯姆斯·勒多夫在 1995 年 6 月 8 日將 PHP/FI 公開發布,希望可以通過社群來加速程式開發與查詢錯誤。這個釋出的版本命名為 PHP 2,已經有今日 PHP 的一些雛型,像是類似 Perl 的變數命名方式、窗體處理功能、以及嵌入到 HTML 中執行的能力。程式語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。

在 1997 年,任職於 Technion IIT 公司的兩個以色列程式設計師:Zeev Suraski 和 Andi Gutmans,重寫了PHP 的語法分析器,成為 PHP 3 的基礎,而 PHP 也在這個時候改稱為 PHP: Hypertext Preprocessor.。經過幾個月測試,開發團隊在 1997 年 11 月釋出了 PHP/FI 2,隨後就開始 PHP 3 的開放測試,最後在 1998 年 6 月正式釋出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 釋出後開始改寫 PHP 的核心,這個在 1999 年釋出的語法分析器稱為 Zend Engine,他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發。

在 2000 年 5 月 22 日,以 Zend Engine 1.0 為基礎的 PHP 4 正式釋出,2004 年 7 月 13 日則釋出了 PHP 5,PHP 5 則使用了第二代的 Zend Engine。PHP 包含了許多新特色,像是強化的物件導向功能、引入 PDO(PHP Data Objects,一個訪問資料庫的延伸庫)、以及許多效能上的增強。目前 PHP 4 已經不會繼續更新,以鼓勵使用者轉移到 PHP 5。

2008 年 PHP 5 成為了 PHP 唯一維護中的穩定版本。現在已經有超過 2000 萬個網站和 100 萬個Web伺服器使用了這門語言,Facebook、Wikipedia、Wordpress 以及 Joomla 這些網際網路巨頭都在使用它。

5、JavaScript 的起源

最初由 Netscape 的 Brendan Eich 設計。 是甲骨文公司的註冊商標。ECMA 國際以 為基礎制定了 ECMAScript 標準。 也可以用於其他場合,如伺服器端程式設計。完整的 實現包含三個部分:ECMAScript,文件物件模型,瀏覽器物件模型。

Netscape 在最初將其指令碼語言命名為 LiveScript,後來 Netscape 在與 Sun 合作之後將其改名為 。 最初受 Java 啟發而開始設計的,目的之一就是“看上去像 Java”,因此語法上有類似之處,一些名稱和命名規範也借自 Java。但 的主要設計原則源自 Self 和 Scheme。 與 Java 名稱上的近似,是當時 Netscape 為了營銷考慮與 Sun 微系統達成協議的結果。為了取得技術優勢,微軟推出了 JScript 來迎戰 的指令碼語言。為了互用性,Ecma 國際(前身為歐洲計算機制造商協會)建立了 ECMA-262 標準(ECMAScript)。兩者都屬於 ECMAScript 的實現。儘管 作為給非程式人員的指令碼語言,而非作為給程式人員的指令碼語言來推廣和宣傳,但是 具有非常豐富的特性。

6、「紅寶石」語言的起源

1993年,松本行弘開始 Ruby 語言的研發工作,試圖整合指令碼語言中最好的特點,基於 C 語言開發,但比 Perl 更強大,比 Python 更物件導向。1994 年,松本行弘獨立完成 Ruby 的第一個 Alpha 版,那年他才28歲。松本行弘把它取名 Ruby,也因這名字是一種美麗珍貴的紅寶石之意。Ruby 本身也極具魅力——這種解釋型指令碼語言,既有指令碼語言強大的字串處理能力和正規表示式,又不失解釋型語言的動態性。

此外,松本行弘還借鑑了 Perl 語言在文書處理方面的優勢,由 Ruby 編寫的程式不需事先編譯即可直接執行,因此利於實現開發過程中的快速反饋,極大地方便了程式的除錯。1995 年 Ruby 指令碼語言的第一個版本釋出後,因其大大提高了開發者的工作效率,讓程式設計更有樂趣,很快在日本非常流行。

1997 年開始,松本行弘在“株式會社 Network 應用通訊研究所”擔任特別研究員,專注於 Ruby 的開發。2000年,Dave Thomas 首次將這 Ruby 介紹到了英文社群,很快掀起了 Ruby 語言的熱潮。Ruby 的靈活特性給動態程式語言注入了新的活力,逐漸獲得全世界範圍的程式設計者的喜愛。

世界上沒有一種完美的語言,Ruby 也一樣。儘管 Ruby 很棒,但很多人還是覺得他的效能效率較低。不過好在後來開發者也通過一些擴充套件來彌補 Ruby 的瓶頸。2004年,丹麥人 David Heinemeier Hansson 用 Ruby 語言開發的一種 Web 框架 Ruby on Rails,可達到 J2EE 開發速度的 10 倍以上,被很多人視為“軟體開發的銀彈”,Ruby 開始在全球範圍內流行。

7、Scala 的起源

Scala 是一門多正規化的程式語言,一種類似 Java 的程式語言,設計初衷是實現可伸縮的語言、並整合物件導向程式設計和函數語言程式設計的各種特性。

2001 年,洛桑聯邦理工學院的馬丁·奧德斯基開始基於 Funnel 的工作開始設計 Scala。Funnel 是把函數語言程式設計思想和佩特里網相結合的一種程式語言。 奧德斯基之前工作於 Generic Java 和 javac。Java 平臺的Scala 於 2003 年底/ 2004 年初發布。.NET 平臺的 Scala 釋出於 2004 年 6 月。該語言第二個版本,v2.0,釋出於 2006 年 3 月。2009 年 4 月,Twitter 宣佈他們已經把大部分後端程式從 Ruby 遷移到Scala,其餘部分也打算要遷移。此外, Wattzon 已經公開宣稱,其整個平臺都已經是基於 Scala 基礎設施編寫的。

2014 年,馬丁·奧德斯基宣佈 Scala 2.12 將要簡化語法,推出 Scala "Don Giovanni" 專案的時候,表示:“Scala 現在是為聰明人創造的,以後也是為聰明人服務的。” 不同於 Python 讓程式設計師用一種方法做所有事情,Scala 提供一整套工具,讓程式設計師自由選擇,無論是 mutable 資料結構,immutable 資料結構,並行(parallel)資料結構。然後在這些選擇中,Scala 再針對他們進行演算法層面的特殊優化。Scala 相信程式設計師的聰明才智,讓程式設計師自行選擇合適的結構,以針對變化萬千的任務需求,這點是 Scala 做得好的地方。

8、Python 的起源

1989 年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的指令碼解釋程式,作為 ABC 語言的一種繼承。之所以選中 Python 作為程式的名字,是因為他是 BBC 電視劇——蒙提·派森的飛行馬戲團(Monty Python's Flying Circus)的愛好者。ABC 是由吉多參加設計的一種教學語言。就吉多本人看來,ABC 這種語言非常優美和強大,是專門為非專業程式設計師設計的。但是 ABC 語言並沒有成功,究其原因,吉多認為是非開放造成的。吉多決心在 Python 中避免這一錯誤,並獲取了非常好的效果,完美結合了 C 和其他一些語言。

就這樣,Python 在吉多手中誕生了。實際上,第一個實現是在 Mac 機上。可以說,Python 是從 ABC 發展起來,主要受到了 Modula-3(另一種相當優美且強大的語言,為小型團體所設計的)的影響。並且結合了 Unix shell 和C 的習慣。目前吉多仍然是 Python 的主要開發者,決定整個 Python 語言的發展方向。Python 社群經常稱呼他是仁慈的獨裁者(BDFL),意思是他仍然關注 Python 的開發程式,並在必要的時刻做出決定。

Python 的設計哲學是“優雅”、“明確”、“簡單”。Python 開發者的哲學是“用一種方法,最好是隻有一種方法來做一件事”。在設計 Python 語言時,如果面臨多種選擇,Python 開發者一般會拒絕花俏的語法,而選擇明確沒有或者很少有歧義的語法。這些準則被稱為“Python 格言”。

9、Go 的起源

Go,又稱 golang,是 Google 開發的一種靜態強型別、編譯型,併發型,並具有垃圾回收功能的程式語言。

羅伯特·格瑞史莫,羅勃·派克(Rob Pike)及肯·湯普遜於 2007 年 9 月開始設計 Go 語言,稍後 Ian Lance Taylor, Russ Cox 加入專案中。谷歌把 Go 作為一個 20% 專案開始研發,即讓員工抽出本職工作之外時間的 20%, 投入在該專案上。除了派克外,該專案的成員還有其他谷歌工程師也參與研發。對於開發這門語言的起因,派克說:我們之所以開發 Go,是因為過去 10 多年間軟體開發的難度令人沮喪。

Go 語言是基於 Inferno 作業系統所開發的。Go 語言於 2009 年 11 月正式宣佈推出,成為開放原始碼專案,並在 Linux 及 MacOS X 平臺上進行了實現,後追加 Windows 系統下的實現。2010 年 1 月 10 日,Go 語言摘得了 TIOBE 公佈的 2009 年年度大獎,該獎項授予在 2009 年市場份額增長最多的程式語言

10、Android 的起源

2003 年 10 月,安迪·魯賓(Andy Rubin)在美國建立了 Android 科技公司(Android Inc.),並與利奇·米納爾(Rich Miner)、尼克·席爾斯(Nick Sears)、克里斯·懷特(Chris White)共同發展這家公司。Android 系統最初由安迪·魯賓(Andy Rubin)等人開發製作,最初開發這個系統的目的是建立一個數位相機的先進作業系統,但是後來發現市場需求不夠大,加上智慧手機市場快速成長,於是 Android 被改造為一款面向智慧手機的作業系統。談到建立 Android 科技公司的原因,魯賓說:“聰明的移動裝置能更好的意識到使用者的愛好和要求。”儘管 Android 科技公司的創始人和員工過去都具有各自的科技成就,但是 Android 科技公司的經營只顯露出它在智慧手機軟體的方面,這時魯賓為 Android 科技公司花光所有錢。

2005 年 8 月 17 日,Google 低調收購了成立僅 22 個月的高科技企業 Android 及其團隊。安迪魯賓成為Google 公司工程部副總裁,繼續負責 Android 專案。2007 年 11 月 5 日,谷歌公司正式向外界展示了這款名為 Android 的作業系統,並且在這天谷歌宣佈建立一個全球性的聯盟組織,該組織由34家手機制造商、軟體開發商、電信運營商以及晶片製造商共同組成,並與 84 家硬體製造商、軟體開發商及電信營運商組成開放手持裝置聯盟(Open Handset Alliance)來共同研發改良 Android 系統。

2013 年 09 月 24 日谷歌開發的作業系統 Android 迎來了 5 歲生日,全世界採用這款系統的裝置數量已經達到 10 億臺。

11、Swift 的起源

2010 年 7 月,蘋果開發者工具部門總監克里斯·拉特納開始著手 Swift 程式語言的設計工作,以一年時間,完成基本架構後,他領導了一個設計團隊大力參與其中。Swift 大約歷經4年的開發期,2014 年 6 月發表。

蘋果宣稱 Swift 的特點是:快速、現代、安全、互動,而且明顯優於 Objective-C 語言。Swift 以 LLVM 編譯,可以使用現有的 Cocoa 和 Cocoa Touch 框架。Xcode Playgrounds 功能是 Swift 為蘋果開發工具帶來的最大創新,該功能提供強大的互動效果,能讓 Swift 原始碼在撰寫過程中能即時顯示出其執行結果。拉特納本人強調,Playgrounds 很大程度是受到佈雷特·維克多(Bret Victor)理念的啟發。

2015 年 6 月 8 日,蘋果於 WWDC 2015 上宣佈,Swift 將開放原始碼,包括編譯器和標準庫。

2015 年 12 月 3 日,蘋果宣佈開源 Swift,並支援 Linux,蘋果在新網站 swift.org 和託管網站 Github 上開源了 Swift,但蘋果的 app store 並不支援開源的 Swift,只支援蘋果官方的 Swift 版本,官方版本會在新網站 swift.org 上定期與開源版本同步。

12、Node.js 的起源

Node.js 由 Ryan Dahl 和一些其他的開發者於2009年在 Joyent 工作時發明。Node.js 在2009年初次釋出於Linux。 開發和維護工作由 Dahl 主持,其工作單位 Joyent 同時贊助這些工作。

Dahl 設計 Node.js 的靈感來自於 Flickr 上的一款上傳進度欄,瀏覽器並不清楚多少檔案內容已被上傳,除非向伺服器進行查詢。Dahl 於是設計了一個更簡便的方法。這個整合了 Google V8 JavaScript 引擎和一個底層 I/O API 的專案由 Dahl 在 inaugural European JSConf 向公眾進行展示。

Node.js 已經有數十萬模組,它們可以通過一個名為 npm 的管理器免費下載。

本文系 OneAPM 工程師整理呈現。OneAPM 能為您提供端到端的應用效能解決方案,我們支援所有常見的框架及應用伺服器,助您快速發現系統瓶頸,定位異常根本原因。分鐘級部署,即刻體驗,效能監控從來沒有如此簡單。想閱讀更多技術文章,請訪問 OneAPM 官方技術部落格

本文轉自 OneAPM 官方部落格

相關文章