為什么會(huì)有這么多編程語言?
?為什么會(huì)有這么多編程語言?
編程語言如此豐富的今天,相信許多開發(fā)者都有過上面的疑問。不過早在 1960 年代初,人們就已經(jīng)提出了這個(gè)問題。
《ACM 通訊》期刊近日發(fā)表了題為《Why Are There So Many Programming Languages?》的文章,作者在文中指出了一個(gè)重要原因:公司基于商業(yè)利益的訴求,希望控制編程語言,所以會(huì)發(fā)明由自己主導(dǎo)的語言。
1990 年代中期,Visual Basic 和 Visual C++ 是微軟主力開發(fā)和維護(hù)的編程語言。這兩種語言都是從已有的編程語言衍生而來,Visual Basic 的優(yōu)勢(shì)是為 Windows 桌面平臺(tái)構(gòu)建前端應(yīng)用程序,但它缺乏許多高級(jí)語言功能(如數(shù)據(jù)結(jié)構(gòu)、線程)。Visual C++ 雖然幾乎可以處理所有問題,但它十分復(fù)雜。然后,Java 在 1996 年問世了,Java 是全功能的面向?qū)ο蟮木幊陶Z言,不像 C++ 那么復(fù)雜。
Java 的核心功能之一是平臺(tái)可移植性,但這不是微軟希望看到的,因此 Java 背后的公司 Sun Microsystems 與微軟產(chǎn)生了沖突,并且從 1997 年開始發(fā)起訴訟。雙方緊張的關(guān)系最終導(dǎo)致微軟在 2002 年發(fā)布了一門名為 C# 的編程語言,它看起來很像 Java,但事實(shí)上并不是。當(dāng)然兩者最重要的不同點(diǎn)在于,C# 是微軟可以在自家 Windows 平臺(tái)上控制的編程語言。
除了公司對(duì)于控制和財(cái)富的訴求,編程語言之所以如此多與當(dāng)時(shí)的技術(shù)環(huán)境和水平密切相關(guān)。現(xiàn)在許多看起來理所當(dāng)然的事情在過去并非如此,早期計(jì)算機(jī)的存儲(chǔ)、內(nèi)存和處理能力都是有限而昂貴的。人們不得不費(fèi)盡周折,只為到計(jì)算機(jī)實(shí)驗(yàn)室,通宵熬夜以獲得計(jì)算機(jī)使用時(shí)間。
在那個(gè)時(shí)代,編程語言通常是為某些任務(wù)或工作而設(shè)計(jì)的,編程語言的命名也更簡單 —— 因?yàn)槊臻g尚未被開發(fā)。在 1950 年代和 1960 年代,最初的程序可以 “奢侈地” 用其所作的事情精確命名:FORTRAN(公式翻譯器)、COBOL(面向商業(yè)的通用語言)、BASIC(初學(xué)者通用符號(hào)指令代碼)、ALGOL(算法語言)、LISP(列表處理器)。大多數(shù)人可能沒有聽說過 SNOBOL(面向字符串和符號(hào)語言,1962),但是通過名字稍微猜測(cè)就可以知道它的用途。如果那個(gè)時(shí)代對(duì)面向?qū)ο蟮木幊谈拍钣懈嗔私猓嘈艜?huì)有人使用 “OBJOL” 之類的名字命名 —— 明確命名為面向?qū)ο笳Z言,至少按照那時(shí)的命名模式會(huì)是這樣。
到了現(xiàn)在,更多的編程語言在許多方面都像是重新造輪子 —— 它們?cè)S多都是滿足下面屬性的多種組合:
- License
開源;商業(yè)
- 平臺(tái)
操作系統(tǒng)、硬件支持
- 語言范式
面向過程、函數(shù)式、面向?qū)ο蟮?/p>
- 類型系統(tǒng)
動(dòng)態(tài)、靜態(tài)等
- 并發(fā)
單線程、多線程
- 內(nèi)存管理
垃圾回收(自動(dòng)或手動(dòng))
- 執(zhí)行
解釋、編譯到虛擬機(jī)、原生編譯等
- ……?