12 種編程語言的起源故事

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

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 onRails,可達到 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 官方博客


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章