自從嚐了 Rust,Java 突然不香了

雲棲號資訊:【點擊查看更多行業資訊
在這裏您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!


相對而言,Rust 是軟件行業中比較新的一門編程語言,如果從語法上來比較,該語言與 C++ 其實非常類似,但從另一方面而言,Rust 能更高效地提供許多功能來保證性能和安全。而且,Rust 還能在無需使用傳統的垃圾收集系統的情況下保證內存的安全性。

Rust 語言原本是 Mozilla 員工 Graydon Hoare 的私人項目,Graydon Hoare 當時是 Mozilla 研究部門的一位經驗豐富的 IT 科學家。2009 年,Mozilla 開始贊助這個計劃,並且在 2010 年首次揭露了它的存在。

隨着越來越多設計者的加入,他們爲該編程語言打造了瀏覽器引擎,並設計了 Rust 編譯器。Rust 編譯器是一款免費和開源的編程軟件,受 MIT 許可證和 Apache 許可證保護。自 2016 年起,由於許多開發人員開始選擇 Rust 而不是 Java 來進行棧溢出(Stack overflow)開發,Rust 語言開始成爲人們關注的焦點。

1. 爲什麼 Rust 受到許多開發者的青睞?

Rust 具有更強大的高併發性和高安全性,堪稱棧溢出開發的完美選擇。對函數的優秀控制能力和對內存佈局的完美運用,這讓Rust 成爲一種面向性能的編程語言。使用 Rust,你可以事半功倍地維護系統的完整性和安全性,此外,在語法、內存安全性以及內存管理上 Rust 也有着不俗表現。

語法易學

由於 Rust 與軟件行業中最流行的 C++ 語言的相似性以及其簡單的語法,讓學習和理解這門語言變得非常容易,甚至對於初學者而言也簡單易懂。Rust 的語法與 C 和 C++ 編程有很多相似之處,比如 if-else、while、for、return 等關鍵字的用法,而 Rust 中一些關鍵字還使用了模式匹配技術,這使得這門語言更容易上手。

儘管語法非常相似,就函數和功能方面而言,Rust 語言做得更廣更深。該編程語言的“廣”在於,你可以發現每個函數體中所包含的幾乎所有部分,包括控制流操作符,本身都是以表達式來呈現的。簡而言之,如果你已經掌握了 C 或 C++,在對這些編程語言的一般理解標準下,Rust 能幫助你完成更多工作。

內存安全

說到 Rust 的安全特性,它被專門設計爲保護內存安全,它在安全代碼中不允許使用空指針、懸垂指針和數據競爭。如果你需要對一個數據值進行初始化,那麼只能通過一系列固定的形式來完成初始化,它要求在函數開始前初始化所有的輸入。幾乎所有其他語言都允許指針以有效形式或 Null 形式存在,但 Rust 提供了一組額外的特性集來測試指針是否有值。

非傳統的特性

Rust 還引入了一些額外添加的語法和功能來管理函數本身的生命週期,另一個方面,如果需要編寫一些不安全的代碼,可以使用 Unsafe Rust 功能來對其進行限制,而所有權功能作用於所有的值,讓每個值只可以有一個唯一的所有權屬主,值的有效範圍和該唯一所有權屬主的有效範圍保持一致。值可以通過不可變引用關鍵字 &T 進行傳遞,也可以通過可變引用關鍵字 &mut T 來完成傳遞。Rust 編譯器在編譯時執行這些規則,並同時追蹤所有引用的有效性。

內存管理

Rust 不像 Java 或.Net 等編程語言那樣使用傳統的自動垃圾回收系統,Rust 也不像 Swift 或 C 等編程語言那樣使用自動引用系統。Rust 是通過其獨有的 RAII(資源獲取即初始化)規範方法來管理內存和其他資源的。此外,Rust 還使用最優引用計數方法來對內存分配進行優化,它還支持值的堆棧分配方法而非隱式裝箱轉換。

基於特徵(Traits)和結構化類型來實現

Rust 的系統是基於特徵(Traits)和結構化類型來實現的。在 Rust 中,類是用關鍵字 impl 來定義的。繼承和多態是由特徵提供的,並允許開發人員使用方法和混合實現。此外,結構化類型還用於定義不同類型的字段。實現和特徵不能進行自我定義,它們只能提供繼承數據。Rust 還支持接口繼承,但是隻允許使用複合集成來替代實現繼承。

2. Rust 代碼示例

Hello World 函數
fn main() { 
 
println!("Hello World!"); 
 
}

遞歸函數

fn factorial(i: u64) -> u64 { 
 
match i { 
 
0 => 1, 
 
n => n * factorial(n-1) 
 
}}

迭代函數

fn factorial(i: u64) -> u64 { 
 
let mut acc = 1; 
 
for num in 2..=i { 
 
acc *= num; 
 
} 
 
acc 
 
}

3. 當下使用 Rust 的主流項目

如果你知道現在有哪些軟件和應用程序是用 Rust 語言開發的,那麼你可能會比以前更加信賴這種編程語言。Rust 已經被用於開發很多赫赫有名的主流應用程序,有如下:

  • Mozilla Firefox 瀏覽器;
  • Discord(一款遊戲聊天應用);
  • Gecko 瀏覽器;
  • Tor 瀏覽器;
  • GNOME Fractal(一款即時消息客戶端);
  • 谷歌 Fuchsia 操作系統;
  • Redox OS;
  • Rocket Web Framework;
  • Servo(一款由 Mozilla 開發的網頁瀏覽器排版引擎);
  • Terminus DB(一款數據庫軟件);
  • Libra(數字貨幣);
  • OpenDNS;

4.Rust 的獨有特性

  • 十分接近基本的 C 和 C++ 編程語言和語法;
  • 做代碼分析時,即使對於第三方代碼閱讀器而言,也能輕鬆解析其中引用的語義;
  • 所有權系統設計非常合理,這也讓 Rust 變得特點鮮明;
  • 由於有邏輯內存分配、引用處理和內存管理等特性,Rust 內置的包管理器 Cargo 功能非常強大;
  • Rust 的編譯器自身功能令人驚歎。

5. Rust 比 Java 好在哪?

即使對於一箇中等水平的程序員而言,從 Java 切換到 Rust 也是一件很容易的事情。從一開始學習,你就會覺得概念和語法似曾相識,這能讓學習和編程都變得十分容易。因此,儘管 Rust 的確在技術上朝前邁出了一大步,但程序員在編程習慣上並不需要做出很大的調整。

使用 Rust 語言,你可以放心大膽地去探索各式類型新穎的複雜項目,而之前由於 Java 語言的複雜性,你不敢輕易嘗試這些項目。對於獨立開發者來說,完美的資源分配和良好的內存管理是必備之選,這的確是 Rust 一個較大的優點。

另一方面,如今所有行業都建設在 IT 基礎之上,無論你是否是一名專業編程人員,在任何需要挖掘創造力的技術領域,都需要藉助軟件編程。因此,複雜的編碼語言讓非專業程序員很難輕鬆地編寫出所需代碼,而 Rust 正好可以爲這類人提供解決方案。即使是業餘程序員和初學者,也可以輕鬆地學習並在邏輯上理解這門編程語言,從而磨礪自己的技能並在各行各業中去盡力發揮他們的創造力。

6. 結束語

從 Java 切換到 Rust 很簡單,而且順理成章,只需要在編程語言上做出一些調整就能完成切換。而且這種切換並不會讓你忘記所有已經掌握的 Java 技能,因此,如果需要,你還可以隨時切換回 Java。但是,如果你堅持使用 Rust 的話,你的生產效率將會變得更高,資源使用率將得到優化,代碼安全性會變得更好,而且最重要的一點是,你能享受Rust 提供的諸多額外特性和功能。

【雲棲號在線課堂】每天都有產品技術專家分享!
課程地址:https://yqh.aliyun.com/live

立即加入社羣,與專家面對面,及時瞭解課程最新動態!
【雲棲號在線課堂 社羣】https://c.tb.cn/F3.Z8gvnK

原文發佈時間:2020-07-10
本文作者:Sayan Dey
本文來自:“cocoachina”,瞭解相關信息可以關注“cocoachina”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章