<bdo id="vljxk"><rt id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt><rt id="vljxk"></rt><noframes id="vljxk"><rt id="vljxk"><delect id="vljxk"></delect></rt><noframes id="vljxk"><rt id="vljxk"></rt><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt>

當前位置:首頁 >  站長 >  編程技術 >  正文

為什么程序員如此鐘愛rust

 2020-07-01 17:37  來源: A5用戶投稿   我來投稿 撤稿糾錯

  阿里云優惠券 先領券再下單

2020年開發人員調查的結果再次出現,Rust再次成為參與該計劃的65,000位程序員中最受歡迎的語言之一。

自2016年以來,Rust一直排名第一,這表明使用它的開發人員都喜歡它。表示目前正在使用Rust的調查受訪者中有86.1%希望明年繼續使用Rust.這是Rust連續第五年榮登榜首,因此我們認為它必須有一些特別之處。

幾個月前,我們請Stack Overflow的主要Rust貢獻者Jake Goulding(又名Shepmaster)來解釋編碼人員為何如此喜愛用Rust語言,他這樣認為:“簡單來說,Rust解決了許多其他語言中存在的痛點,從而在有限的缺點下邁出了堅實的一步。”

對于Rust語言的評價也非常多,下面這些是網盾整理的Rust聊天室和Rust論壇上用戶們發表的評論,他涵蓋了Rust對于來自其他語言的編碼人員的好處(以及痛點)。我們希望聽到更多用戶的來信。

Rustaceans本身(包括Rust核心團隊的兩名成員)的評論:

“全新的成熟的功能。盡管某些語言只是在增加和簡化現有概念,但一些用戶認為Rust實際上是在用編程語言來做新的事情。而且它并不是為了炫耀而做新的事情。他們認為這些設計選擇解決了現代編程中的難題”

ZiCog:“Rust是我四十年來專門使用的唯一一種語言,它實際上引入了真正的新功能。就這樣,在沒有垃圾回收或復雜的系統運行時情況下,使用經過編譯的,真實的系統編程語言來保護內存使用的整個思想。"

DenysSéguret:“當我們發現一個非常強大的功能(例如在env變量的偽裝下讀取一個編譯上下文元素)可以如此優雅地完成,甚至在編譯時解決而沒有任何難看的不一致之處時,我們常常會充滿熱情。”

Janriemer: “pm工程師克里斯·迪金森(Chris Dickinson)的一句話對我來說是完美的總結,因為我當時也是這么想的,當時我還不知道這句話:‘我對Rust的最大稱贊是它很無聊,這是一個了不起的稱贊。Rust是一種編程語言,看起來像是由用戶體驗設計師開發的。他們對語言有清晰的愿景(原因),并在傾聽社區真正需求的同時,仔細選擇要添加到語言中的內容和返工的內容。沒有零散的結局,它是一個連貫的整體,可以完美地支持開發人員的工作流程。"

skysch:“我是從Haskell來到Rust的,我覺得Haskell是一種非常優雅和安全的語言。對我而言,最大的區別在于,Haskell中的高性能代碼和慣用的“干凈”代碼之間的差異比Rust中的差異更大。大多數Rust代碼看起來像大多數其他Rust代碼,即使它們表現良好。如果某人在與您通常執行的操作不同的庫和目標下進行操作,Haskell可能很快就會變得陌生。語法上的微小差異會導致行為上的巨大差異,Rust在該基準線上具有更高的一致性。”

PubNub的設計師Jay Oster:“除了安全和性能外,我們還有:

一般性的特質;

代數類型;

功能和命令式范式;

也許是世界上最好的依賴管理和構建工具;

實際上已經解決了“依賴苦痛的境況”問題;

對聯機的文檔,測試和基準的出色支持;

龐大且不斷發展的庫,抽象和工具生態系統;

程序宏指令;

FFI現有代碼的互操作性;

支持數十種平臺(更多功能即將推出!);

以及有益健康且確鑿的開發人員體驗。

Rust是勾選所有框的唯一語言:

內存安全

類型安全

無數據競爭

提前編譯

建立并鼓勵零成本抽象

最小的運行時間(沒有垃圾回收機制,沒有JIT編譯器,沒有VM)

低內存占用(程序在資源受限的環境中運行,例如小型微控制器)

定位裸機(例如,編寫OS內核或設備驅動程序;將Rust用作“高級匯編程序”)

daboross:“編譯時間保證:當我想到“靜態類型的語言”時,我想到的是Java,C#或類似TypeScript的東西。它們為編譯時保證您的代碼具有正確的類型,并將一系列錯誤從運行時轉移到編譯時。Rust在這方面更進一步!編譯時間檢查擴展到線程安全,所有權語義和驗證。

枚舉意味著在編譯時,我可以聲明數據可以存在的一組變體,并且在訪問該數據時,我不得不考慮所有可能性。特性意味著,當我的代碼是模板/通用的時,我具有所需的確切功能。

Rust非常向后兼容。我可以運行為Rust 1.0編寫的代碼。同樣,我可以編寫一些代碼,這些代碼使我知道下次更新Rust時不必更新。

而且不只是Rust本身-語言可用庫擁有相同的保證??紤]兩個事實:

1、在類型檢查中,僅考慮功能的簽名。無需依靠實現來確定請求是否正確(就像您在Scala或Haskell中所做的那樣)

2、廣泛的類型系統意味著對接口的不正確使用將成為類型錯誤,而不是運行時錯誤。

由于這兩件事,庫可以100%確保在發布新接口時它們保持向后兼容性。在Python,Java,Javascript或Scala或Haskell中,如果要確保保持向后兼容性,則需要特別注意事物的貫徹。在Rust中,它是免費的:如果您還沒有更改功能簽名,它將保持不變。”

Peter Varo:“Rust發現了一個好地方:它與C或C ++一樣基礎,具有所有這些優點(例如,控制,大小,速度等)。同時,它與Haskell具有驚人的功能傳承。它仍然是必須的,因此大多數人都可以使用,并且它與Python一樣靈活。例如,諸如“鴨式打字”之類的概念是在編譯時發生的(即特征邊界),但是它沒有過時的,面向對象的編程模型及其所有眾所周知的問題。

最后但并非最不重要的一點是,其中包括以下內容:簡潔的語法,少量語言提供的功能,標準庫的完整性以及其一致性和文檔質量,包括兩者初學者和高級用戶的學習材料都是影響因素。”

Blonk:“借助Rust / cargo,我可以專注于實際代碼,而不是構建系統。無需花一整天的時間來閱讀“另一個構建系統”。與Rust的交叉編譯是如此簡單和輕松,以至于當您閱讀如何做時,您會不禁想到“等等,我一定會丟失一些東西。”

當您不在Rust之外時,有些聽起來像是空口號,但是當您開始使用它時,您會驚喜地意識到有很多真相:

在花費時間來編譯代碼時,您可以節省時間,而不必調試代碼。

您不再擔心大型重構。重構的代碼編譯后,即可正常工作。

它確實確實迫使您執行適當的多線程處理(嗯,您仍然可以有死鎖,但是崩潰的錯誤類型要困難得多)。

我發現自己做的樣板代碼要少得多。以及我需要的樣板代碼,我通??梢詫⑵潆[藏在其他模塊中,以免妨礙實際的應用程序邏輯代碼.最常見的例子是錯誤類型轉換)。”

PubNub的設計師Jay Oster:“這就像在整個職業生涯中在完全黑暗的環境中徘徊,突然被兩個事物所點亮:

1、你不完美。你會犯錯誤。這些錯誤會給您帶來很多問題。

2、不必是這種方式。

我看到一個共同的異議,有些人宣稱它們實際上是完美的,并且確實編寫了完美的代碼,而且一切都是桃花心木,并且他們無法理解為什么其他所有人都對Rust如此感興趣。但是對于這只老山羊很明顯,這些人還沒有意識到問題不僅僅在于他們自己。其他人。這是規模經濟的問題。

換句話說,如果我有時間和精力去關注每一個細節,并且精心編寫每條漂亮的代碼,而不管語言或實現細節如何,我本人就可以孤立地編寫無缺陷且無錯誤的代碼。但這沒關系。一旦我開始依靠其他人編寫的代碼或新的貢獻者來進行修改,我所有所謂的完美保證現在都不符合現實。“按慣例正確性”無法擴展。

慣例將有缺點,并且將花費不切實際的時間和精力來嘗試使本來不應該存在的創可貼自動化。“啊哈!”現在意識到,通過將相同的約定直接烘焙到語言和編譯器中,實際上可以得到更強大的保證。

最重要的是,如果您愿意,您還可以獲得與微調的手寫程序集相當的性能。您可以吃蛋糕也可以吃!”

Daboross:“作為庫類的作者,復雜的特征/通用系統意味著我可以制作復雜但易于使用的界面。這些界面不能被錯誤地使用,這意味著我不必執行運行時檢查,并且我的用戶甚至不必考慮問題案例,因為他們無法編寫它們。

作為庫類的使用者,豐富而廣泛的模板生態系統使我能夠在廣泛的不同領域中編寫代碼,而無需深入研究每個領域的細節。我不需要知道JSON解析器或編寫器如何使用Serde,而且我的知識不足永遠不會成為bug的來源,因為我得到的是編譯時錯誤,而不是運行時錯誤。

使用Rust時,我真的感到很被照顧。從包升級到類型錯誤,再到傳遞接口不期望的字符串,再到隨機運行時錯誤,這些瑣碎的事情變得非常多,而我在Rust中完全沒有這種錯誤。我可以考慮一下算法!

申請創業報道,分享創業好點子。點擊此處,共同探討創業新機遇!

相關文章

熱門排行

信息推薦