AI 告別炒作,Java 0 增長,2021 技術(shù)路在何方?

編譯 |李磊
平臺數(shù)據(jù)顯示并發(fā)編程同比增長8%,這不是一個很大的數(shù)字,但不要因為數(shù)字小就忽略它。Java是第一種被廣泛使用的支持并發(fā)的語言,在當(dāng)時的90年代中期,因為處理器內(nèi)存等硬件條件限制,多線程運行在當(dāng)時是一種奢侈,并發(fā)編程的條件并不充足。

去年,CSDN整理了O’Reilly關(guān)于2020年技術(shù)趨勢的解讀,其中關(guān)于Python、AI和云平臺的部分預(yù)測,在過去一年內(nèi)都得到了驗證。作為一個在線學(xué)習(xí)網(wǎng)站,O’Reilly每年都會對開發(fā)者需要注意和探索的趨勢進(jìn)行解析。在最新的2021年的技術(shù)趨勢報告中,有哪些新變化,又受新冠疫情影響,2020年在線學(xué)習(xí)的使用量處于穩(wěn)定增長,很多公司關(guān)閉了辦公室,要求員工在家遠(yuǎn)程辦公;線下教育也受到了沖擊,線上教育同比增長了96%,圖書的使用量增加了11%,教育視頻的使用量增加了24%。

疫情期間,不少公司急需在線業(yè)務(wù)的支持以維持生存,包括小型餐館和農(nóng)貿(mào)市場都增加了網(wǎng)上下單功能。在此之下,每個公司的開發(fā)部門成了一個非常重要的部門,為其業(yè)務(wù)提供各種技術(shù)支持。具體在技術(shù)、編程語言、工具框架層面,O’Reilly通過數(shù)據(jù)分析發(fā)現(xiàn):

Python使用量位列第一,并以27%的速度持續(xù)增長。

多重編程范式、并發(fā)編程、動態(tài)類型與靜態(tài)類型的融合、低代碼甚至無代碼工具的普及將成為未來的趨勢。

AI的內(nèi)容持續(xù)增長,機(jī)器學(xué)習(xí)增長了14%,人工智能增長了64%;數(shù)據(jù)科學(xué)增長了16%,統(tǒng)計數(shù)據(jù)增長了47%。

Web開發(fā)越來越成為程序員的專業(yè)領(lǐng)域,Ruby on Rails和Django表現(xiàn)出了非常強(qiáng)勁的增長,有關(guān)PHP的內(nèi)容使用量卻相對較低且在持續(xù)下降。

云相關(guān)的內(nèi)容增長了41%,微軟Azure的內(nèi)容增長了136%,Google Cloud增長了84%。許多公司已將重要的業(yè)務(wù)、關(guān)鍵軟件和數(shù)據(jù)轉(zhuǎn)移到云上,但未來還有很長的路要走。

Python位列第一,并持續(xù)增長

O'Reilly在線學(xué)習(xí)平臺上,使用量最高的幾種語言依次是Python(上升27%)、Java(下降3%)、C++(上升10%)、C(上升12%)和JavaScript(上升40%)。

2345截圖20200908083720.png

圖1.各編程語言使用量與增長情況

令人驚訝的是,JavaScript的使用量遠(yuǎn)遠(yuǎn)落后于Python和Java,僅僅是Python的20%和Java的33%。再往后看,我們發(fā)現(xiàn)Go語言和Rust語言也在以16%和94%的速率持續(xù)增長。

Go作為一門并發(fā)編程語言,顯然已經(jīng)確立了自己的地位。Rust的受歡迎程度也將繼續(xù)增長,因為其現(xiàn)有存量小,實現(xiàn)94%的增長并不困難,下一步,Rust可能會在“系統(tǒng)編程”確立自己的地位:構(gòu)建新的操作系統(tǒng)和用于云計算操作的工具。

因為一些編程語言的名稱或其框架里包含了另一個語言和工具,就像許多Java開發(fā)人員都使用Spring框架,搜索“Java”相關(guān)的關(guān)鍵詞時,往往會省略“Spring”。使用React、Angular和Node.js框架的JavaScript也是如此,而使用Python最常用的庫是PyTorch和scikit-learn。所以我們將有關(guān)Python、Java和JavaScript的相關(guān)語言都添加到前者的搜索結(jié)果中。

2345截圖20200908083720.png

圖2.編程語言和框架組合后的使用量情況

組合后的結(jié)果依然和前面相似,但在一些關(guān)鍵信息上有所區(qū)別。Spring語言7%的增長可以中和Java 7%的下降,實現(xiàn)零增長,雖然零增長的表示并不恰當(dāng),尤其是對已經(jīng)陷入困境的公司所擁有的語言來說。

如果在JavaScript的搜索結(jié)果中增加了最流行的框架:React、Angular和Node.js,那么O'Reilly中的JavaScript使用量將上升到Python的50%,僅略低于Java及其相關(guān)框架。將用戶頻繁使用的框架PyTorch和scikit-learn添加到Python中后,更是擴(kuò)大了Python的領(lǐng)先優(yōu)勢

建議

但對入門者來說,選擇一門優(yōu)秀且有潛力的編程語言至關(guān)重要。初學(xué)者如果選擇了一門排名靠后的小眾的編程語言,可能會出現(xiàn)各種麻煩。

因此我們不提倡初學(xué)者使用Python、Java之外過于小眾的語言。如果你在某種語言的使用上已經(jīng)很熟悉了,你可以換個新語言嘗嘗鮮,但不要把工作重心全部押在上面。

隨著潮流的變化和行業(yè)的發(fā)展,一些編程語言的使用量可能會上升或下降,但我們認(rèn)為Python、Java這些主流語言,在很長一段時間里都不會過時,放心選擇吧。

影響編程語言發(fā)展的4個關(guān)鍵因素

如果說語言之間的競賽沒那么重要,那什么才是影響編程語言發(fā)展的重要因素?我們總結(jié)出了這4點:

多重編程范式

去年以來,O'Reilly平臺上函數(shù)式編程的使用量增加了14%。但是,經(jīng)典功能語言Haskell和Erlang卻不在其中,兩者均未顯示有開發(fā)者大量使用情況,且兩者均下降(同比下降約20%)。面向?qū)ο缶幊痰脑鲩L甚至超過了函數(shù)式編程,自去年以來增長了29%。這表明真正的趨勢是,將函數(shù)特性集成到面向過程編程和面向?qū)ο缶幊痰恼Z言中。

從2008年的Python 3.0開始,到2014年的Java 8,編程語言持續(xù)增加了高階函數(shù)(lambda)和其他“函數(shù)”的功能,現(xiàn)在幾種流行的語言,包括JavaScript和Go語言從一開始就具有函數(shù)特性。這種趨勢最初于20年前的C++的標(biāo)準(zhǔn)模板庫出現(xiàn),我們希望它一直繼續(xù)下去。

并發(fā)編程

平臺數(shù)據(jù)顯示并發(fā)編程同比增長8%,這不是一個很大的數(shù)字,但不要因為數(shù)字小就忽略它。Java是第一種被廣泛使用的支持并發(fā)的語言,在當(dāng)時的90年代中期,因為處理器內(nèi)存等硬件條件限制,多線程運行在當(dāng)時是一種奢侈,并發(fā)編程的條件并不充足。

得益于摩爾定律帶來的硬件發(fā)展,情況已經(jīng)發(fā)生了巨大的改變,多線程運行越來越簡單,所以對并發(fā)編程的支持就像如對函數(shù)式編程的支持,已成為板上釘釘?shù)内厔荩珿o、Rust和大多數(shù)其他現(xiàn)代語言都內(nèi)置了對并發(fā)的支持,而這一直是Python的弱點之一。

動態(tài)類型與靜態(tài)類型

相比面向過程編程和面向?qū)ο缶幊讨g的區(qū)別,Ruby、JavaScript這類動態(tài)語言與Java、Go這類靜態(tài)語言之間的區(qū)別會更大。

曾幾何時,將靜態(tài)類型添加到動態(tài)語言的話題引起了不小的爭議,隨后,將各種類型范式進(jìn)行融合也一度「甚囂塵上」。作為動態(tài)語言之一的Python在3.5版本中添加了類型檢查功能,并且在之后的版本不斷增加靜態(tài)類型檢查的功能。TypeScript在JavaScript加入靜態(tài)類型后,也實現(xiàn)了每年12%的增長??梢姡瑒討B(tài)類型和靜態(tài)類型的融合也會在未來成為趨勢。

低代碼甚至無代碼

電子表格是低代碼計算的先驅(qū),首款電子表格辦公軟件VisiCalc在1979年發(fā)布,使數(shù)百萬人無需學(xué)習(xí)編程即可進(jìn)行復(fù)雜計算。平民大眾化是許多技術(shù)領(lǐng)域的重要趨勢,編程也同樣如此,低代碼或無代碼編程將毋庸置疑地改變編程的未來。

將來,一定會有新的語言和新的工具出現(xiàn),實現(xiàn)無代碼或低代碼的編程,它們極其簡單,可能會以任何方式出現(xiàn)(千萬別是BASIC這樣的),總會有程序員開發(fā)出這樣的編程工具。

可以預(yù)見的是,低代碼和無代碼帶來的強(qiáng)烈反差,會讓程序員一時難以接受,甚至視而不見。但更大眾化的低代碼,會將編程的能力交到更多人手上,這是一件好事。這種趨勢并不意味程序員會被「非程序員」淘汰,而是成為生產(chǎn)力更高的群體,成為編寫這些低代碼工具的人。

小結(jié)

鑒于我們已經(jīng)越來越接近摩爾定律的盡頭,并發(fā)對于編程的未來至關(guān)重要,我們不僅僅擁有更快的處理器,還將長期使用云服務(wù)器、微型服務(wù)器甚至功能本身就是服務(wù)器的系統(tǒng),它們天生就是并發(fā)系統(tǒng)。

函數(shù)式編程不能解決并發(fā)問題,但是一些確定的原則會讓我們少走彎路——每個人都喜歡一流的功能、軟件項目越來越大、系統(tǒng)會越來越復(fù)雜……因此對于編程語言來說,通過融合功能特性來擴(kuò)展自身具有重大意義。

無論您是技術(shù)leader還是新手程序員,都要注意這些正在發(fā)生的趨勢,它們將長久改變我們行業(yè)的面貌。

AI、機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)

盡管AI和機(jī)器學(xué)習(xí)是兩個截然不同的概念,但它們經(jīng)常被混淆,于是我們將機(jī)器學(xué)習(xí)定義為「AI的有效部分」。AI更注重科研和前瞻性,機(jī)器學(xué)習(xí)是將AI從實驗室中帶出來并付諸實踐的技術(shù)。如果你理解了這個定義,那么有關(guān)機(jī)器學(xué)習(xí)的內(nèi)容占使用量第一就很正常了:

2345截圖20200908083720.png

圖3.人工智能,機(jī)器學(xué)習(xí)和數(shù)據(jù)

相比去年,機(jī)器學(xué)習(xí)增長了14%,人工智能增長了64%;數(shù)據(jù)科學(xué)增長了16%,統(tǒng)計數(shù)據(jù)增長了47%,盡管有人說AI已經(jīng)停滯不前,但我們在數(shù)據(jù)中并未看到這一點。

自然語言領(lǐng)域在去年取得了驚人的進(jìn)步,增長了21%,例如OpenAI的GPT-3,引起了大家很大的關(guān)注。但類似于之前AlphaGo獲取圍棋勝利的新聞在減少,AI以及機(jī)器學(xué)習(xí)、數(shù)據(jù)科學(xué)等相關(guān)領(lǐng)域進(jìn)入了炒作的低谷,將當(dāng)前的研究具體應(yīng)用于商業(yè)產(chǎn)品上,還需要很多年的工作。

Web開發(fā)

自1990年代初期HTML發(fā)明,第一批Web服務(wù)器和第一代瀏覽器誕生以來,Web開發(fā)平臺在不斷地演變進(jìn)化。這些平臺使Web開發(fā)變得更加靈活:可以支持各種設(shè)備,支持各種屏幕尺寸,可以在瀏覽器中運行復(fù)雜的應(yīng)用程序。每到新的一年,之前的桌面應(yīng)用就會看起來很過時。

那么,Web框架的世界在過去一年具體發(fā)生了什么變化呢?

2345截圖20200908083720.png

圖4.Web開發(fā)使用量排行

如上圖所示,React在使用量上處于領(lǐng)先地位,同時呈現(xiàn)34%的顯著增長。盡管有傳言稱Angular正在逐漸消失,但它依然是排名第二的平臺,增長了10%。服務(wù)器端平臺Node.js的內(nèi)容使用量僅次于Angular,增長了15%,這些都還比較合理。

令人驚訝的是,Ruby on Rails因為其穩(wěn)定的性能表現(xiàn),相比往年同比增長了77%。與Rails同時期出現(xiàn)Django也呈現(xiàn)了63%顯著增長。

這些增長是否適用于所有舊平臺?并沒有。盡管幾乎80%的網(wǎng)站仍在使用PHP,但有關(guān)PHP的內(nèi)容使用量卻相對較低,且下降了8%,期待看到PHP 8如何改變這一局面。

萬維網(wǎng)的最初愿景是為每個人賦能,讓技術(shù)和信息普及,大眾無需成為技術(shù)極客,不需要學(xué)會編程,在瀏覽器中查看源代碼,只要在感興趣的地方點擊一下即可。

25年后,情況依然沒有改變,你仍然需要查看源代碼,依然會看到各種難以理解的JavaScript,Web開發(fā)越來越成為程序員的專業(yè)領(lǐng)域,其它語言也是如此,這真的很諷刺。新一代平臺或網(wǎng)絡(luò)結(jié)構(gòu)的出現(xiàn)是否會逆轉(zhuǎn)這種趨勢?我們拭目以待。

云服務(wù)

云服務(wù)在迅速增長已經(jīng)不是什么新鮮事了。自去年以來,云的關(guān)鍵詞使用量增長了41%,這還不包含特定供應(yīng)商例如Amazon Web Services、Microsoft Azure或Google Cloud,如果加上這些,增長率高達(dá)46%。

2345截圖20200908083720.png

圖7.云

領(lǐng)先的云供應(yīng)商AWS、Azure和Google Cloud之間的競爭愈演愈烈,AWS保持領(lǐng)先,甚至超過了「Cloud」這個詞,微軟和谷歌正在努力追趕,有關(guān)Azure的內(nèi)容顯示136%的增長,比任何其他競爭對手都快。Google Cloud 84%的增長也很不錯。隨著Azure和Google Cloud的快速增長,亞馬遜的主導(dǎo)地位可能即將不保。

微軟Azure強(qiáng)勢增長的背后,顯示著它在將自己改造成云計算公司方面做得非常出色。在過去的十年,微軟重新梳理了各條業(yè)務(wù)線的方方面面,并轉(zhuǎn)型成為了開源領(lǐng)域的領(lǐng)導(dǎo)者,同時擁有了GitHub和LinkedIn。沒有如此堅定而激進(jìn)的轉(zhuǎn)型動作,微軟永遠(yuǎn)不可能獲得Azure這樣的成功。

盡管大多數(shù)公司都在以各種方式使用云服務(wù),并且許多公司已經(jīng)將重要的業(yè)務(wù)、關(guān)鍵軟件和數(shù)據(jù)轉(zhuǎn)移到云上,但未來還有很長的路要走。

寫在最后

所謂趨勢不只是最新的流行動向,也是一個漫長的過程:容器化最早可以追溯到1979年的Unix 7,而Sun Microsystems早在1990年代就通過其工作站發(fā)明了云。

我們總是喜歡談?wù)?ldquo;互聯(lián)網(wǎng)時代”,認(rèn)為技術(shù)的發(fā)展日新月異,但是最重要的技術(shù)趨勢并不是幾個月或幾年就能形成的,而是橫跨了幾十年的時間,來到我們面前,甚至是在發(fā)明后不久就被大家遺忘,在漫長的歲月后被重新發(fā)掘,浮出水面,引領(lǐng)潮流。

帶著這個思考,讓我們往后退一步,重新觀察一下棋面:我們要如何利用AI所賦予的強(qiáng)大能力?并發(fā)對處理海量運算很重要,然后呢?摩爾定律即將走到盡頭,下一個突破點在哪里?開發(fā)者對計算機(jī)的操作從多對一變成了一對數(shù)千,自動化是否從一種選擇變成了一種必要?

毋庸置疑,人人都應(yīng)該學(xué)會編程,但這并不意味著每個人都要成為專業(yè)的程序員,而是每個人都可以有效地使用計算機(jī),這一定要通過編程來實現(xiàn)嗎?要知道,無代碼和低代碼的編程工具已經(jīng)開始進(jìn)入市場,使得用戶可以獨自構(gòu)建從業(yè)務(wù)——應(yīng)用——AI原型的所有內(nèi)容,這個趨勢甚至可以追溯到1950年代后期。

最后,還有一種可能就是,最重要的趨勢根本不存在于我們的數(shù)據(jù)和工具之中?,F(xiàn)有的法律對技術(shù)還沒有進(jìn)行監(jiān)管和規(guī)范,使得工具和數(shù)據(jù)很大程度上都是免費的,在未來幾年,法律法規(guī)將對技術(shù)起到重要作用,對隱私等問題會越來越重視,這也許是影響下一個趨勢的關(guān)鍵因素。

二十年前,我們建造了一個并不是真正想要的未來,今后我們面臨的問題也很簡單:我們想要建立什么樣的未來?

原文鏈接:

https://www.oreilly.com/radar/where-programming-ops-ai-and-the-cloud-are-headed-in-2021/有哪些值得我們關(guān)注的信息,不妨通過本文來一探究竟。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論