為什么會(huì)有這么多編程語(yǔ)言?
?為什么會(huì)有這么多編程語(yǔ)言?
編程語(yǔ)言如此豐富的今天,相信許多開(kāi)發(fā)者都有過(guò)上面的疑問(wèn)。不過(guò)早在 1960 年代初,人們就已經(jīng)提出了這個(gè)問(wèn)題。
《ACM 通訊》期刊近日發(fā)表了題為《Why Are There So Many Programming Languages?》的文章,作者在文中指出了一個(gè)重要原因:公司基于商業(yè)利益的訴求,希望控制編程語(yǔ)言,所以會(huì)發(fā)明由自己主導(dǎo)的語(yǔ)言。
1990 年代中期,Visual Basic 和 Visual C++ 是微軟主力開(kāi)發(fā)和維護(hù)的編程語(yǔ)言。這兩種語(yǔ)言都是從已有的編程語(yǔ)言衍生而來(lái),Visual Basic 的優(yōu)勢(shì)是為 Windows 桌面平臺(tái)構(gòu)建前端應(yīng)用程序,但它缺乏許多高級(jí)語(yǔ)言功能(如數(shù)據(jù)結(jié)構(gòu)、線程)。Visual C++ 雖然幾乎可以處理所有問(wèn)題,但它十分復(fù)雜。然后,Java 在 1996 年問(wèn)世了,Java 是全功能的面向?qū)ο蟮木幊陶Z(yǔ)言,不像 C++ 那么復(fù)雜。
Java 的核心功能之一是平臺(tái)可移植性,但這不是微軟希望看到的,因此 Java 背后的公司 Sun Microsystems 與微軟產(chǎn)生了沖突,并且從 1997 年開(kāi)始發(fā)起訴訟。雙方緊張的關(guān)系最終導(dǎo)致微軟在 2002 年發(fā)布了一門名為 C# 的編程語(yǔ)言,它看起來(lái)很像 Java,但事實(shí)上并不是。當(dāng)然兩者最重要的不同點(diǎn)在于,C# 是微軟可以在自家 Windows 平臺(tái)上控制的編程語(yǔ)言。

除了公司對(duì)于控制和財(cái)富的訴求,編程語(yǔ)言之所以如此多與當(dāng)時(shí)的技術(shù)環(huán)境和水平密切相關(guān)?,F(xiàn)在許多看起來(lái)理所當(dāng)然的事情在過(guò)去并非如此,早期計(jì)算機(jī)的存儲(chǔ)、內(nèi)存和處理能力都是有限而昂貴的。人們不得不費(fèi)盡周折,只為到計(jì)算機(jī)實(shí)驗(yàn)室,通宵熬夜以獲得計(jì)算機(jī)使用時(shí)間。
在那個(gè)時(shí)代,編程語(yǔ)言通常是為某些任務(wù)或工作而設(shè)計(jì)的,編程語(yǔ)言的命名也更簡(jiǎn)單 —— 因?yàn)槊臻g尚未被開(kāi)發(fā)。在 1950 年代和 1960 年代,最初的程序可以 “奢侈地” 用其所作的事情精確命名:FORTRAN(公式翻譯器)、COBOL(面向商業(yè)的通用語(yǔ)言)、BASIC(初學(xué)者通用符號(hào)指令代碼)、ALGOL(算法語(yǔ)言)、LISP(列表處理器)。大多數(shù)人可能沒(méi)有聽(tīng)說(shuō)過(guò) SNOBOL(面向字符串和符號(hào)語(yǔ)言,1962),但是通過(guò)名字稍微猜測(cè)就可以知道它的用途。如果那個(gè)時(shí)代對(duì)面向?qū)ο蟮木幊谈拍钣懈嗔私?,相信?huì)有人使用 “OBJOL” 之類的名字命名 —— 明確命名為面向?qū)ο笳Z(yǔ)言,至少按照那時(shí)的命名模式會(huì)是這樣。
到了現(xiàn)在,更多的編程語(yǔ)言在許多方面都像是重新造輪子 —— 它們?cè)S多都是滿足下面屬性的多種組合:
- License
 
開(kāi)源;商業(yè)
- 平臺(tái)
 
操作系統(tǒng)、硬件支持
- 語(yǔ)言范式
 
面向過(guò)程、函數(shù)式、面向?qū)ο蟮?/p>
- 類型系統(tǒng)
 
動(dòng)態(tài)、靜態(tài)等
- 并發(fā)
 
單線程、多線程
- 內(nèi)存管理
 
垃圾回收(自動(dòng)或手動(dòng))
- 執(zhí)行
 
解釋、編譯到虛擬機(jī)、原生編譯等
- ……?
 















 
 
 








 
 
 
 