Rust 代表未來的五個理由 - scalac

banq發表於2021-12-21

在 Stack Overflow 2020 調查中,Rust 被選為最受歡迎的程式語言第一名,這要歸功於 86% 的開發人員表示他們會繼續使用它。對於語言創造者來說,這並不是什麼新鮮事——Rust 自 2016年以來一直在這項調查中獲勝。在 Tiobe 指數上, Rust 的受歡迎程度也在上升——在 9 月份在最受歡迎的語言中排名第 18 位。它在我們自己的基於情感分析的函數語言程式設計語言排名中也沒有失敗,在最積極的情感類別中獲得第一名。
由前 Mozilla 開發人員 Graydon Hoare 於 2006 年建立,作為 C++ 語言的替代品,Rust 正慢慢在開發人員的世界中聲名鵲起。它現在用於建立 Web 軟體、嵌入式計算機和分散式服務或命令列。這種受歡迎程度的適當證明是,全球巨頭微軟正在慢慢地從 C++ 語言(由於安全問題數量不斷增加)轉向 Rust。
是什麼讓 Rust 在程式設計師中如此受歡迎,當他們有這麼多其他語言可以使用時?主要原因之一是 Rust 解決了許多在不同語言中可見的問題——以至於一些開發人員說 Rust 的建立者一定已經考慮到了 C++ 中可見的所有潛在問題。究竟是什麼讓 Rust 如此獨特,學習 Rust 是否值得?以下是我們認為 Rust 是我們的未來的五個原因。
  

Rust 與其他語言比較

  • Rust 與 C++:優勢

與 C++ 相比,Rust 只是……更安全。Rust 保護自己的抽象和開發人員所做的抽象,而 C++ 缺少這兩個選項。C++ 中的特定錯誤可能導致任意行為,而 Rust 可以幫助您專注於真正重要的事情。是的,C/C++ 仍然被認為是最流行的程式語言之一,但它經常會導致一些問題。Rust 更容易上手,學習曲線不是很陡峭,Rust 沒有 C++ 那樣的技術債務,具有更容易的併發性,並且效能相當。Rust 允許程式設計師編寫不安全的程式碼,但預設為安全程式碼(如果您選擇加入,您可以使用 unsafe 關鍵字在 Rust 中不安全程式碼——它預設隨 C++ 一起提供)。
  • Rust 與 Java:優勢

當談到 Java 時,事實證明這種程式語言比 Rust 慢得多。此外,您需要記住更快的啟動時間和更小的記憶體佔用。Java 使用垃圾收集進行記憶體管理,這會降低效能(儘管值得注意的是它使程式設計更容易)。
  • Rust 與 Python:優勢

Rust 設計得很好。Rust 允許將語句放入 lambda 中,並且一切都是表示式,因此更容易組合語言的特定部分。Python 缺少它。Rust 沒有類,所以物件導向不像 Python 那樣進化。Python 還遇到了編寫更多測試、生產中斷或執行時崩潰的必要性。Rust 使識別和修復可能的錯誤變得更便宜。 
  • Rust vs Go:優勢

Go缺乏表現力。Rust 有一個靈活且富有表現力的系統,允許定義新的容器型別,這些型別可以包含不同型別的元素、泛型、特徵、代數資料型別。Go 減少了對資源和記憶體的控制。 
 

為什麼 Rust 是未來?

  • 1. Rust 提高了記憶體安全性。

困擾開發人員的最大問題之一是記憶體管理問題。在其他語言中很容易遺漏程式碼問題,這反過來又會產生可怕的錯誤程式碼 - 並且需要時間來查詢和修復它們。一個更大的問題是編碼錯誤何時可能導致安全漏洞——在當今世界,這簡直太危險了。大型流行網站或應用程式中發生資料安全漏洞的大聲案例比我們希望的要頻繁得多。原因?很多時候,應用程式漏洞或配置錯誤。
Rust 被認為是記憶體安全的。Rust 程式碼不能有任何懸空指標、緩衝區溢位或任何其他型別的與記憶體相關的錯誤。它讓您可以定義應該如何管理記憶體以及應該如何在其中佈置值,在不損失效能的情況下照顧控制和安全線,並使其成為 Rust 的巨大資產。 
提高記憶體安全性是 Rust 開發人員的主要目標之一,也是該語言最重要的賣點。他們的程式碼編譯器很嚴格,每一個用到的變數或記憶體地址都會自動檢查。如果發現任何語法錯誤、空值、懸空修飾符或記憶體安全問題,Rust 將不會編譯程式碼並警告不安全的程式碼,以便快速發現和修復主要問題。它是如何做到的?
在 Rust 中,每個值都有一個“所有權”。當一個值被傳遞或返回時,所有權被賦予一個新的範圍——一次只有一個。如果值的“所有者”移出範圍,則該值將被刪除。這樣,Rust 會跟蹤記憶體並自動釋放它——並防止所有錯誤進入主程式碼。這意味著在執行時沒有意外!該系統將在編譯時分析記憶體管理,幫助更快地識別和修復錯誤,並使垃圾收集變得不必要。 
但還有更多關於記憶體的內容。構建高階系統通常與大量計算密集型工作相關並建立大量臨時記憶體。這種解除安裝會對任何 Java 虛擬機器效能產生負面影響,而且許多程式語言(包括 Scala)根本無法處理它。
然而,Rust 可以。它支援編寫記憶體高效的程式碼,無需管理記憶體或專門提供現代便利(例如閉包),並且執行時執行時開銷最小或沒有執行時開銷,可用於實時或嵌入式專案,並可輕鬆與其他語言或專案整合。 
如果這個還沒有說服你,讓我們更進一步。
  • 2. Rust 的社群不斷壯大。

當然,Rust 的社群和庫的數量遠不及 C++ 等。但是隨著 Rust 語言的日益流行,加入的開發人員和熱情的人的數量也在增加。社群建立的框架、庫和開發工具(稱為“板條箱”)的數量已經接近 57k,並且每天都在增加。
除了不斷增長的工具和框架庫之外,Rust 還擁有一個活躍且受歡迎的社群。無論您是需要解決問題的幫助還是尋找使用 Rust 的技巧和竅門,您都有幾個地方可以訪問。除了社群聊天和使用者論壇,Rust 還有一個活躍的 subreddit 部分。
看幾個新興社群專案的例子:
  1. redox,一個用 Rust 編寫的作業系統; 
  2. cgmath,一個線性代數和計算機圖形庫; 
  3. Iron,一個併發 Web 框架; 

  • 3. Rust 快速靈活。

Rust 被認為是一種相對較快的語言。當使用通用程式碼時,它可以比 Scala 執行得快得多,尤其是在效能關鍵任務中。很有可能在某些領域它的執行速度甚至比 Scala 或 Java三倍。獲取和使用外部包很容易,而且 Rust 的貨物構建工具使編碼變得簡單……簡單。 
有幾個因素使 Rust 非常快:
  1. 它是靜態型別和編譯的,使編譯器可以最佳化程式碼以提高速度 
  2. 它提供特徵的靜態排程:類似於 C++ 模板,但更清晰
  3. 它明確跟蹤變數的所有權。Rust 不假設任何帶有地址的變數都可以隨時更改,因此可以在不對程式碼產生負面影響的情況下進行最佳化。
  4. 它期望變數預設是不可變的(因此最佳化更容易)
  5. 它提供代數資料型別,也很適合最佳化
  6. 它在沒有任何開銷的情況下儲存資料,沒有執行時或由於缺乏垃圾收集而突然暫停
  7. 它提供零成本抽象

  • 4. Rust 可以廣泛使用 

如果有一個專案,除了效能和低階最佳化(但高階 Rust 函數語言程式設計技術)的重要性之外,還需要一個安全穩定的執行環境,Rust 應該透過考試。 
Rust 被認為是一種低階語言,適合最好的系統,以及嵌入式和其他效能關鍵程式碼。據信,它還可以用於 3D 影片遊戲。 
為什麼 Rust 如此受到全世界開發者的喜愛?首先,它允許您編寫最有可能永遠不會出錯的程式碼,因為編譯器會檢查所有內容。在編譯時在其他程式語言中檢測到的問題不會出現在 Rust 中。它也有利於編寫安全、省時的抽象,它的安全性幾乎消除了使用不變性的需要。 
Rust 也被認為是一種用於關注效能、速度和安全混合質量的新興創新領域的語言。 
由於證據就在布丁中:Rust 是一種流行的加密貨幣和區塊鏈程式語言。這是一個受歡迎的選擇,因為它易於理解和學習,並且提供了效能和安全性的獨特組合——後者是開發人員正在尋找的東西。Rust 還為這些開發人員提供了工具,以更快地開始交付他們的程式碼。選擇 Rust,加密貨幣不太可能崩潰,並且比使用另一種程式語言時更安全。在這裡您可以找到使用 Rust 的加密貨幣列表。 
 
  • 5.幾家大公司都在使用 Rust 

儘管 Rust 是一種相對年輕的語言,但在提高程式設計安全性和易用性方面,Rust 已經被開發人員認為是正確的一步。但不僅開發人員對 Rust 感興趣——公司,尤其是大型公司,也已經或計劃轉向 Rust。在 5 月份舉行的 AllThingsOpen 虛擬會議上,Ryan Levick(微軟雲開發倡導者)解釋說,Rust 作為一種語言是“業界正面解決幾個問題的最佳機會”。雖然微軟不打算很快停止用 C++ 編寫,但它的許多基礎設施正在慢慢轉移到 Rust。 
微軟並不是唯一一家意識到改用 Rust 語言的潛在好處的公司——使用 Rust 語言的公司包括 Dropbox、Sentry、亞馬遜和 Mozilla。 
 

結論
縱觀 Rust 可以提供的所有好處,該系統的受歡迎程度只會越來越高也就不足為奇了。Rust 都解決了一些問題,在保持與其他更知名的程式語言相同的效能水平的同時,在開發人員社群中引起了許多頭痛。隨著開發人員和 IT 領域的主要參與者都認識到 Rust 語言的潛力,可以毫不誇張地說 Rust 有朝一日將成為現代世界中最常用的程式語言之一。
 

相關文章