上個(gè)世紀(jì),數(shù)百種編程語言被發(fā)明出來,但是進(jìn)入21世紀(jì),當(dāng)我們都進(jìn)入互聯(lián)網(wǎng)時(shí)代時(shí),只剩那么寥寥幾個(gè)了。
如果你翻一下TIOBE得編程語言排行榜,就會(huì)發(fā)現(xiàn)20年來,上躥下跳的就是那幾張老面孔:C , Java, Python ,C++ , C#, JavaScript......
80年代后期,平均每個(gè)月就會(huì)出現(xiàn)一種新語言,現(xiàn)在,平均每年出現(xiàn)一個(gè)就不錯(cuò)了。
我有點(diǎn)好奇,就去扒了扒其他編程語言的出現(xiàn)時(shí)間,把他們分成了分為中生代、新生代和老年代。
先看中生代的家伙們,20多歲,30出頭,正是編程的中堅(jiān)力量。
Python : 1991
Visual Basic : 1991
PHP : 1995
Ruby : 1995
Java : 1995
JavaScript : 1995
C# : 2000
?。?995年還真是神奇的一年啊,幾位大佬同時(shí)誕生。)
再看這些老前輩,尤其是C語言,老而彌堅(jiān),屹立50年不倒,把系統(tǒng)級編程吃得死死的。
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
新生代只是它們想挑戰(zhàn)中生代的地位,搶班奪權(quán),希望渺茫。
主要有這么幾個(gè)原因:
1. 編程范型沒有變化
還是老三樣:面向過程,面向?qū)ο螅?函數(shù)式。
在馮諾依曼架構(gòu)下,恐怕也不會(huì)出現(xiàn)什么新的范型了吧。
現(xiàn)在TIOBE排行前十的中生代語言完美涵蓋了這些范型,例如Java,剛誕生的時(shí)候支持面向?qū)ο?,但是后來補(bǔ)上了函數(shù)式這一課。
像Python、JavaScript一開始就支持面向?qū)ο蠛秃瘮?shù)式編程。
2. 開發(fā)領(lǐng)域
開發(fā)領(lǐng)域有桌面開發(fā)、Web開發(fā)、系統(tǒng)級軟件開發(fā)、后端開發(fā),數(shù)據(jù)分析,人工智能等。
中生代的編程語言不但這些領(lǐng)域看得死死的,還互相擴(kuò)展,侵入對方的領(lǐng)地。
其中最典型的就是JavaScript這個(gè)屌絲的逆襲,一開始不過是寄居在瀏覽器中的一個(gè)小語言,后來通過V8, Node.js竟然進(jìn)入了后端,還用Electron蠶食桌面開發(fā)!
Python也是,本來用它寫點(diǎn)兒小工具,開發(fā)點(diǎn)兒小網(wǎng)站,后來竟然傍上了人工智能這個(gè)大款,從此發(fā)達(dá)了。
3. 生態(tài)系統(tǒng)
Java , Python, JavaScript,C , C#等經(jīng)過這么些年的發(fā)展,哪個(gè)不是積累了海量的類庫,哪一個(gè)沒有龐大的生態(tài)系統(tǒng)?想動(dòng)它們,沒有一場革命是絕對不行的。
新語言即使很好,但是看看那么多現(xiàn)有的代碼,誰敢輕易切換?
4. 時(shí)代的紅利
Java遇到了互聯(lián)網(wǎng),Python遇到了大數(shù)據(jù)和AI, JavaScript遇到了前端開發(fā), 時(shí)代的機(jī)遇讓它們爆炸式發(fā)展。
Go的運(yùn)氣不錯(cuò),遇到了云計(jì)算,強(qiáng)勢崛起。其他幾位想要出頭,那是相當(dāng)難了。
我曾經(jīng)悲觀地認(rèn)為:主流的編程語言已經(jīng)都被發(fā)明出來了!
以后新出現(xiàn)的語言都是改進(jìn),改良,沒法鬧革命翻身了。
舉個(gè)不恰當(dāng)?shù)谋扔鳎?C, Java, Python, JavaScript,C# , C++, PHP 就像現(xiàn)在的西方七國集團(tuán),牢牢占據(jù)著最大的市場,然后只要有新人冒出來,就會(huì)受到無情的打擊。就像現(xiàn)在中國想技術(shù)突破,被美國和西方不擇手段地打壓一樣。
但是也并不絕對,就像中國一定要向上突破一樣,我看到在系統(tǒng)編程領(lǐng)域,也有一個(gè)新星冉冉升起:Rust。
Rust雖然沒有發(fā)明新東西,但是卻融合了多種語言的特性和多種編程泛型,它不但包含了上面說的三大編程范式,還集結(jié)了泛型、底層內(nèi)存管理、所有權(quán)等特性,可以說是一個(gè)集大成者(這也恰恰是它學(xué)習(xí)曲線陡峭的原因)。
Rust是一門同時(shí)追求安全、并發(fā)和性能的現(xiàn)代系統(tǒng)級編程語言,有望挑戰(zhàn)C語言的地位。
當(dāng)然,編程語言少,對程序員來說是好事, 程序員可以少學(xué)一點(diǎn)東西,少掉幾根頭發(fā)。
全文完。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
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.