2020年需要學(xué)習(xí)的十大按需編程語言
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)

編程語言大約有600多種。編程語言的需求和流行程度每年都在變化。另外,新的編程語言也具有吸引人的功能。
那么,應(yīng)該學(xué)習(xí)哪種編程語言?學(xué)習(xí)新的編程語言始終需要我們投入大量的時(shí)間和智力。如果是一位經(jīng)驗(yàn)豐富的開發(fā)人員,或者已經(jīng)知道幾種編程語言,則可以學(xué)習(xí)一種小眾的現(xiàn)代語言。
但是,如果打算在2020年開始編程生涯,或者想學(xué)習(xí)第一或第二種編程語言,那么最好學(xué)習(xí)一種主流的和成熟的編程語言。在這里,我將基于以下條件列出各種編程語言:
在軟件開發(fā)行業(yè)中已經(jīng)是主流并已牢固確立。
世界排名第一的著名編程語言排名網(wǎng)站。
受歡迎程度正在增加或穩(wěn)定,并且沒有急劇下降。
他們擁有大量的庫、框架和工具支持,并且擁有龐大的社區(qū)。
他們對工作市場有很高的薪水要求。
另外,我們總結(jié)了編程語言的歷史背景、關(guān)鍵功能和主要用例。
1. Python

當(dāng)Guido van Rossum在1990年代開發(fā)Python作為他的副項(xiàng)目時(shí),沒有人認(rèn)為這有一天會(huì)是最受歡迎的編程語言。考慮到所有公認(rèn)的排名和行業(yè)趨勢,我將Python視為整體上排名第一的編程語言。
Python的USP是其語言設(shè)計(jì)。它是高效的、優(yōu)雅的、簡單的且功能強(qiáng)大的。
Python與C / C ++具有一流的集成,可以無縫地將CPU繁重的任務(wù)卸載到C / C ++。
Python具有非?;钴S的社區(qū)支持。

而且,根據(jù)GitHub存儲庫的貢獻(xiàn),Python已超越Java,成為第二大最受歡迎的語言:

此外,StackOverflow開發(fā)人員調(diào)查還將Python排名為第二大最受歡迎的編程語言(第四大最受歡迎的技術(shù)):

另一個(gè)編程語言排名網(wǎng)站TIOBE在去年將Python排名第三,并獲得了可觀的增長:

根據(jù)GitHub Octoverse的說法,由于去年P(guān)ython增長了50%,因此Python仍然有機(jī)會(huì)在今年的排名中進(jìn)一步提高:

StackOverflow開發(fā)人員調(diào)查將Python列為第二受歡迎的編程語言:

大多數(shù)較舊的主流編程語言都具有穩(wěn)定或下降的吸引力。不過,Python在這里是個(gè)例外,并且在最近五年中呈上升趨勢,從Google趨勢可以明顯看出:

人才市場:

此外,StackOverflow開發(fā)人員調(diào)查還顯示,與其他主流編程語言相比,Python開發(fā)人員的薪水較高,而經(jīng)驗(yàn)卻相對較低:

主要用例:
數(shù)據(jù)科學(xué) 數(shù)據(jù)分析 人工智能,深度學(xué)習(xí) 企業(yè)應(yīng)用 Web開發(fā)

在第一次瀏覽器大戰(zhàn)中,Netscape?已分配布倫丹·艾希(Brendan Eich)?為其瀏覽器開發(fā)一種新的編程語言。布倫丹·艾希(Brendan Eich)僅用了10天的時(shí)間就開發(fā)出了最初的原型,剩下的就是歷史了。由于語言設(shè)計(jì)欠佳且缺乏功能,軟件開發(fā)人員常常在早期嘲笑JavaScript。
JavaScript是瀏覽器編程中無可爭議的王者。 感謝Node.js,JavaScript提供了事件驅(qū)動(dòng)的編程,特別適合I / O繁重的任務(wù)。 在過去的幾年中,JavaScript經(jīng)歷了大規(guī)模的現(xiàn)代化和大修,尤其是在2015年,2016年及以后。


資料來源:2019年StackOverflow開發(fā)人員調(diào)查
另一個(gè)編程語言流行網(wǎng)站PYPL將JavaScript排名為第三大流行編程語言:

資料來源:PYPL
編程語言流行網(wǎng)站TIOBE將JavaScript排名為第七大流行編程語言:

資料來源:TIOBE
根據(jù)StackOverflow開發(fā)人員調(diào)查,JavaScript也被列為最受歡迎的11種編程語言:

資料來源:2019年StackOverflow開發(fā)人員調(diào)查
JavaScript的趨勢相對穩(wěn)定,如Google趨勢所示:

資料來源:Google趨勢


資料來源:2019年StackOverflow開發(fā)人員調(diào)查
主要用例:
Web開發(fā)
后端開發(fā)
移動(dòng)應(yīng)用開發(fā)
無服務(wù)器計(jì)算
瀏覽器游戲開發(fā)

Java是迄今為止最具破壞性的編程語言之一。上世紀(jì)90年代,業(yè)務(wù)應(yīng)用程序主要是使用C ++開發(fā)的,它非常復(fù)雜且依賴于平臺。James Gosling和他在Sun的團(tuán)隊(duì)通過提供一種更簡單的,面向?qū)ο蟮?,解釋性編程語言(也支持多線程編程),降低了開發(fā)業(yè)務(wù)應(yīng)用程序的障礙。
Java提供了一種功能強(qiáng)大,功能豐富的多范例解釋型編程語言,具有適度的學(xué)習(xí)曲線和較高的開發(fā)人員生產(chǎn)力。
Java嚴(yán)格向后兼容,這是業(yè)務(wù)應(yīng)用程序的關(guān)鍵要求。
Java的運(yùn)行時(shí)JVM是軟件工程的杰作,也是業(yè)界最佳的虛擬機(jī)之一。

資料來源:TIOBE
在最近幾年中,Java的流行度有所下降,但是根據(jù)TIOBE的說法,它仍然是最流行的編程語言,如下所示:

資料來源:TIOBE

根據(jù)GitHub存儲庫的貢獻(xiàn),Java在2014–2018年期間排名第一,去年僅滑落至第三位:
資料來源:Octoverse
另一個(gè)流行的編程語言排名網(wǎng)站PYPL將Java排名為第二大最受歡迎的編程語言:

資料來源:PYPL
StackOverflow開發(fā)人員調(diào)查還將Java排名很高,并且僅被JavaScript和Python編程語言所取代:

資料來源:2019年StackOverflow開發(fā)人員調(diào)查
根據(jù)Google的趨勢,Java在過去五年中不斷失去吸引力:

資料來源:Google趨勢


資料來源:2019年StackOverflow開發(fā)人員調(diào)查
主要用例:
企業(yè)應(yīng)用開發(fā)
Android App開發(fā)
大數(shù)據(jù)
Web開發(fā)

Anders Hejlsberg在將C#擺脫Java的陰影并賦予自己的身份方面做得非常出色。
在Microsoft的支持下,已經(jīng)從事該行業(yè)20年,C#擁有大型的庫和框架生態(tài)系統(tǒng)。
像Java一樣,C#也與平臺無關(guān)(由于CLR),并且可以在Windows,Linux和移動(dòng)設(shè)備上運(yùn)行。

資料來源:TIOBE
此外,Octoverse已將C#列為GitHub存儲庫貢獻(xiàn)的第五種流行編程語言:

資料來源:Octoverse
StackOverflow開發(fā)人員調(diào)查已將C#列為第四受歡迎的語言(2019年第七受歡迎的技術(shù)):

資料來源:2019年StackOverflow開發(fā)人員調(diào)查
有趣的是,StackOverflow開發(fā)人員調(diào)查將C#列為最受歡迎的第十種編程語言(遠(yuǎn)高于Java):

資料來源:2019年StackOverflow開發(fā)人員調(diào)查
從Google的趨勢可以明顯看出,C#在過去的幾年中并未被大肆宣傳,如下所示:

資料來源:Google趨勢
人才市場:

關(guān)于StackOverflow開發(fā)人員的調(diào)查,就全球平均薪資而言,C#高于Java(盡管有更多經(jīng)驗(yàn)):

資料來源:2019年StackOverflow開發(fā)人員調(diào)查
服務(wù)器端編程
應(yīng)用程式開發(fā)
Web開發(fā)
游戲開發(fā)
Windows平臺軟件

在1960年代和1970年代,CPU的每個(gè)周期和每個(gè)字節(jié)的內(nèi)存都非常昂貴。貝爾實(shí)驗(yàn)室工程師Dennis Ritchie開發(fā)了一種過程通用編程語言,該語言在1969-1973年間直接編譯為機(jī)器語言。C編程提供對內(nèi)存的低級訪問,并提供對底層硬件的完全控制。
由于C提供了對內(nèi)存的低級訪問并編譯為Machine指令,因此它是最快,最強(qiáng)大的編程語言之一。
C完全控制了底層硬件。
C是“語言的編程語言”之一,即許多其他編程語言(如Ruby,PHP,Python)的編譯器都用C編寫。





資料來源:2019年StackOverflow開發(fā)人員調(diào)查
Google趨勢在過去五年中也顯示出C的相對穩(wěn)定趨勢。

資料來源:Google趨勢
人才市場:

StackOverflow開發(fā)人員調(diào)查顯示,與Java,Python等相比,C開發(fā)人員可以賺取平均工資,但需要更長的時(shí)間才能實(shí)現(xiàn)這一目標(biāo):

資料來源:2019年StackOverflow開發(fā)人員調(diào)查
主要用例:
系統(tǒng)編程
游戲開發(fā)
物聯(lián)網(wǎng)和實(shí)時(shí)系統(tǒng)
機(jī)器學(xué)習(xí),深度學(xué)習(xí)
嵌入式系統(tǒng)

Bjarne Stroustrup在1970年代曾與貝爾實(shí)驗(yàn)室的Dennis Ritchie(C的創(chuàng)建者)合作。受C影響很大,他首先創(chuàng)建了C ++作為C的擴(kuò)展,并添加了面向?qū)ο蟮墓δ?。隨著時(shí)間的流逝,C ++已經(jīng)發(fā)展成為一種多范例的通用編程語言。與C一樣,C ++也提供低級內(nèi)存訪問,并直接編譯為機(jī)器指令。
像Java一樣,C ++也在不斷進(jìn)行現(xiàn)代化,以適應(yīng)硬件或生態(tài)系統(tǒng)的變化。
C ++還可以完全控制基礎(chǔ)硬件,并且可以在每個(gè)平臺上運(yùn)行并利用各種硬件,無論是GPU,TPU,容器,云,移動(dòng)設(shè)備還是微控制器。
C ++速度極快,并在性能關(guān)鍵和資源受限的系統(tǒng)中大量使用。

資料來源:TIOBE
Octoverse在GitHub存儲庫貢獻(xiàn)方面將C ++排名為第六位:

資料來源:Octoverse
此外,2019年StackOverflow開發(fā)人員調(diào)查將C ++列為第9最受歡迎的技術(shù)(第6最受歡迎的語言):

資料來源:2019年StackOverflow開發(fā)人員調(diào)查
盡管C ++面臨著來自Rust或Go之類的現(xiàn)代編程語言的激烈競爭,但在過去五年中,它仍然引起了穩(wěn)定的關(guān)注:


資料來源:的確
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
系統(tǒng)編程
游戲開發(fā)
物聯(lián)網(wǎng)和實(shí)時(shí)系統(tǒng)
機(jī)器學(xué)習(xí),深度學(xué)習(xí)
嵌入式系統(tǒng),分布式系統(tǒng)

與Python一樣,PHP是90年代由單個(gè)開發(fā)人員作為輔助項(xiàng)目開發(fā)的另一種編程語言。軟件工程師Rasmus Lerdorf最初將PHP創(chuàng)建為一組用C編寫的通用網(wǎng)關(guān)接口二進(jìn)制文件,以創(chuàng)建動(dòng)態(tài)Web應(yīng)用程序。后來,更多的功能被添加到PHP產(chǎn)品中,并且有機(jī)地演變?yōu)槌墒斓木幊陶Z言。
PHP是高效的服務(wù)器端Web開發(fā)編程語言之一。
由于PHP在過去35年中一直用于Web開發(fā),因此市場上有許多成功且穩(wěn)定的PHP框架。
許多大型公司都在使用PHP(Facebook,Wordpress),這為其提供了出色的工具支持。
資料來源:TIOBE
根據(jù)GitHub存儲庫的貢獻(xiàn),Octoverse將PHP排名為第四大最受歡迎的編程語言:
資料來源:Octoverse
根據(jù)2019年StackOverflow開發(fā)人員調(diào)查,PHP是第五種最受歡迎的編程語言(第八種最受歡迎的技術(shù)):
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
盡管PHP仍然是使用最廣泛的編程語言之一,但從Google趨勢可以明顯看出,它的趨勢正在緩慢下降:
資料來源:Google趨勢
人才市場:
資料來源:的確
StackOverflow開發(fā)人員調(diào)查顯示,PHP是2019年收入最低的編程語言:
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
主要用例:
服務(wù)器端Web應(yīng)用程序開發(fā)
開發(fā)CMS系統(tǒng)
獨(dú)立的Web應(yīng)用程序開發(fā)。

Swift是也出現(xiàn)在我的列表中的僅有的兩種編程語言之一:“?現(xiàn)在可以學(xué)習(xí)的7大現(xiàn)代編程語言?”。由克里斯·拉特納(Chris Lattner)領(lǐng)導(dǎo)的一組蘋果工程師致力于開發(fā)一種新的Swift編程語言,主要用于在Mac和iOS平臺上替代Objective-C。
Swift的主要USP之一是其語言設(shè)計(jì)。憑借更簡潔的語法以及開發(fā)人員人體工程學(xué)的功能,它為Apple生態(tài)系統(tǒng)中的Objective-C提供了更高產(chǎn)且更好的替代方案。
Swift還提供了現(xiàn)代程序語言的功能:空安全。此外,它還提供了語法糖來避免“?厄運(yùn)金字塔”。
作為一種編譯語言,Swift正在像C ++一樣迅速發(fā)展。它還在系統(tǒng)編程和其他領(lǐng)域中越來越受歡迎。

資料來源:TIOBE
另一個(gè)流行的編程語言排名網(wǎng)站PYPL將Swift排名為第9大最受歡迎的編程語言:
資料來源:PYPL
StackOverflow開發(fā)人員調(diào)查將Swift排名為第15名最受歡迎的技術(shù)(第12名最受歡迎的編程語言):
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
Google的趨勢還表明,Swift的普及程度急劇上升:
資料來源:Google趨勢
人才市場:
資料來源:Indeed
StackOverflow開發(fā)人員調(diào)查還顯示,與Objective-C相比,Swift開發(fā)人員可以以相對較少的經(jīng)驗(yàn)獲得高薪:
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
主要用例:
iOS App開發(fā)
系統(tǒng)程式設(shè)計(jì)
客戶端開發(fā)(通過WebAssembly)
深度學(xué)習(xí)
物聯(lián)網(wǎng)

與Swift一樣,Go只是該列表中最近十年的第二種編程語言。同樣,像Swift一樣,Go是由科技巨頭創(chuàng)建的。
Go對并發(fā)具有語言級別的支持。它通過Goroutine(輕量級綠色線程)和Channel 提供基于CSP的消息傳遞并發(fā)。
Go的最大USP是其語言設(shè)計(jì)和簡單性。它成功地結(jié)合了Python的簡單性和生產(chǎn)力以及C的強(qiáng)大功能。
Go嵌入了Garbage Collector(盡管還不如JVM垃圾收集器成熟)。Go開發(fā)人員可以使用Java,Python的安全性來編寫系統(tǒng)程序。
資料來源:TIOBE
2019年StackOverflow開發(fā)人員調(diào)查還將Go排名為第13名最受歡迎的技術(shù)(第10名最受歡迎的編程語言):
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
根據(jù)Stackoverflow的調(diào)查,Go是最受歡迎的9種編程語言之一:
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
根據(jù)GitHub Octoverse的說法,Go還是增長最快的10種語言之一:
資料來源:Octoverse
Go的日益普及也反映在Google的趨勢中,這表明Go在過去五年中越來越受關(guān)注:
資料來源:Google趨勢
人才市場:
資料來源:Indeed
2019年StackOverflow開發(fā)人員調(diào)查顯示,Go是收入最高的編程語言之一:
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
主要用例:
系統(tǒng)編程
無服務(wù)器計(jì)算
商業(yè)應(yīng)用
云原生開發(fā)
物聯(lián)網(wǎng)

Ruby成功地結(jié)合了編程語言的一些最佳功能:動(dòng)態(tài)的,面向?qū)ο蟮模δ苄缘?,垃圾收集的和簡潔的?/span>
盡管Ruby本身并不是破壞性的,但其Web開發(fā)框架Ruby on Rails可能是最具破壞性和影響力的服務(wù)器端Web開發(fā)框架。
Ruby被Twitter,GitHub,Airbnb等一些最大的軟件項(xiàng)目所使用,并具有出色的工具和框架支持。
資料來源:TIOBE
在GitHub存儲庫貢獻(xiàn)中,Octoverse還將Ruby評為2019年最受歡迎的編程語言排名第10位:
資料來源:Octoverse
2019年StackOverflow開發(fā)人員調(diào)查將Ruby列為第9最受歡迎的編程語言(第12最受歡迎的技術(shù)):
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
近年來,Ruby并不是一門大肆宣傳的語言,但根據(jù)Google的發(fā)展趨勢,它一直保持著吸引力:
資料來源:Google趨勢
人才市場:
資料來源:Indeed
2019年StackOverflow開發(fā)人員調(diào)查還顯示,Ruby開發(fā)人員可以以相對較低的經(jīng)驗(yàn)獲得高薪:
資料來源:2019年StackOverflow開發(fā)人員調(diào)查
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會(huì)逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會(huì)請出群,謝謝理解~
