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