Categories
科技報導

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言



如果我們把人類的現代文明看作一輛汽車,那麼軟件開發行業就像汽車的發動機,編程語言就像發動機的燃料。那麼問題來了,你應該學哪種編程語言?學習一門新的編程語言在時間、精力和腦力上的投入都非常巨大,但它可以提高你的軟件開發技能,並給你的職業生涯帶來提升,正如我在另一篇博客中所寫的:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 1

博客網址:https://medium.com/@md.kamaruzzaman/5-reasons-to-learn-a-new-programming-language-in-2020-bfc9a4b9a763

通常,你應該選擇一種能有助於你事業發展的編程語言。另外,你還可以學習一門受歡迎程度正在上升的語言。

我對主流編程語言非常尊重。但在這裡,我列出現代編程語言,這些語言可以提高你的工作效率,使你成為一個更好的開發人員。此外,我還將涉及更廣泛的領域:系統編程,應用程序開發,網絡開發,科學計算。

“現代編程語言”這個詞是模棱兩可的。許多人認為像 Python、JavaScript 這樣的語言是現代編程語言。但同時,他們認為 Java 是一種古老的編程語言。事實上,它們都出現在同一時間:1995 年。

大多數主流的編程語言是在上個世紀發展起來的,主要是在 20 世紀 70 年代(例如 C)、20 世紀 80 年代(例如 C++)、20 世紀 90 年代(例如 Java、Python、JavaScript)。這些語言不是為了利用現代軟件開發生態系統而設計的。儘管其中的許多語言中有改進特性,比如並發性和自我調整,但是它們也提供了向後兼容性,並且不能丟棄舊的、過時的特性。

在這一點上,Python 做的很好,它在 Python 2 和 Python 3 之間做了一個明確的劃分。這些語言通常提供 10 種方法來做同樣的事情,而不關心開發人員用起來是否方便。根據 StackOverflow developer 的調查,大多數主流的舊編程語言都在“最可怕的語言”類別中佔據了榜首:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 2

圖片來源:Stackoverflow

我將以第一款 iPhone 發布的時候,也就是 2007 年 6 月 29 日作為新舊編程語言之間的界限時間點。在 iPhone 發布之後,一切都發生了變化。在這個列表中,我主要考慮 2007 年後的編程語言。

首先,開發現代編程語言是為了充分利用現代計算機硬件(多核 CPU、GPU、TPU)、移動設備、大數據集、快速網絡、容器和雲。此外,大多數現代編程語言使用起來都更容易,主要體現在:

  • 簡潔的代碼

  • 內置的並發支持

  • 空指針安全

  • 類型推斷

  • 更簡單的特性集

  • 低認知負荷

  • 混合所有編程範例的最佳特性

其次,列表中的許多編程語言都具有破壞性,將永遠改變軟件行業。其中一些已經成為主流編程語言,而另一些則等待取得突破。至少作為第二種編程語言來學習這些語言是明智的。

在之前的一篇博文“20 個 2020 年軟件發展趨勢預測”中,我預測了 2020 年許多現代編程語言的突破:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 3

文章網址:https://towardsdatascience.com/20-predictions-about-software-development-trends-in-2020-afb8b110d9a0

Rust

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 4

圖片來源:Thoughtram

系統編程語言是由 C、C++等主導的,儘管它們可以完全控製程序和硬件,但它們缺乏內存安全性。即使它們支持並發性,但是在比你保證並發安全性的情況下,使用 C/C++編寫並發程序是很有挑戰性的。其他流行的編程語言是可解釋性的語言,如 Java、Python、Haskell,它們提供安全性,但需要很多的運行時間或虛擬機。由於運行時很大,像 Java 這樣的語言不適合系統編程。

有很多人嘗試過將 C/C++的特性和 Haskell,Java 的安全性結合起來,但目前看來,Rust 是第一個實現這一目的的產品級編程語言。

Graydon Hoare 最早將 Rust 作為一個副產品開發出來。他受到了研究性的編程語言 Cyclone 的啟發。 Rust 是開源的,Mozilla 與許多其他公司和社區一起進行語言開發。 Rust 於 2015 年首次發布,很快就引起了社會各界的關注。在以前的文章中,我深入研究了 Rust,並論證了為什麼在大數據域中使用 Rust 來代替 C++、Java 是一個更好的選擇:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 5

文章網址:https://towardsdatascience.com/back-to-the-metal-top-3-programming-language-to-develop-big-data-frameworks-in-2019-69a44a36a842

主要特性:

  • 通過所有權和借用的概念提供內存安全性和並發安全性。

  • 內存安全和並發安全的編譯時間保證,即如果一個程序代碼編譯了,那麼它既是內存安全的,也沒有數據競爭。這是 Rust 最吸引人的特點。

  • 它還提供了 ML,Haskell 的表示方式。 Rust 具有不變的數據結構和函數式編程特性,提供函數式並發和數據並發。

  • Rust 的速度非常快。

  • 由於沒有運行時,Rust 提供了對現代硬件(TPU、GPU、多核 CPU)的完全控制。

  • Rust 有 LLVM 支持。

受歡迎程度:

自 2015 年首次亮相以來,Rust 一直被開發者所喜愛,並在 StackOverflow 開發者調查中連續四年(2016、2017、2018、2019)被評為最受歡迎的語言:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 6

圖片來源:Stackoverflow

根據 GitHub Octoverse 的說法,Rust 是僅次於 Dart 的增長第二快的語言:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 7

圖片來源:Octoverse

流行編程語言網站 PyPl 也將 Rust 排在第 18 位,並呈上升趨勢:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 8

圖片來源:PyPl

對比它提供的功能集,難怪像微軟、亞馬遜、谷歌這樣的科技巨頭最終宣布將 Rust 作為一種長期的系統編程語言。

在過去的 5 年裡,Rust 的吸引力每年都在增加:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 9

圖片來源:Google Trends

主要用在:

  • 系統編程

  • 無服務器計算

  • 業務應用程序

主要競爭語言:

  • C

  • C++

  • Go

  • Swift

Go

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 10

圖片來源:Wikimedia

谷歌是最大的網絡公司之一。本世紀初,Google 面臨著兩個擴展問題:開發擴展和應用程序擴展。開發擴展意味著他們不能通過增加開發人員來增加更多的功能,應用程序擴展意味著他們無法輕鬆開發一個可以擴展到“Google”級機器集群的應用程序。 2007 年左右,谷歌開始創建​​一種新的“實用”編程語言,這種語言可以解決這兩個問題。在 Rob Pike(UTF-8)和 Ken Thompson(UNIX 操作系統)中,兩個世界上最有才華的軟件工程師創建了一種新的語言。

2012 年,谷歌發布了 Go 編程語言的第一個官方版本。 Go 是一種系統編程語言,但不同於 Rust。它也有一個運行時和垃圾收集器(幾兆字節),但與 Java 或 Python 不同的是,這個運行時包含了生成的代碼。最後,Go 生成一個本機二進制代碼,可以在沒有附加依賴項或運行時的情況下在計算機中運行。

主要特性:

  • Go 具有一流的並發支持。它不通過線程和鎖提供“共享內存”並發性,因為編程難度要大得多。相反,它提供了基於 CSP 的消息傳遞並發性。 Go 使用“Goroutine”(輕量級綠色線程)和“Channel”進行消息傳遞。

  • Go 最具殺傷力的特點是簡單,它是最簡單的系統編程語言,一個萌新軟件開發人員可以在幾天內編寫出高效的代碼。一些最大的雲原生項目(Kubernetes,Docker)是用 Go 編寫的。

  • GO 也有嵌入式垃圾收集器,這意味著開發人員不需要擔心像 C/C++那樣的內存管理問題。

  • 谷歌在 Go 上投入了大量資金,因此,Go 擁有大量的工具支持。對於新的 Go 開發人員來說,有一個龐大的工俱生態系統。

  • 通常,開發人員花費 20% 的時間編寫新代碼,80% 的時間維護現有代碼。由於其簡單性,Go 在語言維護領域表現出色。如今,Go 在商業應用程序中得到了廣泛的應用。

受歡迎程度:

自 Go 首次問世以來,軟件開發社區已經欣然接受了它。在 2009 年(首次亮相)和 2018 年,Go 通過 TIOBE 指數進入編程語言名人堂排行榜。難怪 Go 的成功為 Rust 這樣的新一代編程語言鋪平了道路。

Go 已經是一種主流編程語言。最近,Go 團隊宣布了“Go 2”的計劃,目的只是讓語言更加穩固。

在幾乎所有流行編程語言比較網站,Go 的排名很高,超過了許多現有的語言。以下是 2019 年 12 月的 TIOBE 指數評級,Go 排名第 15 位:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 11

圖片來源:TIOBE

根據 Stackoverflow 的調查,Go 是十大最受歡迎的編程語言之一:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 12

圖片來源:Stackoverflow

根據 GitHub Octoverse 的統計,Go 也是增長最快的十大語言之一:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 13

圖片來源:Octoverse

谷歌還顯示,過去五年裡,Go 的吸引力不斷增強:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 14

圖片來源:Google Trends

主要用例:

  • 系統編程

  • 無服務器計算

  • 業務應用程序

  • 雲本機開發

主要競爭語言:

  • C

  • C++

  • Rust

  • Python

  • Java

Kotlin

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 15

Java 是企業軟件開發中無可爭議的王者。近年來,Java 已經受到了很多批評:冗長,需要大量的樣板編碼,複雜,容易發生意外。然而,關於 Java 虛擬機(JVM)的爭論很少。 JVM 是軟件工程領域的傑作,它提供了一個經過時間考驗的運行時。在上一篇文章中,我詳細討論了 JVM 的優點:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 16

文章網址:https://towardsdatascience.com/programming-language-that-rules-the-data-intensive-big-data-fast-data-frameworks-6cd7d5f754b0

多年來,像 Scala 這樣的 JVM 語言試圖回答 Java 的缺點,並希望成為更好的 Java,但是失敗了。最後,Kotlin 出現了,尋找更好 Java 的旅程似乎已經結束。 Jet Brains(流行 IDE IntelliJ 背後的公司)開發了 Kotlin,它運行在 JVM 上,解決了 Java 的缺點,並提供了許多現代特性。與 Scala 不同,Kotlin 比 Java 簡單得多,並在 JVM 中提供 Go 或 Python 式的開發效率。

谷歌宣布 Kotlin 是開發 Android 的一流語言,並提高了 Kotlin 在社區的接受度。同樣流行的 Java 企業框架 Spring 也從 2017 年開始在 Spring 生態系統中支持 Kotlin。

主要特性:

  • Kotlin 的 USP 是它的語言設計。我總是將 Kotlin 看作 JVM 上的 Go/Python,因為它的代碼簡潔明了。因此,Kotlin 的生產效率很高。

  • 與許多其他現代語言一樣,Kotlin 提供了空指針安全、類型推斷等功能。

  • 因為 Kotlin 在 JVM 中運行,因此你可以使用現存的 Java 庫龐大的生態系統。

  • Kotlin 是開發 Android 應用程序的一流語言,已經超越 Java 成為開發 Android 應用程序的第一語言。

  • Kotlin 有 JetBrains 和開源的支持。所以,Kotlin 有很好的工具支持。

  • 有兩個有趣的項目:Kotlin Native(將 Kotlin 編譯為本機代碼)和 Kotlin.js(Kotlin 轉換為 JavaScript)。如果他們成功了,那麼 Kotlin 可以在 JVM 之外使用。

  • Kotlin 還提供了一種編寫 DSL(領域特定語言)的簡單方法。

受歡迎程度:

自 2015 年首次發布以來,Kotlin 的受歡迎程度正在飆升。根據 Stack Overflow,Kotlin 是 2019 年第四受歡迎的編程語言:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 17

圖片來源:Stackoverflow

Kotlin 也是增長最快的編程語言之一,排名第四:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 18

圖片來源:Github Octoverse

熱門編程語言排名網站 PyPl 將 Kotlin 列為第 12 位最受歡迎的編程語言,並有很高的上升趨勢:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 19

圖片來源:Pypl

自從谷歌宣布 Kotlin 是開發 Android 應用程序的一流語言以來,Kotlin 的受歡迎程度快速上升,如下圖所示:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 20

圖片來源:Google Trends

主要用例:

  • 企業應用程序

  • Android應用程序開發

主要競爭語言:

  • Java

  • Scala

  • Python

  • Go

TypeScript

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 21

JavaScript 是一種優秀的語言,但 2015 年以前的 JavaScript 有許多缺點。甚至著名的軟件工程師 Douglas Crockford 也寫過一本書《JavaScript: The Good Parts》,並暗示 JavaScript 有很多不好的部分。由於沒有模塊化和“回調地獄”,開發人員不喜歡維護特別大的 JavaScript 項目。

Google 甚至開發了一個平台,將 Java 代碼轉換為 JavaScript 代碼(GWT)。許多公司或個人試圖開發更好的 JavaScript,例如 CoffeeScript、Flow、ClojureScript,但微軟的 TypeScript 無疑是其中最突出的。由 Delphi 的創建者 Anders Hejlsberg 領導的一組微軟工程師創建了 TypeScript,把它作為 JavaScript 的靜態類型的模塊化超集。

在編譯期間,TypeScript 被編譯為 JavaScript。 2014 年首次發布以來,TypeScript 迅速引起社會關注。當時谷歌還計劃開發一個靜態類型的 JavaScript 超集。谷歌對 TypeScript 印象深刻,他們沒有開發新的語言,而是與微軟合作改進 TypeScript。

Google 使用 TypeScript 作為其 SPA 框架 Angular2+ 的主要編程語言。另外,流行的 SPA 框架 React 提供了對 TypeScript 的支持。另一個流行的 JavaScript 框架 Vue.js 聲明他們將使用 TypeScript 開發新的 Vue.js 3:

現代編程語言哪家強? 2020年你或許應該了解這7門編程語言 22

圖片來源:Vue.js Roadmap

此外,node.js 的創建者 Ryan Dahl 決定使用 TypeScript 開發一個安全的 node.js 替代品 Deno。

主要特性:

  • 與列表中的 Go 或 Kotlin 一樣,TypeScript 的主要特性是語言設計。憑藉其清晰乾淨的代碼,它是最優雅的編程語言之一。就開發人員的生產力而言,它與 JVM 上的 Kotlin 或 Go/Python 不相上下。 TypeScript 是最高效的 JavaScript 超集。

  • TypeScript 是 JavaScript 的強類型超集。它特別適合大型項目,並被正確地稱為“大規模的 JavaScript”。

  • “三大”單頁應用程序框架(Angular、React、Vue.js)為 TypeScript 提供了極好的支持。在 Angular 中,TypeScript 是首選的編程語言。在 React 和 Vue.js 中,TypeScript 越來越流行。

  • 兩個最大的科技巨頭:微軟和谷歌正在合作開發 TypeScript,它得到了一個充滿活力的開源社區的支持。因此,對 TypeScript 的工具支持是最好的支持之一。

  • 由於 TypeScript 是 JavaScript 的超集,它可以在 JavaScript 所有的地方運行。 TypeScript 可以在瀏覽器、服務器、移動設備、物聯網設備和雲上運行。

受歡迎程度:

開發人員喜歡 TypeScript 優雅的語言設計。在 Stackoverflow 開發者調查中,它在最受歡迎的語言類別中與 Python 並列第二:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:Stackoverflow

TypeScript 是增長最快的 Web 編程語言之一,在 GitHub Octoverse 上排名第五:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:Octoverse

根據 GitHub 貢獻,TypeScript 也進入了前 10 名(排名第 7):

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:Octoverse

TypeScript 在過去的一年中吸引了越來越多的眼球,這反映在 Google 趨勢上:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:Google Trends

主要用例:

  • Web 用戶界面開發

  • 服務器端開發

主要競爭語言:

  • JavaScript

  • Dart

Swift

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

Steve Jobs 拒絕在 iOS 中支持 Java(和 JVM),因為他認為 Java 將不再是一種主要的編程語言。我們現在知道 Steve Jobs 對 Java 的評價是錯誤的,但是 iOS 仍然不支持 Java。相反,蘋果選擇 Objective-C 作為 iOS 中的主流編程語言。 Objective-C 是一門很難掌握的語言。而且,它具備現代編程語言所要求的高開發效率。

在蘋果,Chris Lattner 和其他人開發了 Swift ,它是一種多範式、通用、可編譯的編程語言,為 Objective-C 提供了一種替代方案。 Swift 的第一個穩定版本於 2014 年發布。 Swift 還支持 LLVM 編譯器工具鏈(也由 Chris Lattner 開發)。 Swift 與 Objective-C 代碼庫具有良好的互操作性,並且已經成為 iOS 應用程序開發的主要編程語言。

主要特性:

  • Swift 的一個致命優點是它的語言設計。它使用更簡單、簡潔和乾淨的語法,為 Objective-C 提供了一個更高效的替代方案。

  • Swift 還提供了現代程序語言的特性:null 安全性。

  • Swift 是一種編譯語言,它和 C++一樣快。

  • Swift 支持 LLVM 編譯器工具鏈。因此,我們可以在服務器端甚至瀏覽器編程(使用 WebAssembly)中使用 Swift。

  • Swift 提供自動參考計數(ARC)支持,這樣可以限制內存管理不當。

受歡迎程度:

和許多其他現代語言一樣,開發人員也非常喜歡 Swift。根據 StackOverflow 的調查,Swift 在最受歡迎的編程語言中排名第六:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

在 TIOBE 的編程語言排行榜中,Swift 在 2019 年已升至第 10 位。考慮到這門語言才 5 歲,這是一個相當了不起的成就:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:TIOBE Index

Google trends 還顯示,Swift 的受歡迎程度先急劇上升,隨後在最後幾次飽和中趨勢略有下降:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:Google Trends

主要用例:

  • iOS 應用程序開發

  • 系統編程

  • 客戶端開發(通過 WebAssembly)

主要競爭語言:

  • Objective-C

  • Rust

  • Go

Dart

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

Dart 也是 Google 發布的編程語言。 Google 是網絡和安卓領域的關鍵玩家,在網絡和應用程序開發領域開發自己的編程語言也就不足為奇了。

Dart 是一種支持強類型和麵向對象編程的通用編程語言。 Dart 也可以被轉換成 JavaScript,並且可以運行在 JavaScript 運行著的任何地方(例如 Web、移動、服務器)。

主要特性:

  • 與 Go 一樣,Dart 也非常注重開發人員的工作效率。 Dart 由於其乾淨、簡單、簡潔的語法,極大地提高了生產效率,深受開發人員的喜愛。

  • Dart 還提供強大的類和麵向對象的編程。

  • Dart 是少數支持 JIT 編譯和 AOT 編譯的語言之一。因此,Dart 可以以 JavaScript 運行時(V8 引擎)為目標,Dart 可以編譯成快速的本機代碼(AOT 編譯)。

  • 跨平台的原生應用開發平台 Flutter 選擇 Dart 作為編程語言來開發 iOS 和 Android 應用。從那以後,Dart 變得越來越流行。

  • 與 Go 一樣,Dart 也有出色的工具支持和 Flutter 巨大的生態系統。 Flutter 的日益流行只會增加 Dart 的流行程度。

受歡迎程度:

根據 Github Octoverse,Dart 是 2019 年增長最快的編程語言,去年它的受歡迎程度翻了五倍:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

根據 TIOBE,Dart 居於第 23 位,僅僅 4 年時間,它已經超越了其它很多編程語言:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:TIOBE index

它也是 StackOverflow 開發者調查中排名第 12 位的最受歡迎的編程語言之一:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:StackOverflow

除了 Flutter,Dart 的受歡迎程度在過去兩年也經歷了巨大的改善,這一點在 Google 中很明顯:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:Google Trends

主要用例:

  • 應用程序開發

  • 前端開發

主要競爭語言:

  • JavaScript

  • TypeScript

Julia

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

前面列出的編程語言都是由大公司開發的,但 Julia 不是。在技​​術計算中,通常使用 Python、Matlab 等動態語言。這些語言提供易於使用的語法,但不適合大規模的技術計算,他們使用 C/C++庫來處理 CPU 密集型任務。由於代碼是在兩種語言之間轉換的,因此總會有一些性能損失。

為了解決這個問題,麻省理工學院的一組研究人員計劃從頭開始創建一種新的語言,它利用了現代硬件的優勢,並結合了其他語言的最佳部分。他們在麻省理工學院創新實驗室完成這項工作,還發表了以下宣言:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

資料來源:Julia Presentation

Julia 是一種動態的高級編程語言,為並發、並行和分佈式計算提供一流的支持。 Julia 的第一個穩定版本於 2018 年發布,很快就得到了社區和業界的青睞。 Julia 可以應用於科學計算、人工智能等許多領域,最終解決“兩種語言”的問題。

特性:

  • 和 Rust 一樣,Julia 的主要特點是語言的設計。它試圖在不犧牲性能的情況下,結合現有的編程語言在高性能和科學計算中的一些最佳特性。到目前為止,它做得很好。

  • Julia 是一種可選類型的動態編程語言。因此,Julia 很容易學習,而且效率很高。

  • 它以多分派編程範式為核心。

  • 它內置了對並發、並行和分佈式計算的支持。

  • 它還為 I/O 密集型任務提供異步 I/O。

  • 它速度非常快,可以用於需要數百萬線程的科學計算。

受歡迎程度:

在許多領域,Julia 主要與 Python 競爭。由於 Python 是最流行的編程語言之一,Julia 成為主流還需要幾年時間。

Julia 相對年輕(只有一歲),但在 TIOBE index 中仍排在第 43 位:

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

圖片來源:TIOBE

Google Trends 也顯示出過去的時間裡,程序員對 Julia 的穩定興趣。

現代編程語言哪家強? 2020年,你或許應該了解這7門編程語言

但考慮到 Julia 背後的功能集和公司數量,如 NSF、DARPA、NASA、Intel,Julia 何時取得突破只是個時間問題。

主要用例:

  • 科學計算

  • 高性能計算

  • 數據科學

  • 可視化

主要競爭語言:

  • Python

  • Matlab

via:https://towardsdatascience.com/top-7-modern-programming-language-to-learn-now-156863bd1eec