上個世紀,數百種編程語言被發明出來,但是進入21世紀,當我們都進入互聯網時代時,只剩那么寥寥幾個了。
如果你翻一下TIOBE得編程語言排行榜,就會發現20年來,上躥下跳的就是那幾張老面孔:C , Java, Python ,C++ , C#, JavaScript......
80年代后期,平均每個月就會出現一種新語言,現在,平均每年出現一個就不錯了。
我有點好奇,就去扒了扒其他編程語言的出現時間,把他們分成了分為中生代、新生代和老年代。
先看中生代的家伙們,20多歲,30出頭,正是編程的中堅力量。
Python : 1991
Visual Basic : 1991
PHP : 1995
Ruby : 1995
Java : 1995
JavaScript : 1995
C# : 2000
(1995年還真是神奇的一年啊,幾位大佬同時誕生。)
再看這些老前輩,尤其是C語言,老而彌堅,屹立50年不倒,把系統級編程吃得死死的。
Lisp : 1958
COBOL : 1959
Pascal : 1970
C : 1972
Objective-C : 1984
C++ :1985
Object Pascal : 1986
新生代則活力無限, 鋒芒畢露,對老家伙們虎視眈眈。
Go : 2009
Rust : 2010
Kotlin : 2011
Elixir : 2011
Julia : 2012
TypeScript : 2012
Swift : 2014
新生代只是它們想挑戰中生代的地位,搶班奪權,希望渺茫。
主要有這么幾個原因:
1. 編程范型沒有變化
還是老三樣:面向過程,面向對象, 函數式。
在馮諾依曼架構下,恐怕也不會出現什么新的范型了吧。
現在TIOBE排行前十的中生代語言完美涵蓋了這些范型,例如Java,剛誕生的時候支持面向對象,但是后來補上了函數式這一課。
像Python、JavaScript一開始就支持面向對象和函數式編程。
2. 開發領域
開發領域有桌面開發、Web開發、系統級軟件開發、后端開發,數據分析,人工智能等。
中生代的編程語言不但這些領域看得死死的,還互相擴展,侵入對方的領地。
其中最典型的就是JavaScript這個屌絲的逆襲,一開始不過是寄居在瀏覽器中的一個小語言,后來通過V8, Node.js竟然進入了后端,還用Electron蠶食桌面開發!
Python也是,本來用它寫點兒小工具,開發點兒小網站,后來竟然傍上了人工智能這個大款,從此發達了。
3. 生態系統
Java , Python, JavaScript,C , C#等經過這么些年的發展,哪個不是積累了海量的類庫,哪一個沒有龐大的生態系統?想動它們,沒有一場革命是絕對不行的。
新語言即使很好,但是看看那么多現有的代碼,誰敢輕易切換?
4. 時代的紅利
Java遇到了互聯網,Python遇到了大數據和AI, JavaScript遇到了前端開發, 時代的機遇讓它們爆炸式發展。
Go的運氣不錯,遇到了云計算,強勢崛起。其他幾位想要出頭,那是相當難了。
我曾經悲觀地認為:主流的編程語言已經都被發明出來了!
以后新出現的語言都是改進,改良,沒法鬧革命翻身了。
舉個不恰當的比喻, C, Java, Python, JavaScript,C# , C++, PHP 就像現在的西方七國集團,牢牢占據著最大的市場,然后只要有新人冒出來,就會受到無情的打擊。就像現在中國想技術突破,被美國和西方不擇手段地打壓一樣。
但是也并不絕對,就像中國一定要向上突破一樣,我看到在系統編程領域,也有一個新星冉冉升起:Rust。
Rust雖然沒有發明新東西,但是卻融合了多種語言的特性和多種編程泛型,它不但包含了上面說的三大編程范式,還集結了泛型、底層內存管理、所有權等特性,可以說是一個集大成者(這也恰恰是它學習曲線陡峭的原因)。
Rust是一門同時追求安全、并發和性能的現代系統級編程語言,有望挑戰C語言的地位。
當然,編程語言少,對程序員來說是好事, 程序員可以少學一點東西,少掉幾根頭發。
全文完。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.