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

除了公司對于控制和財富的訴求,編程語言之所以如此多與當時的技術環境和水平密切相關。現在許多看起來理所當然的事情在過去并非如此,早期計算機的存儲、內存和處理能力都是有限而昂貴的。人們不得不費盡周折,只為到計算機實驗室,通宵熬夜以獲得計算機使用時間。
在那個時代,編程語言通常是為某些任務或工作而設計的,編程語言的命名也更簡單 —— 因為命名空間尚未被開發。在 1950 年代和 1960 年代,最初的程序可以 “奢侈地” 用其所作的事情精確命名:FORTRAN(公式翻譯器)、COBOL(面向商業的通用語言)、BASIC(初學者通用符號指令代碼)、ALGOL(算法語言)、LISP(列表處理器)。大多數人可能沒有聽說過 SNOBOL(面向字符串和符號語言,1962),但是通過名字稍微猜測就可以知道它的用途。如果那個時代對面向對象的編程概念有更多了解,相信會有人使用 “OBJOL” 之類的名字命名 —— 明確命名為面向對象語言,至少按照那時的命名模式會是這樣。
到了現在,更多的編程語言在許多方面都像是重新造輪子 —— 它們許多都是滿足下面屬性的多種組合:
- License
開源;商業
- 平臺
操作系統、硬件支持
- 語言范式
面向過程、函數式、面向對象等
- 類型系統
動態、靜態等
- 并發
單線程、多線程
- 內存管理
垃圾回收(自動或手動)
- 執行
解釋、編譯到虛擬機、原生編譯等
- ……?


























