一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - 編程技術(shù) - 自從嘗了 Rust,Java 突然不香了

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

2020-07-06 23:14架構(gòu)頭條Sayan Dey 編程技術(shù)

相對(duì)而言,Rust 是軟件行業(yè)中比較新的一門(mén)編程語(yǔ)言,如果從語(yǔ)法上來(lái)比較,該語(yǔ)言與 C++ 其實(shí)非常類似,但從另一方面而言,Rust 能更高效地提供許多功能來(lái)保證性能和安全。

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

相對(duì)而言,Rust 是軟件行業(yè)中比較新的一門(mén)編程語(yǔ)言,如果從語(yǔ)法上來(lái)比較,該語(yǔ)言與 C++ 其實(shí)非常類似,但從另一方面而言,Rust 能更高效地提供許多功能來(lái)保證性能和安全。而且,Rust 還能在無(wú)需使用傳統(tǒng)的垃圾收集系統(tǒng)的情況下保證內(nèi)存的安全性。

Rust 語(yǔ)言原本是 Mozilla 員工 Graydon Hoare 的私人項(xiàng)目,Graydon Hoare 當(dāng)時(shí)是 Mozilla 研究部門(mén)的一位經(jīng)驗(yàn)豐富的 IT 科學(xué)家。2009 年,Mozilla 開(kāi)始贊助這個(gè)計(jì)劃,并且在 2010 年首次揭露了它的存在。

隨著越來(lái)越多設(shè)計(jì)者的加入,他們?yōu)樵摼幊陶Z(yǔ)言打造了瀏覽器引擎,并設(shè)計(jì)了 Rust 編譯器。Rust 編譯器是一款免費(fèi)和開(kāi)源的編程軟件,受 MIT 許可證和 Apache 許可證保護(hù)。自 2016 年起,由于許多開(kāi)發(fā)人員開(kāi)始選擇 Rust 而不是 Java 來(lái)進(jìn)行棧溢出(Stack overflow)開(kāi)發(fā),Rust 語(yǔ)言開(kāi)始成為人們關(guān)注的焦點(diǎn)。

Rust 官網(wǎng)鏈接:https://www.rust-lang.org/

1. 為什么 Rust 受到許多開(kāi)發(fā)者的青睞?

 

Rust 具有更強(qiáng)大的高并發(fā)性和高安全性,堪稱棧溢出開(kāi)發(fā)的完美選擇。對(duì)函數(shù)的優(yōu)秀控制能力和對(duì)內(nèi)存布局的完美運(yùn)用,這讓Rust 成為一種面向性能的編程語(yǔ)言。使用 Rust,你可以事半功倍地維護(hù)系統(tǒng)的完整性和安全性,此外,在語(yǔ)法、內(nèi)存安全性以及內(nèi)存管理上 Rust 也有著不俗表現(xiàn)。

語(yǔ)法易學(xué)

由于 Rust 與軟件行業(yè)中最流行的 C++ 語(yǔ)言的相似性以及其簡(jiǎn)單的語(yǔ)法,讓學(xué)習(xí)和理解這門(mén)語(yǔ)言變得非常容易,甚至對(duì)于初學(xué)者而言也簡(jiǎn)單易懂。Rust 的語(yǔ)法與 C 和 C++ 編程有很多相似之處,比如 if-else、while、for、return 等關(guān)鍵字的用法,而 Rust 中一些關(guān)鍵字還使用了模式匹配技術(shù),這使得這門(mén)語(yǔ)言更容易上手。

盡管語(yǔ)法非常相似,就函數(shù)和功能方面而言,Rust 語(yǔ)言做得更廣更深。該編程語(yǔ)言的“廣”在于,你可以發(fā)現(xiàn)每個(gè)函數(shù)體中所包含的幾乎所有部分,包括控制流操作符,本身都是以表達(dá)式來(lái)呈現(xiàn)的。簡(jiǎn)而言之,如果你已經(jīng)掌握了 C 或 C++,在對(duì)這些編程語(yǔ)言的一般理解標(biāo)準(zhǔn)下,Rust 能幫助你完成更多工作。

內(nèi)存安全

說(shuō)到 Rust 的安全特性,它被專門(mén)設(shè)計(jì)為保護(hù)內(nèi)存安全,它在安全代碼中不允許使用空指針、懸垂指針和數(shù)據(jù)競(jìng)爭(zhēng)。如果你需要對(duì)一個(gè)數(shù)據(jù)值進(jìn)行初始化,那么只能通過(guò)一系列固定的形式來(lái)完成初始化,它要求在函數(shù)開(kāi)始前初始化所有的輸入。幾乎所有其他語(yǔ)言都允許指針以有效形式或 Null 形式存在,但 Rust 提供了一組額外的特性集來(lái)測(cè)試指針是否有值。

非傳統(tǒng)的特性

Rust 還引入了一些額外添加的語(yǔ)法和功能來(lái)管理函數(shù)本身的生命周期,另一個(gè)方面,如果需要編寫(xiě)一些不安全的代碼,可以使用 Unsafe Rust 功能來(lái)對(duì)其進(jìn)行限制,而所有權(quán)功能作用于所有的值,讓每個(gè)值只可以有一個(gè)唯一的所有權(quán)屬主,值的有效范圍和該唯一所有權(quán)屬主的有效范圍保持一致。值可以通過(guò)不可變引用關(guān)鍵字 &T 進(jìn)行傳遞,也可以通過(guò)可變引用關(guān)鍵字 &mut T 來(lái)完成傳遞。Rust 編譯器在編譯時(shí)執(zhí)行這些規(guī)則,并同時(shí)追蹤所有引用的有效性。

內(nèi)存管理

Rust 不像 Java 或.Net 等編程語(yǔ)言那樣使用傳統(tǒng)的自動(dòng)垃圾回收系統(tǒng),Rust 也不像 Swift 或 C 等編程語(yǔ)言那樣使用自動(dòng)引用系統(tǒng)。Rust 是通過(guò)其獨(dú)有的 RAII(資源獲取即初始化)規(guī)范方法來(lái)管理內(nèi)存和其他資源的。此外,Rust 還使用最優(yōu)引用計(jì)數(shù)方法來(lái)對(duì)內(nèi)存分配進(jìn)行優(yōu)化,它還支持值的堆棧分配方法而非隱式裝箱轉(zhuǎn)換。

基于特征(Traits)和結(jié)構(gòu)化類型來(lái)實(shí)現(xiàn)

Rust 的系統(tǒng)是基于特征(Traits)和結(jié)構(gòu)化類型來(lái)實(shí)現(xiàn)的。在 Rust 中,類是用關(guān)鍵字 impl 來(lái)定義的。繼承和多態(tài)是由特征提供的,并允許開(kāi)發(fā)人員使用方法和混合實(shí)現(xiàn)。此外,結(jié)構(gòu)化類型還用于定義不同類型的字段。實(shí)現(xiàn)和特征不能進(jìn)行自我定義,它們只能提供繼承數(shù)據(jù)。Rust 還支持接口繼承,但是只允許使用復(fù)合集成來(lái)替代實(shí)現(xiàn)繼承。

2. Rust 代碼示例

 

Hello World 函數(shù)

  1. fn main() { 
  2.  
  3. println!("Hello World!"); 
  4.  

遞歸函數(shù)

  1. fn factorial(i: u64) -> u64 { 
  2.  
  3. match i { 
  4.  
  5. 0 => 1
  6.  
  7. n => n * factorial(n-1
  8.  
  9. }} 

迭代函數(shù)

  1. fn factorial(i: u64) -> u64 { 
  2.  
  3. let mut acc = 1
  4.  
  5. for num in 2..=i { 
  6.  
  7. acc *= num; 
  8.  
  9.  
  10. acc 
  11.  

3. 當(dāng)下使用 Rust 的主流項(xiàng)目

 

如果你知道現(xiàn)在有哪些軟件和應(yīng)用程序是用 Rust 語(yǔ)言開(kāi)發(fā)的,那么你可能會(huì)比以前更加信賴這種編程語(yǔ)言。Rust 已經(jīng)被用于開(kāi)發(fā)很多赫赫有名的主流應(yīng)用程序,有如下:

  1. Mozilla Firefox 瀏覽器;
  2. Discord(一款游戲聊天應(yīng)用);
  3. Gecko 瀏覽器;
  4. Tor 瀏覽器;
  5. GNOME Fractal(一款即時(shí)消息客戶端);
  6. 谷歌 Fuchsia 操作系統(tǒng);
  7. Redox OS;
  8. Rocket Web Framework;
  9. Servo(一款由 Mozilla 開(kāi)發(fā)的網(wǎng)頁(yè)瀏覽器排版引擎);
  10. Terminus DB(一款數(shù)據(jù)庫(kù)軟件);
  11. Libra(數(shù)字貨幣);
  12. OpenDNS;

4. Rust 的獨(dú)有特性

 

  • 十分接近基本的 C 和 C++ 編程語(yǔ)言和語(yǔ)法;
  • 做代碼分析時(shí),即使對(duì)于第三方代碼閱讀器而言,也能輕松解析其中引用的語(yǔ)義;
  • 所有權(quán)系統(tǒng)設(shè)計(jì)非常合理,這也讓 Rust 變得特點(diǎn)鮮明;
  • 由于有邏輯內(nèi)存分配、引用處理和內(nèi)存管理等特性,Rust 內(nèi)置的包管理器 Cargo 功能非常強(qiáng)大;
  • Rust 的編譯器自身功能令人驚嘆。

5. Rust 比 Java 好在哪?

 

即使對(duì)于一個(gè)中等水平的程序員而言,從 Java 切換到 Rust 也是一件很容易的事情。從一開(kāi)始學(xué)習(xí),你就會(huì)覺(jué)得概念和語(yǔ)法似曾相識(shí),這能讓學(xué)習(xí)和編程都變得十分容易。因此,盡管 Rust 的確在技術(shù)上朝前邁出了一大步,但程序員在編程習(xí)慣上并不需要做出很大的調(diào)整。

使用 Rust 語(yǔ)言,你可以放心大膽地去探索各式類型新穎的復(fù)雜項(xiàng)目,而之前由于 Java 語(yǔ)言的復(fù)雜性,你不敢輕易嘗試這些項(xiàng)目。對(duì)于獨(dú)立開(kāi)發(fā)者來(lái)說(shuō),完美的資源分配和良好的內(nèi)存管理是必備之選,這的確是 Rust 一個(gè)較大的優(yōu)點(diǎn)。

另一方面,如今所有行業(yè)都建設(shè)在 IT 基礎(chǔ)之上,無(wú)論你是否是一名專業(yè)編程人員,在任何需要挖掘創(chuàng)造力的技術(shù)領(lǐng)域,都需要借助軟件編程。因此,復(fù)雜的編碼語(yǔ)言讓非專業(yè)程序員很難輕松地編寫(xiě)出所需代碼,而 Rust 正好可以為這類人提供解決方案。即使是業(yè)余程序員和初學(xué)者,也可以輕松地學(xué)習(xí)并在邏輯上理解這門(mén)編程語(yǔ)言,從而磨礪自己的技能并在各行各業(yè)中去盡力發(fā)揮他們的創(chuàng)造力。

6. 結(jié)束語(yǔ)

 

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品卡1卡二卡3卡四卡 | 国产精品成人免费观看 | a亚洲天堂 | 91精品综合 | 情趣内衣在线观看 | 国产视频久久久 | 欧美成人免费观看国产 | 俄罗斯毛片免费大全 | 草草草视频 | 国产精品一二区 | 亚洲春黄在线观看 | 久久精品国产在热亚洲 | 国产精品亚洲专区在线播放 | 亚洲品质自拍视频网站 | 四虎影院2022 | 天美传媒tm0065 | 欧美怡红院视频一区二区三区 | 爱操综合 | 精品一区久久 | 18未年禁止免费观看 | 国产va免费精品高清在线观看 | 闺蜜高h | 日本aaaa级| 久久视频这里只精品99热在线观看 | 亚洲无总热门 | 小sao货水好多真紧h的视频 | 亚洲视频1区 | 天色综合 | 成人亚洲欧美综合 | 成人福利在线视频免费观看 | 欧美兽皇另类 | 麻豆性视频 | 色爱导航 | 亚洲男人天 | 99视频精品国在线视频艾草 | 久久99精国产一区二区三区四区 | 国产精品区一区二区免费 | 国产免费视频 | 国产精品成人免费福利 | 国产精品欧美亚洲韩国日本99 | 亚洲精品色婷婷在线影院麻豆 |