Md Kamaruzzaman InfoQ 1月5日
作者 | Md Kamaruzzaman
譯者 | 張健欣
策劃 | 蔡芳芳
2020 年是近代史上史無前例的一年。人類在過去一百年中都沒有經(jīng)歷過像 COVID-19 這樣的全球性大流行病。它影響了我們星球上所有的國家、部門和幾乎所有的個人。
好消息是我們馬上就會擁有疫苗,終于可以滿懷樂觀和希望迎接新的 2021 年。對于軟件開發(fā)行業(yè)來說,2020 年是意義重大的一年,在許多領(lǐng)域都取得了重大突破。COVID-19 顯著加快了數(shù)字化轉(zhuǎn)型,而且 2021 年的數(shù)字化轉(zhuǎn)型趨勢會更明顯。
一年以前,我寫了一篇文章來預(yù)測 2020 年的軟件開發(fā)趨勢:
在軟件開發(fā)行業(yè),一年幾乎就是一光年。我沒有更新舊帖子,而是創(chuàng)建了一個新的預(yù)測清單,預(yù)測 2021 年軟件開發(fā)行業(yè)的重要技術(shù)趨勢。
做預(yù)測是一項有風(fēng)險的任務(wù)。但是我會使用來自認(rèn)證來源的數(shù)據(jù)、圖表和事實(shí),根據(jù)過去來預(yù)測未來。如果你想要了解軟件行業(yè)在 2021 年有哪些變化,請閱讀本文。
在 COVID-19 期間,大部分行業(yè)遭受了沉重的打擊,盡管只有少數(shù)行業(yè)。云是朝陽行業(yè),在大流行期間,它實(shí)際上比以往任何時候都更強(qiáng)大。如果在云應(yīng)用方面存在任何疑問和不確定性,COVID-19 已經(jīng)消除了這一點(diǎn)。
像 Corona 這樣的全球性災(zāi)難表明,我們不僅需要云升級規(guī)模,也需要降低規(guī)模,例如,當(dāng)我們的服務(wù)需求顯著下降時。想想旅游和運(yùn)輸行業(yè),他們不得不維護(hù)昂貴的數(shù)據(jù)中心,盡管他們的市場下降了 90%。
Forrester 預(yù)測,全球公有云 IT 基礎(chǔ)設(shè)施將在 2021 年增長 35% 至 1200 億美元:
在公有云中,我們希望有一個集中的數(shù)據(jù)中心來提供數(shù)據(jù)和計算能力。但在許多場景中,我們有相反的需求,例如,數(shù)據(jù)和計算能力接近終端用戶。有些是非常低的延遲(5 到 20ms)、高帶寬、監(jiān)管原因、實(shí)時用例、智能且強(qiáng)大的終端設(shè)備等等。
雖然邊緣計算是一個老概念,并且我們已經(jīng)在內(nèi)容交付網(wǎng)絡(luò) (Content Delivery Network,CDN) 中使用邊緣計算,但近年來它正變得越來越流行。隨著互聯(lián)車輛(自動汽車、無人機(jī))、在線游戲、物聯(lián)網(wǎng)、智能設(shè)備和邊緣 AI/ML 的興起,邊緣計算將在 2021 年及以后成為一個巨大的市場。邊緣計算將在 2021 年成為關(guān)鍵的另一個原因是 5G 移動設(shè)備的興起。
2021 年,兩個行業(yè)集團(tuán)將爭奪邊緣計算的市場份額。其中一個集團(tuán)是公有云提供商,例如亞馬遜、微軟、谷歌,如下所述:
在這方面,亞馬遜是 AWS Snow family、AWS IoT Greengrass 等許多服務(wù)的領(lǐng)導(dǎo)者。微軟也提供 Azure Stack Edge、Azure Edge Zone 等邊緣計算服務(wù)。谷歌也使用 Google Anthos 將它的數(shù)據(jù)中心服務(wù)轉(zhuǎn)移到終端用戶。
另一個集團(tuán)是已經(jīng)具備邊緣基礎(chǔ)設(shè)施的行業(yè),例如電信公司、數(shù)據(jù)中心提供商、網(wǎng)絡(luò)提供商。如果它們能夠快速行動并利用它們的優(yōu)勢(例如,現(xiàn)有的基礎(chǔ)設(shè)施),他們就有機(jī)會在這方面發(fā)揮領(lǐng)導(dǎo)作用?;旌显铺峁┥?RedHat(IBM)憑借其混合云平臺 OpenShift 和 OpenStack 的參與,將成為這里的關(guān)鍵選手。最近,三星與 IBM 合作開發(fā)邊緣計算解決方案:
State of the Edge 是為邊緣計算制定開放標(biāo)準(zhǔn),使邊緣計算供應(yīng)商中立的倡議。最近 State of the Edge 成為了 Linux 基金會的一部分。與 CNCF 一樣,在 2021 年及以后,State of the Edge 也將獲得更多高光時刻。
請為 2021 年及以后邊緣計算領(lǐng)域的許多創(chuàng)新、融合、并肩戰(zhàn)斗和標(biāo)準(zhǔn)化做好準(zhǔn)備。
在公有云供應(yīng)商中,誰是領(lǐng)導(dǎo)者是毫無疑問的。在 2020 年第三季度,亞馬遜以 32% 的市場份額領(lǐng)跑公有云市場,如下所示:
微軟在其云產(chǎn)品方面表現(xiàn)強(qiáng)勁,在 2020 年實(shí)現(xiàn)了 48% 的年度增長。在 2020 年第三季度,微軟的市場份額為 19%,而它在 2019 年第三季度的市場份額為 17%。
目前,谷歌是第三大公有云提供商,在 2020 年第三季度的市場份額為 7%。
在 2021 年,亞馬遜和微軟將分別保持第一和第二的位置。然而,阿里巴巴將在 2021 年取代谷歌,因?yàn)樗?2020 年第三季度的市場份額為 6%,僅次于谷歌。
此外,多云倡議將在 2021 年獲得更大的發(fā)展勢頭。許多公司也轉(zhuǎn)向了多云策略。中情局(CIA)最近將其云合同授予了多個云供應(yīng)商而不是單個供應(yīng)商:
直到現(xiàn)在,亞馬遜還不愿意加入多云倡議來保護(hù)它的市場份額。但正如我們 10 年前在微軟身上看到的那樣,整個行業(yè)和社區(qū)比最大的單個公司更強(qiáng)大。最近,亞馬遜已經(jīng)悄然加入了多云倡議:
云原生計算基金會(Cloud Native Computing Foundation ,CNCF) 在多云運(yùn)動中扮演著關(guān)鍵角色,可以說已經(jīng)超過了 Linux 基金會。在 2021 年,我們可以看到 CNCF 有更多增長。此外,像 HashiCorp 這樣的多云服務(wù)供應(yīng)商會變得更加重要。
一些突出的項目也提供了與流行的特定供應(yīng)商的云服務(wù)的 API 兼容性,例如 MinIO(提供兼容 AWS S3 的對象存儲)。在 2021 年,將會有更多類似 MinIO 的倡議,這樣我們就可以輕松地切換受歡迎的供應(yīng)商的服務(wù)。
這對整個行業(yè)來說是個好消息,正如我夢想的那樣,公司可以在多個云上無縫部署它們的應(yīng)用程序。
容器化是云原生 IT 的核心技術(shù),無論是公有云、私有云,甚至是邊緣計算。幾年來,Kubernetes 已經(jīng)成為領(lǐng)先的容器編排和管理技術(shù)。就像 Linux 之前統(tǒng)治著數(shù)據(jù)中心一樣,Kubernetes 也統(tǒng)治著公有云和私有云。起初,谷歌是 Kubernetes 背后的主導(dǎo)力量,但是現(xiàn)在幾乎所有的巨頭科技公司都支持 Kubernetes。
所有主要的公有云提供商現(xiàn)在都提供托管的 Kubernets 服務(wù)(Amazon EKS、Azure AKS、Google GKE)以及它們的托管容器化服務(wù)。另一方面,RedHat 正在使用 OpenShift 在私有云中提供托管的 Kubernetes 服務(wù)。
在 2021 年,我們將看到更多對 Kubernetes 的采用,因?yàn)樗腔旌显苹蚨嘣茟?zhàn)略的核心組件。非傳統(tǒng)企業(yè)應(yīng)用程序,如 AI/ML、數(shù)據(jù)庫、數(shù)據(jù)平臺、無服務(wù)器和邊緣計算應(yīng)用程序也將轉(zhuǎn)移到 Kubernetes。
另一方面,Docker 正在慢慢失去它作為一種現(xiàn)代化技術(shù)的魅力。已經(jīng)有一些倡議來標(biāo)準(zhǔn)化容器格式和運(yùn)行時,其中兩個在最近幾年得到了巨大的推動。一方面是 Kubernetes 引領(lǐng)的容器運(yùn)行時接口(Container Runtime Interface,CRI)。另一方面是 Linux 基金會引領(lǐng)的開放容器倡議(Open Container Initiative,OCI)。
最近,Kubernetes 棄用 Docker 而支持 CRI,并計劃在 2021 年的后續(xù) Kubernetes 版本(1.22)中完全移除 Docker:
由于 Kubernetes 是容器生態(tài)系統(tǒng)中的巨頭,2021 年將會是 Docker 終結(jié)的開始。從好的方面看,CRI 和 OCI 在 2021 年會獲得更大的發(fā)展勢頭,尤其是基于 CRI 的容器將在 2021 年獲得巨大的爆發(fā)式增長。
量子計算是這個清單上最具革命性的技術(shù)。就像數(shù)字計算機(jī)一樣,它有潛力影響每一個領(lǐng)域。我已經(jīng)創(chuàng)建了一份 2030 年代最熱技術(shù)的清單,而量子計算排名第一:
換個角度看:如果我們把當(dāng)今最先進(jìn)的超級計算機(jī)當(dāng)作正常人類,例如,一名象棋選手或者一個 8 年級數(shù)學(xué)學(xué)生,那么量子計算就是像馬格努斯·卡爾斯(Magnus Carles)這樣的超級天才,他可以同時和 50 名普通象棋選手對弈,或者像歐拉(Euler)這樣的天才數(shù)學(xué)家。
在 2020 年,量子計算有了一些重大的突破和進(jìn)步。在 2020 年 6 月,霍尼韋爾(Honeywell)聲稱其創(chuàng)建了最強(qiáng)大的量子計算機(jī),打破了谷歌之前創(chuàng)造的記錄:
許多政府和科技巨頭都在探索和投資量子計算。谷歌和 IBM 是這個領(lǐng)域的兩個最大的選手。谷歌甚至推出了一個開源庫 TensorFlow Quantum (TFQ),用于制作量子機(jī)器學(xué)習(xí)模型的原型:
亞馬遜也通過其 Amazon Braket 云服務(wù)提供托管的量子計算服務(wù)。
考慮到其巨大的利潤和無限的可能性,2021 年計算機(jī)量子將有一些突破和驚人的發(fā)現(xiàn)。
如果你想要探索量子計算,那么你可以使用開源 SDK qiskit,它還提供了免費(fèi)課程:
區(qū)塊鏈 (分布式賬本) 也是近年來開發(fā)的主要顛覆性技術(shù)之一。就技術(shù)而言,它有改變整個行業(yè)的潛力。雖然加密貨幣在普及這項技術(shù)方面發(fā)揮了重要作用。它在推動這項技術(shù)走向 Gartner 的炒作周期曲線(Gartner’s Hype Cycle curve)的“期望膨脹期”方面也扮演了主要角色。
許多流氓實(shí)體利用比特幣 Bitcoin 的流行,制造詐騙項目來欺騙那些想在短時間內(nèi)暴富的普通人。現(xiàn)在,區(qū)塊鏈正經(jīng)歷炒作周期曲線的“幻滅低谷”。另外,政府正在干預(yù)加密貨幣來防止詐騙。最近,中國政府查獲了一個加密貨幣詐騙“Plus Token 龐氏騙局”:
Facebook 在 2019 年發(fā)布了它的加密貨幣 Libra,但在 2020 年面臨巨大的監(jiān)管壓力:
其它開源區(qū)塊鏈,如以太坊(Ethereum),正在將代碼放入?yún)^(qū)塊中,使它能夠用于智能合約,這是區(qū)塊鏈的未來。
在 2021 年,區(qū)塊鏈將更多地作為一種智能合約機(jī)制使用,有望進(jìn)入“啟蒙斜坡(Slope of Englishtenment)”階段。區(qū)塊鏈將在 2021 年獲得重大爆發(fā),中國已經(jīng)將它納入其雄心勃勃的 50 萬億“新基建”計劃:
作為近來最熱門的技術(shù)之一,人工智能在 2020 年也取得了許多突破。另一個有意思的趨勢是,人工智能開始以“全民 AI(AI for all)”的口號進(jìn)入所有領(lǐng)域。
在自然語言處理領(lǐng)域,GPT-3 是 2020 年 5 月取得的最大的突破。美國公司 OpenAI 創(chuàng)建了 GPT-3,使得使用深度學(xué)習(xí)創(chuàng)建類似人類的文本成為可能。僅僅過了 4 個月,當(dāng)《衛(wèi)報》用 GPT-3 撰寫了以下文章時,全世界都一起為之震驚:
在 2021 年,自然語言處理將取得突破性進(jìn)展,人工智能將撰寫文章或編寫小型應(yīng)用程序。
另一個有趣的發(fā)展是 AutoML 2.0,它支持工程自動化。在 2021 年,全周期人工智能自動化將取得重大進(jìn)展,人工智能將更加平民化。
人工智能并不是沒有偏見的,有道德的人工智能正變得越來越有吸引力。人工智能領(lǐng)域的另一個主要趨勢是可解釋的人工智能,即人工智能為什么做出某種決定需要一個解釋。在 2021 年,隨著歐盟對解釋人工智能的決定制定法規(guī),這些領(lǐng)域?qū)⑷〉弥卮筮M(jìn)展。
人工智能在 2021 年及以后也將在航空業(yè)得到廣泛應(yīng)用。就在幾天前,美國空軍用人工智能作為副駕駛來駕駛了一架飛機(jī):
人工智能也將成為未來中國數(shù)字基礎(chǔ)設(shè)施的核心:
預(yù)計到 2021 年,人工智能會有許多令人振奮的創(chuàng)新和平民化。
谷歌和 Facebook 是深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)領(lǐng)域的兩大主導(dǎo)者。谷歌的主要業(yè)務(wù)是搜索能力,它是自然語言處理領(lǐng)域的領(lǐng)先創(chuàng)新者。Facebook 的主要業(yè)務(wù)是社交網(wǎng)絡(luò),它必須處理圖像、視頻和文本。在圖像處理領(lǐng)域,F(xiàn)acebook 是技術(shù)領(lǐng)導(dǎo)者,有許多創(chuàng)新。
出自谷歌的 TensorFlow 是深度學(xué)習(xí)領(lǐng)域的領(lǐng)先的庫,但是 2016 年 Facebook 發(fā)布了 PyTorch 后一切都發(fā)生了變化。PyTorch 使用動態(tài)圖而不是(TensorFlow 使用的)靜態(tài)圖,并且對 Python 更加友好。作為回應(yīng),谷歌在 2019 年創(chuàng)建了 TensorFlow 2.0,復(fù)制了 PyTorch 的很多功能(動態(tài)圖、對 Python 友好)。它還與谷歌的 Collab 完美結(jié)合(Collab 是一款非?,F(xiàn)代且功能強(qiáng)大的筆記本)。從那時起,谷歌的 TensorFlow 2.0 就越來越受歡迎。目前,根據(jù) Stack Overflow 開發(fā)者調(diào)研 2020,TensorFlow 是最流行的深度學(xué)習(xí)框架:
另一方面,開發(fā)人員喜歡用 PyTorch 工作,它以更好的開發(fā)人員工效學(xué)而更受開發(fā)人員的喜愛:
在 2021 年,TensorFlow 2.0 和 PyTorch 將成為企業(yè)和社區(qū)的“首選”庫。擁有 TensorFlow 代碼庫或者想要使用 Collab 筆記本的企業(yè)應(yīng)該使用 TensorFlow 2.0。剛進(jìn)入深度學(xué)習(xí)或者想要繼續(xù)使用 Juypter 筆記本的企業(yè)或個人應(yīng)該選擇 PyTorch。
現(xiàn)代數(shù)據(jù)庫的前景充滿選擇和廣泛的變化。我們有經(jīng)典的 SQL 數(shù)據(jù)庫,主要是四大數(shù)據(jù)庫:MySQL、 Oracle、 MS-SQL、 PostgreSQL。我們也有 NoSQL 數(shù)據(jù)庫,主要由一系列數(shù)據(jù)庫組成:文檔、鍵值對、寬列、時間序列、搜索、圖。還有許多其它類型的數(shù)據(jù)存儲。
我們最近看到了所謂的全球分布式 ACID 事務(wù)數(shù)據(jù)庫或者 NewSQL 數(shù)據(jù)庫。谷歌憑借 Google Spanner 成為這個領(lǐng)域的領(lǐng)導(dǎo)者,Google Spanner 是首個水平讀 / 寫可伸縮的 ACID 兼容數(shù)據(jù)庫。亞馬遜也有一個水平可擴(kuò)展 ACID 兼容數(shù)據(jù)庫,Amazon Aurora,提供幾乎所有的 SQL 功能,但沒有水平寫入伸縮。除了超大規(guī)模云提供商之外,CockroachDB 也是一個非常突出的 NewSQL 或分布式 SQL 數(shù)據(jù)庫。
在 2021 年,數(shù)據(jù)存儲生態(tài)系統(tǒng)將保持現(xiàn)在的樣子,有很多選擇。沒有一種數(shù)據(jù)庫可以滿足所有的目的。在 2021 年,選擇正確的數(shù)據(jù)也將是一個非常具有挑戰(zhàn)性的任務(wù),需要仔細(xì)考慮。
許多流行的數(shù)據(jù)庫已經(jīng)修改了它們的許可 (MongoDB、 Cassandra、 Redis、Kafka),因?yàn)槌壱?guī)模的云提供商,尤其是亞馬遜,濫用了它們的創(chuàng)新,賺了錢卻沒有回報。這一趨勢在 2021 年將繼續(xù),其它初創(chuàng)公司或創(chuàng)新型公司將使用更嚴(yán)格的許可來保護(hù)他們免受云提供商的掠奪。
就在幾年前,Hadoop 還是數(shù)據(jù)密集型計算或分布式批處理任務(wù)的默認(rèn)選擇。Apache Spark 目前是供應(yīng)商中立的分布式批處理任務(wù)平臺的首選,在大多數(shù)情況下幾乎取代了 Hadoop。
這一趨勢將在 2021 年繼續(xù),Spark 將被用作數(shù)據(jù)密集型計算的首選平臺。Spark 是一個基于 JVM 的系統(tǒng),需要非常大的資源,你將得到一份巨大的云賬單。但不幸的是,目前還沒有一個資源節(jié)約型的框架能匹配 Spark 的能力和成熟度。
所有主流的云提供商都有它們自己的云原生解決方案來進(jìn)行數(shù)據(jù)密集型計算。我的個人建議是在 2021 年使用 Spark 而不是特定的云解決方案,以避免供應(yīng)商鎖定。
近年來,隨著企業(yè)拋棄傳統(tǒng)的 Lambda 架構(gòu),轉(zhuǎn)而使用實(shí)時流處理框架,實(shí)時流處理正變得越來越流行。
此外,這里存在兩種類型的框架。一種是以 Spark Streaming 為核心的基于微批量的平臺。另一種是以 Apache Flink 為核心的低延遲流處理平臺。
Apache Flink 在需要實(shí)時流處理(欺詐檢測、異常檢測、基于規(guī)則的警報、實(shí)時數(shù)據(jù)即時分析)的場景中超越了 Spark 流處理。
所有超大規(guī)模云提供商也提供了它們自己的解決方案。我建議在 2021 年選擇 Flink,而不是 Spark 或者專有云解決方案,因?yàn)樗趯?shí)時流處理方面具有無與倫比的能力。
現(xiàn)代數(shù)據(jù)架構(gòu)相當(dāng)復(fù)雜。它包含數(shù)據(jù)源、ETL 管道、數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)據(jù)分析工具以及許多其它組件。下面是企業(yè)數(shù)據(jù)平臺(ABM AMRO 的數(shù)據(jù)平臺)的一個示例:
Snowflake 通過提供一個集中的數(shù)據(jù)源、單平臺,以及在它上面構(gòu)建許多不同的工作負(fù)載,從而徹底改變了現(xiàn)代數(shù)據(jù)架構(gòu)。在經(jīng)典架構(gòu)中,數(shù)據(jù)需要在不同的平臺上轉(zhuǎn)移,但在 Snowflake 中只有一個數(shù)據(jù)的“信源”。
這不是適用于所有情況的完美案例。但是對于大部分情況,這將普及并賦能數(shù)據(jù)平臺和數(shù)據(jù)倉庫。正如甲骨文的 CEO 拉里·埃里森(Larry Ellison)所說,它已經(jīng)動搖了數(shù)據(jù)倉庫市場:
在 2021 年,我預(yù)期更多的創(chuàng)新將為企業(yè)案例帶來像 Snowflake 一樣的單數(shù)據(jù)平臺。這對于許多公司將是一個巨大的幫助并改變游戲規(guī)則。
快速的數(shù)字化轉(zhuǎn)型正創(chuàng)造巨大的軟件工程師供需缺口。盡管越來越多的新工程師加入這個行業(yè),但仍然不夠。近年來,低代碼 / 無代碼倡議的勢頭正越來越強(qiáng)勁。
市場上有許多低代碼 / 無代碼平臺,主要是在 Web 開發(fā)領(lǐng)域,例如 Bubble。它們的成功也為 LCNC 在其它領(lǐng)域的開發(fā)鋪平了道路:無代碼應(yīng)用程序開發(fā)、無代碼人工智能、無代碼機(jī)器學(xué)習(xí)。LCNC 工具可以通過如下所述的好主意促進(jìn)業(yè)務(wù)或人員的發(fā)展:
而且,正如我去年預(yù)測的一樣,公有云提供商正提供 LCNC 服務(wù)。微軟提供 Power Apps,谷歌提供 AppSheet,AWS 提供 Honeycode 作為一個 LCNC 平臺來快速構(gòu)建應(yīng)用程序。
在 2021 年,LCNC 將成為激烈競爭的領(lǐng)域之一,有許多創(chuàng)新、合并和收購。如果你是一個擁有偉大想法的個人或企業(yè),請關(guān)注 2021 年的 LCNC。
近年來,微服務(wù)架構(gòu)成為大型企業(yè)應(yīng)用程序開發(fā)的首選。然而,設(shè)計微服務(wù)應(yīng)用程序比設(shè)計“一刀切”單體應(yīng)用程序要復(fù)雜得多。微服務(wù)架構(gòu)需要一組最佳實(shí)踐,正如我在下面這篇文章中所列出的:
像其它軟件架構(gòu)一樣,微服務(wù)也有它擅長的用例和失敗的案例。它還需要一套設(shè)計模式,我總結(jié)如下:
最近,由于微服務(wù)架構(gòu)的復(fù)雜性和在某些用例中的失敗,人們對它產(chǎn)生了強(qiáng)烈的反感。Kelsey Hightower 在下面的推特中總結(jié)了對微服務(wù)的批評:
這與我們幾年前所看的趨勢形成鮮明對比,當(dāng)時單體架構(gòu)受到批評并被視為過時的。實(shí)際上,單體架構(gòu)也是一種很好的架構(gòu),它特別適合我在下面這篇文章中提到的用例:
另一個近年來大肆宣傳的軟件架構(gòu)是無服務(wù)器架構(gòu)(Serverless Architecture)。亞馬遜開創(chuàng)了無服務(wù)器計算的先河,推出了開創(chuàng)性的 AWS Lambda 服務(wù),開發(fā)人員只編寫代碼,服務(wù)提供商托管服務(wù)器。這個架構(gòu)也有人炒作,有人批評。像單體架構(gòu)和微服務(wù)架構(gòu)一樣,無服務(wù)器架構(gòu)也不是萬能的,應(yīng)該用在它適合的地方(例如,事件驅(qū)動和突發(fā)負(fù)載)。
在 2021 年,所有的軟件架構(gòu)(單體架構(gòu)、微服務(wù)、無服務(wù)器)都將共存,因?yàn)樗鼈兌加懈髯缘挠美蛢?yōu)缺點(diǎn)。我建議在大型企業(yè)開發(fā)中選擇微服務(wù)架構(gòu)(傳統(tǒng)上使用 SOA),在小型開發(fā)中使用單體架構(gòu),在事件驅(qū)動和突發(fā)負(fù)載中選擇無服務(wù)器架構(gòu)。
近些年,編程語言領(lǐng)域也經(jīng)歷了重大變化。傳統(tǒng)的偏重的編程語言的市場份額正逐漸被更簡單且對開發(fā)人員更友好的編程語言所占據(jù)。在 2020 年 1 月,我對需求中的語言進(jìn)行了廣泛的分析,將 Python 和 JavaScript 分別放在第一位和第二位:
最后,最受歡迎的編程語言排名網(wǎng)站 TIOBE 承認(rèn)了這一變化,并將 Python 置于 Java 之上:
隨著軟件開發(fā)行業(yè)的蓬勃發(fā)展,以及大量新開發(fā)人員加入這個行業(yè),更簡單、對開發(fā)人員更友好的編程語言將在 2021 年更受歡迎。
Python 是數(shù)據(jù)科學(xué)中排名第一的編程語言,在除了底層編程之外的幾乎所有其它領(lǐng)域也都是排名第二或第三的編程語言。
JavaScript 是 Web 開發(fā)領(lǐng)域毫無爭議的頭號語言,在其它領(lǐng)域(包括后端開發(fā))中也越來越流行。它也是初學(xué)者的絕佳語言。
Java 正慢慢喪失其作為最流行的編程語言的受歡迎程度。然而,由于其傳奇般的向后兼容性和不斷更新(6 個月的發(fā)布周期,polyglot Virtual Machine GraalVM),它仍然是企業(yè)軟件開發(fā)的首選編程語言。
C++ 是另一個近年來發(fā)生了重大變化的主流編程語言。幾天前剛剛發(fā)布了 C++20,它將完全改變 C++ 截至目前的編程方式。這是近年來最具破壞性的 C++ 版本之一,將極大地影響其在 2021 年及以后的流行度。
在 2021 年,主流編程語言將保持它們的地位,盡管它們會感受到來自現(xiàn)代編程語言的壓力。
最近幾年,編程領(lǐng)域的另一個有趣的趨勢是現(xiàn)代編程語言的興起。比較老的語言存在過去的包袱,不能快速變遷(Java),或者通過增加越來越多的功能而變得臃腫且令人望而卻步(C++)。
現(xiàn)代的比較新的編程語言沒有過去的包袱,能夠滿足當(dāng)今開發(fā)者的需求。它們大多非常關(guān)注開發(fā)人員的工效學(xué),支持現(xiàn)代功能,例如類型推理、null 安全性、表達(dá)力強(qiáng)、簡潔。其中許多還被設(shè)計來利用現(xiàn)代硬件和現(xiàn)代基礎(chǔ)設(shè)施(云、多核、GPU、TPU)。
以 Rust、 Go、 Kotlin、 Swift、 TypeScript 為首的現(xiàn)代編程語言正日益流行,正如我在下面這篇帖子中預(yù)測的那樣:
這一趨勢將在 2021 年繼續(xù),因?yàn)樗鼈兪窃鲩L最快的語言之一。
其中,隨著行業(yè)的注意,Rust 將在 2021 年取得突破。在過去 5 年中,根據(jù) Stack Overflow 開發(fā)者調(diào)研,它是最受喜愛的編程語言:
圖片來源:Stack Overflow Developer Survey, 2020
科技巨頭終于在安全敏感的復(fù)雜項目中使用 Rust 而不是 C/C++。微軟最近聲明,他們將使用 Rust 來修復(fù)安全漏洞:
就在幾周前,亞馬遜宣布大力投入 Rust 并解釋了他們這樣做的原因:
谷歌的 Go 已經(jīng)是主流且成熟的編程語言。隨著 Go 2 release 規(guī)劃的大量改進(jìn),它將在未來獲得更多人氣。
JetBrain 的 Kotlin 已經(jīng)成為 JVM 生態(tài)系統(tǒng)中第二流行的類型化編程語言。在 Android 應(yīng)用開發(fā)中,它已經(jīng)超過了 Java:
微軟的 TypeScript 已經(jīng)成為 JavaScript 的類型化替代品。最近,隨著許多復(fù)雜項目(例如 Deno、 Vue.js)選擇 TypeScript 而不是 JavaScript,它的流行度大幅躍升:
蘋果公司的 Swift 已經(jīng)取代 Objective-C,成為 macOS 和 iOS 的首選編程語言。它在其它領(lǐng)域也有被采用。
在科技巨頭的支持下,預(yù)計包括 Rust 在內(nèi)的現(xiàn)代編程語言將在 2021 年獲得更多吸引力和普及使用。
大多數(shù)面向用戶的企業(yè)應(yīng)用程序是 Web 應(yīng)用或移動應(yīng)用。在 Web 開發(fā)中,基于 JavaScript/TypeScript 的客戶端 Web 框架已經(jīng)占據(jù)主導(dǎo)地位很多年了。趨勢是使用 JavaScript 框架進(jìn)行 UI 開發(fā),使用服務(wù)端框架進(jìn)行后端開發(fā),其中前后端是分離的服務(wù)。
Facebook 的 React 在客戶端 Web 框架中處于領(lǐng)先地位。它是行業(yè)中引領(lǐng)潮流且應(yīng)用最廣泛的框架。如果你想了解更多關(guān)于基于 JavaScript 的客戶端框架,可以閱讀我下面這篇文章:
如下圖所示,React 是目前下載量最多的客戶端 JavaScript 框架:
盡管如此,最流行的 Web 框架并不是 React,而是另一個基于 JavaScript 的 Web 框架——Vue.js:
Vue.js 在中國也是頭號框架,因?yàn)?Vue.js 的創(chuàng)造者(尤雨溪,Evan You)是一名華人前谷歌開發(fā)者。不幸的是,這種與中國的聯(lián)系引起了大企業(yè)的安全擔(dān)憂,Vue.js 在美國 / 歐洲的采用率比較低。
谷歌的 Angular 落后于 React 和 Vue.js,但仍然是一個穩(wěn)定的框架。然而,最近最具革命性的 Web 框架是 Svelte。與其它框架不一樣,Svelte 是一個非運(yùn)行時框架,專注于編譯步驟。
在 2021 年,所有主流的基于 JavaScript 的框架都將彼此學(xué)習(xí),吸收其它框架的特性。在 2021 年,它們將更加趨同。
服務(wù)器端框架是端到端框架,提供端到端 Web 開發(fā),包括服務(wù)端渲染的視圖層。但是正如之前所說,如今的趨勢是只在后端使用它們。
基于 JVM 的 Spring 框架在企業(yè)開發(fā)領(lǐng)域是排名第一的服務(wù)端框架。它還提供開發(fā)小型和大型復(fù)雜應(yīng)用所需的所有必需功能:控制反轉(zhuǎn)、依賴注入、云原生開發(fā)、響應(yīng)式、事件驅(qū)動應(yīng)用開發(fā)、快速應(yīng)用程序開發(fā)。在 2021 年,Spring 仍將保持企業(yè)的頭號后端框架。在之前的一篇文章中,我將 Spring 作為排名第一的服務(wù)端 Web 框架。
微軟的 ASP.NET Core 是另一個引人注目的 Web 框架,與流行的 JavaScript 框架(React、Vue.js、Angular)無縫協(xié)作。在 2021 年,ASP.NET Core 將成為企業(yè)服務(wù)端開發(fā)的主要選手。
許多初創(chuàng)公司和小型公司都希望有一個包括視圖層的端到端框架,以便快速開發(fā)應(yīng)用程序?;?Python 的 Django、 PHP Laravel 和 Ruby on Rails 在 2021 年將成為他們的絕佳選項。
智能手機(jī)現(xiàn)在是我們?nèi)粘I畹囊徊糠?。智能手機(jī)用戶已經(jīng)達(dá)到 35 億,明年將達(dá)到 38 億:
圖片來源:Statista
因此,移動應(yīng)用對于終端用戶越來越重要,尤其是對于年輕一代來說。
在移動應(yīng)用開發(fā)領(lǐng)域,有 4 個主要趨勢:原生應(yīng)用開發(fā)、跨平臺應(yīng)用開發(fā)、混合應(yīng)用開發(fā)和基于云的應(yīng)用開發(fā)。
原生應(yīng)用開發(fā)提供了最高的靈活性,擁有最好的性能和用戶體驗(yàn)。但由于企業(yè)需要保留兩個獨(dú)立的團(tuán)隊,因此開發(fā)成本最高。
跨平臺應(yīng)用開發(fā)正變得越來越流行,因?yàn)?iOS 和 Android 應(yīng)用開發(fā)可以使用相同的代碼庫。盡管開發(fā)成本低,但是不夠靈活,性能也不如原生應(yīng)用。
近年來,基于云的應(yīng)用變得越來越流行,其數(shù)據(jù)和主要業(yè)務(wù)邏輯保存在云端。特定設(shè)備的瘦客戶端被開發(fā)來連接云端并從中獲取數(shù)據(jù)。雖然對于數(shù)據(jù)密集的應(yīng)用程序是一個不錯的選擇,但對于普通應(yīng)用開發(fā)來說,它還不是主流。
盡管跨平臺應(yīng)用開發(fā)正迎頭趕上,原生應(yīng)用開發(fā)仍然是企業(yè)普通應(yīng)用開發(fā)的更好的選擇。在 2021 年,一般企業(yè)將偏愛原生應(yīng)用開發(fā),而初創(chuàng)企業(yè)和小公司將偏愛跨平臺應(yīng)用開發(fā)。
跨平臺應(yīng)用開發(fā)正變得越來越流行,因?yàn)樗拈_發(fā)成本比較低。市場上有許多跨平臺應(yīng)用開發(fā)平臺,但 Flutter 和 React Native 是其中的領(lǐng)導(dǎo)者。
Facebook 的 React Native 是基于最流行的基于 JavaScript 的 Web 開發(fā)框架——React。它的口號是“一次學(xué)習(xí),隨處編寫。”Facebook 正積極開發(fā) React Native,用 27 億 Facebook 用戶測試其功能。如果一家企業(yè)已經(jīng)用了 React 來進(jìn)行 Web 開發(fā)和 React Native 來進(jìn)行 App 開發(fā),它們可以在 Web 和移動開發(fā)中共享組件和代碼庫。另外,React Native 是基于 JavaScript 的,而 JavaScript 是最流行的編程語言之一。目前,React Native 比 Flutter 流行得多,如下所示:
在 2021 年,React 將主導(dǎo)跨平臺應(yīng)用開發(fā),因?yàn)?React 和 React Native 的性能會有一個重大更新。
谷歌的 Flutter 是一個相對比較新的框架,但近年來非常流行。它提供了一個功能強(qiáng)大的 UI 工具箱,用來從單一代碼庫構(gòu)建漂亮的原生編譯的移動、桌面和 Web 應(yīng)用程序。然而,F(xiàn)lutter 還不像 React 那樣是 Web 開發(fā)中的主流框架。Flutter 使用了一種現(xiàn)代編程語言——Dart,一種快速發(fā)展的效率非常高的編程語言。就性能而言,F(xiàn)lutter 比 React 有優(yōu)勢。它還提供了更好的開發(fā)者工效學(xué),而且開發(fā)人員喜歡使用 Flutter 工作:
與 Facebook 全力支持 React Native 不同,谷歌在 Web 和 App 開發(fā)方面有很多框架(例如,用于 Web 開發(fā)的 Angular),沒有把所有精力都放在 Flutter 和 Dart 上。
綜上所述,我預(yù)測 React Native 將在 2021 年繼續(xù)領(lǐng)先 Flutter,因?yàn)?Facebook 正計劃對 React 生態(tài)系統(tǒng)(React Native 的致命弱點(diǎn))進(jìn)行重大性能提升。
微服務(wù)架構(gòu)和無服務(wù)器近些年正變得越來越流行。微服務(wù)或納米服務(wù)需要通信,通常,同步通信用得比事件驅(qū)動的異步通信多。即使傳統(tǒng)的單體應(yīng)用是通過異步通信進(jìn)行通信的。
REST 是 2020 年最主要的 API 技術(shù)。REST 是一種基于 Web 技術(shù)的通信標(biāo)準(zhǔn)。它在行業(yè)中已經(jīng)有相當(dāng)一段時間了(20 年)。REST 和 SOAP 幾乎同時出現(xiàn),但當(dāng) SOAP 幾乎被認(rèn)為是遺留技術(shù)時,REST 將繼續(xù)統(tǒng)治。無論是大型企業(yè)還是小型初創(chuàng)公司,都在使用 REST。在 2021 年,REST 仍將占據(jù)主導(dǎo)地位。
在 API 開發(fā)領(lǐng)域,也有一些優(yōu)秀的候選者。最突出的是谷歌的 gRPC。與 REST 不同,gRPC 是一個類似 SOAP 的 RPC 協(xié)議。谷歌吸取了舊 RPC 協(xié)議的教訓(xùn),創(chuàng)建了適合現(xiàn)代軟件開發(fā)需求的 gRPC。gRPC 使用高性能的消息格式 Protocol Buffers(也是由谷歌開發(fā)),而不是 JSON。因此,與 REST 相比,gRPC 性能更高、可讀性更差。在機(jī)器對機(jī)器的通信中,這是比較好的選擇。
另一種越來越流行的 API 技術(shù),尤其是對于 UI 開發(fā)者,是 Facebook 的 GraphQL。通常,UI 需要對后端進(jìn)行大量 API 調(diào)用來獲取所有它所需的數(shù)據(jù)。GraphQL 允許聚合 API 來減少 UI 和后端之間的通信。GraphQL 的一個主要缺點(diǎn)是,它不適合高安全性要求的開發(fā)。
這三者實(shí)際上都有各自的用例,可以相互補(bǔ)充,這種趨勢將在 2021 年繼續(xù)。
這里,我使用了當(dāng)前的趨勢、數(shù)據(jù)和事實(shí)對 2021 年最重要的軟件開發(fā)趨勢進(jìn)行了 21 個預(yù)測。整個軟件開發(fā)行業(yè)要大得多,我無法涵蓋所有重要的領(lǐng)域。
另外,我還簡要地討論了一些話題,例如數(shù)據(jù)存儲,它需要一篇單獨(dú)的文章。另一方面,我詳細(xì)寫了一些話題。另一個有趣的事實(shí)是,科技四巨頭:谷歌、Facebook、亞馬遜和微軟,是如何主導(dǎo)幾乎所有的軟件開發(fā)領(lǐng)域的。我希望這篇文章能讓你 360 度地了解 2021 年的軟件開發(fā)趨勢。
不能為空
不能為空