新聞中心
一直被人詬病學習門檻太高的Rust語言,此次公布的規(guī)劃目標也極其明確,未來很有可能吸引更多的開發(fā)者學習和使用這門語言。本文將對Rust語言的特點、優(yōu)劣勢、使用現(xiàn)狀等情況進行梳理,希望能夠?qū)Υ蠹矣兴鶐椭?/p>

十載專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站定制,個人網(wǎng)站制作服務,為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設計流程、步驟,成功服務上千家企業(yè)。為您提供網(wǎng)站建設,網(wǎng)站制作,網(wǎng)頁設計及定制高端網(wǎng)站建設服務,專注于成都企業(yè)網(wǎng)站定制,高端網(wǎng)頁制作,對成都辦公空間設計等多個行業(yè),擁有豐富的網(wǎng)站制作經(jīng)驗。
在最新一期的TIOBE 4月編程語言排行榜中,Rust語言位列第28名。
TIOBE 4月編程語言排行榜第1-20名
TIOBE 4月編程語言排行榜第21-30名
Rust 2024路線圖曝光
Rust 2024路線圖包含三大目標,首先就是降低學習門檻:Lang Team 希望在新版本中能夠簡化程序,使開發(fā)者只需處理其領域的固有復雜性,不再需要處理Rust的意外復雜性。
針對這一愿景,該團隊提出了四個目標:
- 更精確的分析,更少的繁瑣:通過改進借用檢查器、類型推理等,使編譯器能夠更好地識別代碼是否正確。識別并消除 "boilerplate" 模式,例如到處復制粘貼同一組 where。
- 更容易、更直接地表達代碼的意圖:在必要時擴展語言,以便更直接地表達您希望代碼執(zhí)行的操作,例如通過語法糖的形式(如 let-else),或者擴展類型系統(tǒng)(如泛型關聯(lián)類型)。
- 改進異步支持:將 async-await 支持擴展到當前的 "MVP" 之外,如traits 中的 async fns、async drop 等特性。
- 讓 dyn Trait 更有用:拓寬可用于 dyn 的特性集,讓使用 dyn 更接近于使用泛型。
其次是擴展生態(tài)系統(tǒng):Lang Team 表示,有很多事情是庫作者不能做的,或者不容易做的。比如他們無法控制用戶看到的錯誤信息,或者部署一個需要特殊選擇才能使用的“不穩(wěn)定”特性。因此,該團隊希望通過幫助管理功能的生命周期或擴展庫的功能,使庫作者能夠更好地為用戶服務。
最后是Rust項目擴展:為了盡可能使Rust發(fā)揮作用,確保Rust的質(zhì)量、穩(wěn)定性和整體一致性,該團隊希望新版本能夠及時查看狀態(tài)、明確的所有者和溝通、具有工具支持的高效開放的流程。
目前距離Rust2024還為時尚早,Rust的路線圖有可能隨著時間的推移,不斷進行優(yōu)化升級。
目前來看,Rust的用戶群體不斷壯大,有數(shù)百家公司使用Rust進行開發(fā),比如 Dropbox、 Yelp 和 Cloudflare。作為一門發(fā)展趨勢良好的編程語言,Rust的特點還是非常突出的。
特征:C在玩刀,Rust在玩跑酷
Rust的主要特征是運行速度快、內(nèi)存利用率高,它沒有運行時或垃圾收集器,它適合用在對性能要求高的關鍵的服務,它可以在嵌入式設備上運行,并且很容易與其他語言集成。在未來,Rust語言的速度快、占用內(nèi)存少等特點,將使我們能夠更省力的編寫代碼,這類語言將變得更加重要。
可靠性:Rust 豐富的類型系統(tǒng)和所有權模型保證了內(nèi)存和線程的安全,并能夠在編譯時消除許多錯誤。
生產(chǎn)力:Rust 有很好的文檔,提供了一個非常友好的編譯器,錯誤信息提示非常友好。反觀C和C++代碼的編譯器提示消息則是出了名的難以理解。如果你想學習系統(tǒng)編程,使用“rustc”編譯器做可以讓你不用擔心內(nèi)存安全而能夠?qū)W⑵渌氖虑椤?/p>
正如一位著名的程序員曾經(jīng)說過:Pascal就像穿著緊身衣,C就像在玩刀,而C++就像在玩弄燃燒的電鋸。在這個比喻中,Rust就像是穿著保護裝備懸掛在繩子上做跑酷運動。看起來有點可笑,但是可以用它做各種很酷的動作而不傷害自己。
效率:先抑后揚、后發(fā)制人
關于Rust的效率問題,主要從學習、運行、開發(fā)三個維度進行考量。
1、學習效率
眾所周知,Rust的學習曲線陡峭,隨著學習的不斷深入,你會逐漸發(fā)現(xiàn) Rust 之難,不在于很容易學到的語言特性,而在于:
- 實踐中如何融會貫通的運用
- 遇到問題(生命周期、借用錯誤、自引用等)時如何迅速正確地解決
- 大量的標準庫方法記憶及熟練使用,這是保證開發(fā)效率的關鍵
- 心智負擔較重,特別是初中級階段時
2、運行效率
得益于各種零抽象開銷、深入底層的優(yōu)化潛力、優(yōu)質(zhì)的標準庫和三方庫實現(xiàn),Rust具備非常優(yōu)秀的性能,與C語言、C++是同一個級別。
Rust還有一個極大的好處:只要按照正確的方式使用Rust,無需性能優(yōu)化,就能實現(xiàn)非常優(yōu)秀的表現(xiàn)?,F(xiàn)在有不少用Rust重寫的工具、平臺都超過了原來用C、C++實現(xiàn)的版本,可以說是將老前輩拍死在沙灘上,儼然成為一種潮流。
3、開發(fā)效率
Rust的開發(fā)效率可以用先抑后揚來形容,在剛開始上手寫項目時,你的開發(fā)速度將顯著慢于Go、Java等語言,但等你開始熟悉標準庫常用的方法,開發(fā)效率將大幅提升,甚至形成“肌肉記憶”后,開發(fā)效率將不會慢于這些語言,而且原生就能寫出高質(zhì)量、安全、高效的代碼。
益處:個人和團隊“變強”利器
對個人的好處
首先,學習Rust語言,可以使你成為更好的程序員。要學好Rust,你需要深入理解內(nèi)存、堆棧、引用、變量作用域這些其它高級語言往往不會深入接觸的內(nèi)容,同時Rust會通過語法、編譯器和clippy這些靜態(tài)檢查工具半幫助半強迫的讓你成為更優(yōu)秀的程序員,寫出更好的代碼。
與此同時,當你掌握了Rust,你自發(fā)性的就會想要去做一些更偏底層的工作,這些都可以幫助你更加了解操作系統(tǒng)、網(wǎng)絡、性能優(yōu)化等底層知識,也會間接或者直接地接觸到各種算法、數(shù)據(jù)結(jié)構實現(xiàn)。
慢慢的,你就成為那個更好的程序員了,也是更優(yōu)秀的自己。
其次,學習Rust語言,可以增加不可替代性。這里需要說明一下,語言難學,其實也有好處。一旦掌握,你將具備較強的不可替代性,而不再是一個簡單的工具人角色。看看現(xiàn)在內(nèi)卷嚴重的Java,工具人有多少?一個人離職,另外一個人立刻就能替補上。
事實上,這對個人和公司是一種雙贏,公司收獲了更優(yōu)秀的程序員(不可否認的是Rust程序員普遍水平很高,畢竟都是有很好的其他語言基礎、也很有追求的自驅(qū)性人才),而個人也收獲了更穩(wěn)定的工作環(huán)境甚至是更高的收入。
對團隊的好處
客觀來講,Rust語言的代碼質(zhì)量其實還是相當不錯的。開發(fā)者在review時并不用擔心潛在的各種坑,因此可以實現(xiàn)快速的開發(fā)、review、merge流程。
由于Rust語言擁有強大的編譯器和語言特性,其代碼自然就會比其他語言更少出現(xiàn)Bug。同時Rust擁有非常完善的工具鏈、最好的包管理工具。種種因素疊加在一起,決定了Rust非常適合大型開發(fā)者團隊的協(xié)作開發(fā)。
也許Rust在開發(fā)速度上不是最快的,但是從開發(fā)+維護的角度來看,這個成本絕對是各個語言中最小的之一。還有一點很重要,團隊如果招到一位優(yōu)秀的Rust程序員,他會帶動周圍的人,一起慢慢優(yōu)秀(優(yōu)秀的Rust程序員較好辨別,門檻低的語言就沒有那么好辨別)??傊?,一位優(yōu)秀的程序員會給團隊帶來遠超他薪資的潛在回報和長遠收益。
相比其他語言,Rust的優(yōu)勢
由于篇幅有限,這里不做詳細對比,只是簡單介紹下Rust的優(yōu)勢,但也并不是說Rust就一定優(yōu)于這些語言,大家可以在評論區(qū)各抒己見。
C++
與C++相比,Rust的性能相差無幾,但是在安全性方面更優(yōu),特別是使用第三方庫時,Rust的嚴格要求會讓第三方庫的質(zhì)量明顯提高。
語言本身的學習,Rust的前中期學習曲線會更陡峭,但是對于未來使用場景和生態(tài)的學習,C++會更難、更復雜。
Java
除了部分純粹的數(shù)字計算性能,Rust的性能是全面領先于Java的,同時Rust占用內(nèi)存更小,因此如果想實現(xiàn)同等規(guī)模的服務,Rust所需的硬件成本顯然更低。
Python
性能方面Rust完勝,同時Rust對運行環(huán)境要求較低,從這兩點上就基本可以做出選擇了,因為Python和Rust的彼此適用面其實并不沖突。
Go
Rust語言表達能力更強,性能更高,同時線程安全方面Rust也更強,不容易寫出錯誤的代碼,包管理Rust也更好,Go雖然在1.10版本后提供了包管理,但目前還比不上Rust的。
使用現(xiàn)狀
- AWS從2017年開始就用Rust實現(xiàn)了無服務器計算平臺: AWS Lambda 和 AWS Fargate, 并且用Rust重寫了Bottlerocket OS和AWS Nitro系統(tǒng),這兩個是彈性計算云(EC2)的重要服務
- Cloudflare是Rust的重度用戶,DNS、無服務計算、網(wǎng)絡包監(jiān)控等基礎設施都與Rust密不可分
- Dropbox的底層存儲服務完全由Rust重寫,達到了數(shù)萬PB的規(guī)模
- Google除了在安卓系統(tǒng)的部分模塊中使用Rust外,還在它最新的操作系統(tǒng)fuchsia中重度使用Rust
- acebook使用Rust來增強自己的網(wǎng)頁端、移動端和API服務的性能,同時還寫了Hack編程語言的虛擬機
- Microsoft使用Rust為Azure平臺提供一些組件,其中包括IoT的核心服務
- Github和npmjs.com,使用Rust提供高達每天13億次的npm包下載
- Rust目前已經(jīng)成為全世界區(qū)塊鏈平臺的選擇開發(fā)語言
- Tidb,國內(nèi)最有名的開源分布式數(shù)據(jù)庫
開發(fā)者對Rust的評價
@Graydon Hoare:
Rust 是一種采用過去的知識解決將來的問題的技術。
@Elon Musk
我是 Rust 粉絲,但我選擇 C/C++。
@wenq1:
給高手增加了自律的工具,給小白降低了造坑的幾率,給招聘增加了難度,給裝X增加了談資。
@beeplin:
Rust 前途無量,將來凡是有內(nèi)存的機器上一點都會跑Rust。因為上世紀七十年代 Joan Baez 女神就預言過:We both know what memories can bring, it can bring diamonds and rust.
女神順便還預言了 Rust 一定是免費的,因為:If you offer me diamonds and rust, I have already paid.
順便問一下,另一個 Diamonds 語言現(xiàn)在發(fā)明出來沒?期待......
@徐辰
Rust特別適合用來重寫那些讓你不爽的項目,給你換個姿勢再不爽一次的機會。
@feixu
編程語言多的是,沒必要為了一個排名10之外的語言操心,前十的語言足夠支持人類信息社會的發(fā)展,再多這是重復造輪子而已。
寫在最后
Rust是一門現(xiàn)代化的語言,融合了多種語言特性,且應用廣泛。在學習Rust的過程中,你會發(fā)現(xiàn)自己編程能力的不足,改正掉這些不足就會不斷提升自我。卓越的編程語言,可以將優(yōu)秀的設計、思想、成功的經(jīng)驗,自然而然地融入其中,使更多的使用者開闊眼界、拓展思路,受益無窮。
無GC、效率高、工程性強、強安全性等特點已經(jīng)得到工程派和學院派的認可,這些令Rust擁有了自己的特色和生存空間,社區(qū)的友善,生態(tài)的快速發(fā)展,大公司的跟進,都預示著Rust將有一個美好未來!
客觀來說,語言只是工具,我們不能神化它,但是可以給它一個機會。隨著Rust語言版本的不斷更迭,也許某一天你會發(fā)現(xiàn)它才是你的真愛!
標題名稱:Rust會在2024封神嗎?
分享鏈接:http://www.5511xx.com/article/dpeidcg.html


咨詢
建站咨詢
