關鍵的要點
Elixir已進入趨勢報告的創新者採用階段。它是運行在Erlang虛擬機上的一種函數式、並發的通用程式語言。我們看到人們對基礎設施或特定於雲的語言、dsl和sdk(如Ballerina和Pulumi)的興趣和創新有所增加。我們相信Rust已經從革新者階段過渡到早期採用者階段,這主要是由於它在基礎設施和網絡數據平面空間(例如,Habitat和Linkerd 2.0)中的應用。Python繼續受到人們的歡迎,這主要歸功於它在數據科學和教學中的作用。由於iOS作為行動應用程式運行時的流行,iOS的開發已經向早期主流發展。雖然在JVM趨勢報告中單獨跟蹤了Kotlin,但在Android應用程式開發方面,他也看到了類似的早期主流趨勢。對於.net,我們看到很多人對.net Core很感興趣,而隨著.net Core 3的到來,我們希望這種情況能夠繼續下去。
2019年及以後的程式語言趨勢是什麼?本報告旨在幫助技術領導者做出中長期的技術投資決策,並幫助個別開發人員識別流行的程式語言,並選擇將他們寶貴的時間和資源投入到哪些新的程式語言學習和技能開發方面。
該報告總結了InfoQ編輯團隊目前是如何看待程式語言領域中技術的採用和新興趨勢的,而不包括單獨報告的Java / JVM和JavaScript / Web開發。這是一篇觀點文章,由我們的編輯(他們本身也是活躍的軟體工程師)與我們進行廣泛的內部討論,對外部公共調查結果的審查,以及對內部或私有調查和分析結果的審查形成。各種編輯談話的摘錄可以在下面找到。
InfoQ和QCon都關注我們認為屬於革新者、早期採用者和早期主流階段的主題。我們試圖做的是找出符合傑弗裡·摩爾(Geoffrey Moore)所說的「早期市場」的想法,在這個市場裡,「客戶基礎是由技術愛好者和有遠見的人組成的,他們要麼想抓住機會,要麼想解決迫在眉睫的問題。」我們還在尋找可能「跨越鴻溝」、被更廣泛採納的想法。值得指出的是,在這種情況下,技術在採用曲線上的確切位置可能不同。例如,Rust目前可能在舊金山灣區的公司中被廣泛採用,但在其他地方可能不太被廣泛採用。
自從我們發布了2018年內部編程趨勢報告以來,發生了顯著的變化,包括增加了幾種語言,如Python、Ruby和PHP,這些語言雖然很流行,但我們並沒有公開跟蹤採用曲線。儘管與這些語言相關的技術和因素正在內部討論,我們現在已經糾正了它們在趨勢圖上的缺失。
移動中的程式語言:Elixir、Rust和Swift
Elixir——一種函數式、並發的、通用程式語言——已經進入了創新者採用階段的趨勢報告。Elixir構建在Erlang之上(我們將其歸入早期採用者類別),並運行在Erlang虛擬機上。Elixir和Erlang共享用於構建分布式容錯應用程式的相同抽象。
我們認為,Rust已經從創新者轉變為早期採用者,這主要是由於它在基礎設施和網絡數據平面空間(例如,Habitat和Linkerd 2.0)中的應用。這種語言也逐漸成為WebAssembly的天然合作夥伴,幫助提高人們的認識。此外,我們注意到Facebook選擇使用Rust實現其Libra加密貨幣。
由於iOS作為行動應用程式運行時的流行,iOS的開發已經向早期主流發展。雖然我們沒有在這個趨勢類別中跟蹤Kotlin,但是InfoQ Java和JVM趨勢報告發現Kotlin越來越受歡迎,因為它現在是開發Android應用程式的默認語言。
基礎設施的語言:芭蕾舞女,普魯米,黑暗(Ballerina, Pulumi, Dark)
我們看到人們對基礎設施/雲目標語言、dsl以及類似Ballerina和Pulumi這樣的sdk的興趣越來越濃厚。我們也在追蹤Dark,它目前處於內測階段,所以還沒有進入圖表。這類技術目前正牢牢地紮根於創新者採用階段,但我們正在密切關注這一階段,並將於11月在舊金山的QCon上推出一個專門討論「基礎設施語言」的專題。
以下是我們2018年下半年的內部主題圖。2019年的版本在文章的頂部。
2018年的程式語言
.net 2019年第三季度
對於。net,我們看到很多人對。net Core很感興趣,而隨著。net Core 3的到來,我們希望這種情況能夠繼續下去。我們把。net Core在圖上分成了2x和3x兩個分支,因為它們在採用上是不同的。關於。net語言,我們期待c# 8能很快被採用。我們繼續對f#感興趣,但是我們認為,f#的複雜性和缺乏來自微軟的強大支持意味著它不太可能得到更廣泛的採用。
我們有ASP。網芯早在多數。在這一點上,我們相信大多數新的web工作是在ASP上完成的。NET核心,但不一定是。NET核心。一些現有的應用程式正在被移植,但大多數不會。WCF在企業中仍然非常重要,但是MS在。net Core中並不能很好地支持它。我們已經把Visual Basic移到了落後的地方,並且在這一點上,我們真的把它看作是一種業餘愛好者的語言。
以下是一系列經過簡單編輯和匯總的內容,摘自InfoQ幾個編輯團隊的內部對話,為我們推薦的採用圖的定位提供了更多的上下文環境。
Timisoara技術大學計算機與自動化學院助理教授Abel Avram和InfoQ編輯:
JetBrains發布了他們的2019年開發者生態系統狀態,調查了7000名開發者,得出了以下結論:Java——最流行的初級程式語言JavaScript -使用最多的整體程式語言Go——最有前途的程式語言Python是被研究最多的語言Go最初在2017年的市場份額是8%,現在已經達到了18%。此外,大多數開發人員(13%)選擇Go作為他們希望採用或遷移的語言。StackOverflow今年曾這樣評價Python:「Python是增長最快的主要程式語言,在我們的調查中再次躋身程式語言的行列,今年超過了Java,成為第二受歡迎的語言(僅次於Rust)。」
Arthur Casals,在人工智慧/多智能體系統領域工作的計算機科學研究員:
從我最近看到/讀到的情況來看,Rust似乎正在加快採用它的速度。儘管如此,它仍然是(某種程度上)小眾的,被視為「c++的替代品」。然而,隨著可用庫數量的增加和主要參與者的採用,我認為這是「早期採用者」的一個好選擇。Elixir似乎獲得了一些勢頭,尤其是在巴西——事實上,這種語言的創造者是巴西人,至少有一個新的獨角獸(Movile)正在公開使用它(與其他流行的公司,如Quero,在教育)。我最近看到了一些關於Elixir的討論——特別是在Quero的一個專家講述了他們如何從一開始就採用Elixir的故事之後,等等。還有一個來自於的工程師的很好的用例,他們最近寫了關於使用Rust和Elixir結合起來為1100萬並發用戶提供後端支持的文章。這是一個涉及兩種語言和廣泛使用的應用程式的真實場景,這無疑增加了它們的發展勢頭。
Dylan Schiemann, SitePen的執行長和Dojo的聯合創始人:
Rust還處於早期的採用者階段,根據我的經驗,它的採用者正在增加,這在很大程度上是由於WebAssembly和Servo。雖然Go已經有一段時間很有趣,但我仍然會將其認作是早期採用者。例如,語言的生命周期比框架要慢得多,我真的不認為Go已經成為主流。類似地,Elixir和Elm將被視為早期採用者。在我看來,Pony 是一個語言,我很少聽到提及,並在這個時候仍然是一個革新者。由於Swift是iOS應用程式的默認入口點,因此它很可能已經成為主流。對於基於雲的ide, CodeSandbox和StackBlitz在過去一年中獲得了極大的流行,因為它們具有令人印象深刻的基於瀏覽器的編輯特性集,以及與本地開發工具的集成。在停滯了幾年之後,Dart似乎在很大程度上由於Flutter而復甦。
Charles Humble, InfoQ主編:
我想把Swift變成早期的主流——在我看來,這種趨勢還在繼續,而且我認為,從WWDC上的一些公告來看——明顯是Swift的UIKit——我們正在進入蘋果平臺的「Swift時代」。我認為我們也可以將伺服器端Swift移植到早期採用者。這是傳聞,但與一些接近的人,他們告訴我這是看到穩定增長,有很多好東西,推動了swift-nio的開源,這反過來又增加了一些伺服器端框架的性能了。去年,Rust 肯定有所增長,我想把它從創新者變成早期採用者。他們很擅長將其定位為Wasm的合作夥伴,我認為這很有幫助。我不確定Go;它仍在增長,但我感覺它還沒有達到大眾接受的程度;可能會有爭議,但我還是想讓它儘早被採用。我聽說了一些Elixir,但我認為它仍然是創新者;它仍然是非常小眾的。我們也應該把Python放在這裡,可能在早期的大多數。它的受歡迎程度還在持續增長,這主要是由它在數據科學家中的受歡迎程度推動的,我認為我們需要更多地討論它。我不認為Pony可能會超越創新者;這是一個恥辱。我喜歡它的語言,雖然我發現它的類型系統相當複雜,而且我確實認為它是一件令人印象深刻的作品,但是它的社區仍然非常小。我會把它從追蹤器上拿下來。最後,我聽到了更多關於Dark的消息,儘管它還處於內測階段。我發現在更廣泛的基礎設施語言環境中這很有趣。
Werner Schuster, Wolfram的軟體管道工:
關於Swift:目前還處於早期階段,但是Swift對於TensorFlow (S4TF)的支持可能會成為Swift的一大賣點,並成為Python的潛在競爭對手(至少在該領域)。這裡有一個非常全面和有趣的文件,關於為什麼是Swift而不是其他語言。Chris Lattner現在在TensorFlow工作;和克裡斯是他的老把戲,創造國稅局在各地(MLIR)S4TF的名字有點無聊,而且隱藏了所有有趣的部分(廣告,等等)。關於Python:我對Python的走向很感興趣;很明顯,作為大量數據科學/ML原生圖書館選擇的黏合劑語言,它已經獲得了巨大的收益——這是Ruby在10年前沒有發現的,這是它的損失。另一方面,Python對其運行時的任何形式的現代化都表現出了明顯的抵制(有人記得Unladen Swallow嗎?)我想Jython也死了。我上次訪問這個網站時,它已經有好幾年沒有更新了,而且離Python 3.x還差得很遠。基礎架構語言:似乎出現了一種將語言(一些新的語言)耦合到部署的新趨勢。Pulumi & co - TypescriptBallerinaUnison Language—由ex-Scala/Haskell開發的一種新的函數式語言,但是很好地擺脫了單子;現在還為時過早Dark Language ——還沒有公開我很好奇所有這些會去哪裡;可能是曇花一現,也可能是15年後不可或缺的語言特性的第一步(比如子例程成為語言特性時)。我們可能看一個新的,沒有阻礙的Wasm未來(瀏覽器和伺服器端WASI等等)以及新發現的升值的本地(vm,容器,serverless)減少JVM /字節碼的吸引力,允許每個人都只使用本地版本的語言(規範化近幾十年一直在開發版本)。需要說明的是,我上面所說的都與JVM原生語言無關,比如Clojure、Scala或Kotlin等。
Ben Evans, New Relic公司的首席工程師和JVM技術架構師:
Elixir裡有少量的東西。我不是一個特別的愛好者——它是一個足夠好的語言,但是除非你需要BEAM VM的實際能力(容錯,大規模分布的簡單事物),否則它似乎不會增加很多。大多數語言的愛好者似乎喜歡它,因為它是「新的閃亮」,並且/或者他們對Java過敏(通常基於對已經過時10年的>平臺的看法),但是……我還沒有看到任何在JVM技術中不容易實現的引人注目的功能(儘管可能會有更多的繁文縟節)——而且JVM與庫的集成要更好、更廣泛。
Dustin Schultz:首席軟體工程師、Pluralsight作者和技術布道者
在過去的幾年裡,我看到Python有了很大的發展。正如其他人所指出的,我認為這主要是由於數據科學、教授it學校/大學以及弗拉斯克(vs Django)這樣的輕量級框架。我並不反對Python(實際上我喜歡編寫它),但是我認為它的流行並不代表企業用例的使用。我很少看到用Python編寫的大型分布式企業應用程式仍然使用Python。它們可能一開始使用Python,但最終會因為性能的原因切換到其他語言。
查爾斯·漢博:
就核心框架而言,自2012年以來,它似乎有了一些漸進式的改進——我認為很多工作都集中在。net核心上。我認為。net Core已經從創新者變成了早期採用者。我在想,我們是否應該在。net Core 3發布後將其拆分,或許。net Core 3將在innovator中回歸,而。net Core 2將在較早的採用者中回歸。同樣地,我認為c#應該轉向早期的主流——老實說,我不確定為什麼不是。我認為f#正在沿著類似於JVM上的Clojure的道路前進——在我看來,這是一門可愛的語言,但我沒有看到它擴展到當前大小之外的跡象。同樣,我也沒有看到使用量大幅下降。
Jonathan Allen,畢馬威的軟體架構師,InfoQ的首席.net編輯:
與社區交流,F#有兩個問題:它沒有來自微軟的強大支持領導層致力於以易用性為代價追求c#的兼容性它在不斷地變得越來越複雜,這正是計算機科學家所喜歡的。但是,實際上教授f#的培訓師主要關注那些需要腳本語言的非程式設計師。因此,額外的複雜性使他們的工作更加困難。我也認為c# 8很快就會被早期採用者所接受。自從……以來,人們一直要求可為空的引用類型。嗯。net 1。
討論的其他公開的研究和調查包括: "The RedMonk Programming Language Rankings: June 2019" 和I"The Top Programming Languages 2019."
請告訴我們您在過去12個月中使用了哪些程式語言,或者您打算使用哪些程式語言。填寫調查表。