XXX 語言是世界上最好語言
來自專欄 netkiller
XXX 語言是世界上最好語言
一個好的編譯器/解釋器決定一個語言的命運。
我們常常看到網上有人談論語言的好壞,引起社區口水戰,在這些話題中性能站了很大比例,很少人會去辯論語言的語法合理性,語言的設計缺陷。
語言的性能主要取決於一個好的編譯器/解釋器和一個開發包。
編輯器/解釋器
好的編譯器或解釋器取決於社區的規模,基金會影響力與企業資金投入。
例如 C/C++ 有組織制定標準,各種企業參與其中。
Java 語言的資金投入是空前的,從SUN時代到Oracle時代,幾乎所有大型企業都參與其中。
MS C++ / C# 僅憑微軟一家之力也佔據一席。
沒有實力的Boland Delpha,C++ ... 只能退出市場。
像 D 語言這種優秀的語言,一直沒有大企業支持,也很無奈。
2010年之後我們看到幾乎大型項目都出自基金會,最有名的當屬 Apache 基金會,民間社區項目時代終結。
鬆散的社區想設計開發性能優異編譯器與解釋器門檻太高。
Python 基金會每次要募集資金到位才能啟動項目,pypy解釋器開發了多年無法 release.
Perl 語言能挺到今天實則不易 Perl6 解釋器的設計非常坎坷。
動態語言只有 PHP 發展的比較好,原因是他背後至少有一個公司,有全職員工。另外雅虎/Facebook等企業的貢獻也是巨大。
node.js 只能依賴谷歌的V8引擎。
你要搞明白虛擬機是什麼
虛擬機出現降低了語言的開發難度。如果你留意一下會發現最近五年誕生很多新語言。
80%的Java開發者搞不清什麼虛擬機。這是因為JVM這個名字(Java 虛擬機),JVM 的設計之初是沒有考慮過讓VM運行其他語言的,有建議Oracle將「J」去掉變成「VM」 這樣更好理解。
VM就是虛擬機,VM通常設計與平台無關,與語言無關,除了JVM還有很多虛擬機例如LLVM, Parrot等等。
運行在JVM虛擬機上的語言有 Scala, Groovy, Python, PHP, Perl ...;Apple 公司主要使用 LLVM 有 clang, swift ;Parrot 的 Perl6 。
有了虛擬機技術,就很容易開發一個全新的語言,首先你要設計好語法,關鍵字,然後定製VM模板,將你的語法翻譯成VM的位元組碼,你的程序就可以運行。
這項工作至少需要用三年吧,你就能開發出一個新語言。不要高興太早這時你的語言啥也幹不了,因為只有 if,else,print,class,while ... 寫個helloworld 是沒有問題的。
一個好的語言還有一個好的開發包/庫,沒有開發包支持,語言啥也幹不了,想訪問mysql對不起不行,你還需要做很多工作例如Socket, 多線程,文件系統......。
開發庫/包
如上面所說,你開發了一門全新的語言,但是沒有一個好的開發包,那麼這個語言十分尷尬。
D語言就是這樣一個語言,他的設計是為了替代C++。但是沒有十分完善的開發包,只能靠社區提供。
我曾經迷戀過一段D語言,想用它做點東西,MySQL 訪問不了,社區的庫太舊並且沒有sable版本。
不是每個社區都有實力開發核心庫/包的,開發核心庫需要成百上千的人參與,至少短期開發不出來,所以很多語言都要以來其他庫。 例如 Scala 依賴 JDK. PHP 依賴glibc以及很多第三方C語言*-devel.rpm包。
GLIBC 是個奇蹟
JDK 是拿錢砸出來的還有微軟的 MFC
推薦閱讀:
※一晚上糊出一個語言「前端」
※理論上最好的編程語言: 讀寫省略篇
※Python 004-02:字元串
※世上最奇葩的6種編程語言,你知道幾種?
※C++ 11 輕鬆上手
TAG:編程語言 |