爲什麼 Rust 是編程的未來?

作者 | Scalac
譯者 | 彎月
出品 | CSDN(ID:CSDNnews)

2020 年 Stack Overflow 的調查報告顯示,Rust 名列最受歡迎編程語言的榜首,86% 的開發人員表示今後會繼續使用該語言。其實,這並不是什麼新鮮事,自 2016 年以來,Rust 一直在該調查報告中名列前茅。Tiobe 指數也顯示,Rust 的受歡迎程度持續上升,9 月份的時候達到了最受歡迎編程語言的第 18 名。在我們針對情感分析函數式編程語言的排名中,Rust 也獲得了第一名。

Rust 由前 Mozilla 開發人員 Graydon Hoare 於 2006 年創建,目的是代替 C++,如今 Rust 在全世界開發人員中的人氣越來越高。Rust 可用於編寫 Web 應用程序、嵌入式計算機、分佈式服務或命令行。科技巨頭微軟也正在慢慢地從 C++ 語言(由於安全問題不斷增加)轉向 Rust,這無疑是 Rust 大受歡迎的最佳證據。

爲什麼 Rust 在程序員中的人氣如此之高?爲什麼他們不選用其他編程語言?主要原因之一是,Rust 解決了許多其他編程語言所共有的問題,有些開發人員甚至說 Rust 的創建者一定考慮到了 C++ 中所有潛在的問題。究竟是什麼讓 Rust 如此獨特,我們是否應該學習 Rust?下面,我們就來談一談我們認爲 Rust 是編程未來的五個原因。

Rust 與其他編程語言

===================

與其他衆多廣爲人知的編程語言相比,Rust 有一些明顯的優勢。

Rust 與 C++

與 C++ 相比,Rust 的安全性高出很多。Rust 既能保護自己的抽象,也能保護開發人員創建的抽象,而 C++ 這兩方面都做不到。C++ 中某些錯誤會導致不可預測的行爲,而 Rust 則可以幫助你專心做好重要的工作。雖然 C/C++ 仍然是最流行的編程語言之一,但二者也有一些不可避免的問題。

另外,Rust 更容易上手,學習曲線不是很陡峭。Rust 沒有 C++ 那樣的技術債務,併發性更容易實現,而性能與 C/C++ 也差不多。Rust 允許程序員編寫不安全的代碼,但在沒有特別指明的情況下只允許安全的代碼(如果你選擇編寫不安全的代碼,則可以在 Rust 中使用 unsafe 關鍵字)。

Rust 與 Java

Java 的速度遠不如 Rust。此外,Rust 的啓動速度更快,佔用的內存更小。Java 使用垃圾回收進行內存管理,這會降低性能(儘管這可以降低編程的難度)。

Rust 與 Python

Rust 的設計更好。Rust 允許將多條語句放入 lambda 中,這樣一切都可以用表達式表示,因此更容易創建語言的特定部分。而 Python 缺少這樣的支持。Rust 沒有類,所以面向對象不如 Python 發展得那麼好。

此外,Python 還需要編寫很多測試,有時還會發生系統停機或運行時崩潰。Rust 更便於識別和修復 Bug。

Rust 與 Go

Go 缺乏表現力。Rust 有一個靈活且富有表現力的系統,允許定義新的容器類型,容器類型可以容納不同類型的元素、泛型、特徵、代數數據類型。在 Go 中,開發人員對資源和內存的控制能力更弱。

爲什麼說 Rust 是未來

====================

1.Rust 提高了內存安全性

長期以來,困擾開發人員的最大問題之一就是內存管理。其他語言中很容易錯過某些代碼問題,而這反過來又會產生可怕的錯誤代碼,查找和修復這些錯誤需要花費大量時間。一個更大的問題是,代碼中的錯誤會導致安全漏洞,在當今世界,安全漏洞可太危險了。大型網站或應用程序中的數據安全漏洞事件頻頻發生。原因往往是應用程序漏洞或配置錯誤。

Rust 提高了內存安全性。Rust 代碼不能有任何懸空指針、緩衝區溢出或任何其他類型的與內存相關的錯誤。開發人員可以定義應該如何管理內存以及如何將值放入其中,既可以管理內存、保證安全性,又不會損失性能,這是 Rust 的一個巨大的優勢。

提高內存安全性是 Rust 開發人員的主要目標之一,也是該語言最重要的賣點。Rust 的代碼編譯器非常嚴格,每一個變量或內存地址都會被自動檢查。如果發現任何語法錯誤、空值、懸空修飾符或內存安全問題,Rust 就不會編譯代碼,並通過警告顯示不安全的代碼,以便開發人員快速發現和修復主要問題。那麼,Rust 是如何實現這一點的呢?

在 Rust 中,每個值都有 “所有權”。當傳遞或返回一個值時,所有權就會被重新分配到某個作用域,而且只會分配到一個作用域。如果值的“所有者” 離開該作用域,則該值將被刪除。Rust 就是通過這種方式跟蹤內存,自動釋放內存,並防止所有 bug 進入主代碼。這意味着在運行時不會發生意外!該系統將在編譯時分析內存管理,幫助開發人員更快地識別和修復 bug,因此也不需要使用垃圾收集。

但內存管理不止這麼簡單。高級系統常常涉及大量的計算密集型工作,而且還會創建大量的臨時內存。這種負載會對 Java 虛擬機性能產生負面影響,而且許多編程語言(包括 Scala)根本無法處理它。

然而,Rust 卻可以。Rust 不需要管理內存,也無需使用像閉包之類的現代便利特性,就能支持編寫有效使用內存的代碼,而且運行時開銷小到幾乎沒有,因此可用於實時或嵌入式項目,而且也可以與其他語言或項目輕鬆集成。

2. 不斷髮展的社區

雖然 Rust 社區和庫的數量遠不及 C++ 等,但隨着 Rust 語言的日益流行,加入社區的開發人員和愛好者也在不斷增加。社區創建的框架、庫和開發工具的數量已經接近 5.7 萬,並且每天都在增加。

除了不斷增長的工具和框架庫之外,Rust 還有一個活躍且受歡迎的社區。無論你需要解決某個問題,還是想尋找使用 Rust 的技巧和竅門,都可以通過社區獲得幫助。除了社區聊天和用戶論壇,Rust 還有一個活躍的 reddit 子論壇。

下面是幾個新興的社區項目:

● redox:用 Rust 編寫的操作系統;

● cgmath:線性代數和計算機圖形庫;

● Iron:併發 Web 框架;

● Doom renderer。

3.Rust 的速度非常快,而且非常靈活

Rust 是一種速度非常快的編程語言,它的運行速度比 Scala 還快,尤其是在一些重視性能的任務中,Rust 尤爲突出。在某些領域,Rust 的運行速度甚至比 Scala 或 Java 快三倍。

此外,挑選和使用 Rust 的外部包也很容易,而且 Rust 的打包構建工具也讓編寫代碼變得非常簡單。

Rust 之所以這麼快,原因有幾個:

● 它是靜態類型的編譯語言,編譯器可以優化代碼,以提高速度;

● 提供 trait 的靜態調度:類似於 C++ 模板,但更清晰;

● 明確跟蹤變量的所有權。不會假設任何帶有地址的變量隨時都可以修改,因此可以在不對代碼產生負面影響的情況下進行優化;

● 默認變量是不可變的(因此優化更容易);

● 提供了代數數據類型,也很適合優化;

● 存儲數據沒有任何開銷,沒有運行時或由於缺乏垃圾收集而突然暫停;

● 提供了零成本抽象。

Rust 不僅便於優化,而且開發高級功能也很輕鬆。

4. 使用廣泛

Rust 不僅性能優異,而且還提供了安全的執行環境;雖然 Rust 是高級函數式編程語言,但可以進行底層的優化。

你可以認爲 Rust 是一種低級語言,適合各種系統,尤其是嵌入式或其他注重性能的系統。據說,它還被用於 3D 視頻遊戲開發。

爲什麼 Rust 廣受全世界開發人員的喜愛?首先,你可以編寫出永遠不會出錯的代碼,因爲編譯器會檢查所有內容。其他編程語言在運行時檢測到的問題不會出現在 Rust 中。我們可以使用 Rust 編寫出安全、高效的抽象,而且它的安全性幾乎消除了使用不變性的需求。

許多人認爲 Rust 是一種注重性能、速度和安全質量的新興創新編程語言。

Rust 是一種流行的加密貨幣和區塊鏈編程語言,因爲 Rust 易於理解和學習,在保障性能的同時還提供了安全性。此外,Rust 還爲這些開發人員提供了工具,讓他們更快地交付代碼。選擇 Rust 編寫的加密貨幣不太可能崩潰,而且比使用其他編程語言更安全。

5. 很多大公司都使用 Rust 

儘管 Rust 是一種相對年輕的語言,但在提高編程安全性和易用性方面,Rust 已成爲很多開發人員的首選。此外,不僅開發人員對 Rust 感興趣,一些公司和企業,尤其是大型公司,也已經使用 Rust 或正在計劃使用 Rust。於今年 5 月份舉行的 AllThingsOpen 虛擬會議上,Ryan Levick(微軟雲開發倡導者)表示,Rust 作爲一種語言是 “業界正面解決多個問題的最佳選擇”。雖然微軟不打算在近期內放棄使用 C++,但他們的許多基礎設施正在慢慢轉移到 Rust。

除了微軟之外,還有很多公司也都意識到了改用 Rust 的潛在好處,比如 Dropbox、Sentry、亞馬遜和 Mozilla 等。

總結

=========

總的來說,Rust 有很多優勢,因此該編程語言廣越來越受歡迎。Rust 解決了一些令開發人員十分頭疼的問題,它不僅保持了高水平的性能優勢,而且還可以保障安全性。隨着越來越多開發人員和 IT 領域的大公司認識到 Rust 語言的潛力,可以毫不誇張地說,有朝一日 Rust 將成爲現代社會最常用的編程語言之一。

參考鏈接:

https://medium.com/scalac/5-reasons-why-rust-is-the-future-7ac731085339

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/lk2Kkih2NGaTwvILpM_c5A