譯者 | 布加迪
審校 | 重樓
Rust是一種系統(tǒng)編程語(yǔ)言,由于獨(dú)特的安全、性能和并發(fā)性支持,近年來(lái)備受關(guān)注。作為一名開(kāi)發(fā)人員,你可能想知道Rust是否適合下一個(gè)項(xiàng)目。我們在這篇博文中將探討2024年Rust流行背后的原因以及它如何改善你的開(kāi)發(fā)體驗(yàn)。
29歲的Graydon Hoare是Mozilla的一名程序員,他發(fā)現(xiàn)自己遇到了熟悉的敵人:一臺(tái)因軟件運(yùn)行崩潰而故障頻發(fā)的電梯。這對(duì)住在21樓的Hoare來(lái)說(shuō)不是什么新鮮事。這種不便引發(fā)了一個(gè)想法:一種新的編程語(yǔ)言。C++之類的現(xiàn)有語(yǔ)言提供了速度和效率,但也允許導(dǎo)致崩潰的內(nèi)存缺陷。Hoare知道這些缺陷是軟件漏洞的主要來(lái)源。與大多數(shù)可能只是詛咒爬樓梯的人不同,Hoare決定采取行動(dòng)。他開(kāi)始設(shè)計(jì)一種新的語(yǔ)言:Rust。
雖然開(kāi)發(fā)者喜歡Rust的原因有很多,但其流行的一個(gè)原因是人們?cè)絹?lái)越意識(shí)到C和C++語(yǔ)言的局限性。隨著更多的開(kāi)發(fā)人員面臨內(nèi)存安全和性能之類的問(wèn)題(這里我對(duì)Python和JS開(kāi)發(fā)人員表示抱歉),Rust獨(dú)特的安全、性能和并發(fā)支持變得越來(lái)越有吸引力。
Rust旨在防止常見(jiàn)的編程錯(cuò)誤,比如空指針解引用錯(cuò)誤、數(shù)據(jù)競(jìng)爭(zhēng)錯(cuò)誤和緩沖區(qū)溢出。這意味著代碼將更可靠,更不容易崩潰。
與其他編程語(yǔ)言相比,Rust的性能優(yōu)化(比如零成本抽象和編譯時(shí)評(píng)估)可以帶來(lái)更快的代碼執(zhí)行速度。它有助于為需要實(shí)時(shí)響應(yīng)的企業(yè)開(kāi)發(fā)軟件應(yīng)用程序。
Rust提供了一種安全、富有表現(xiàn)力的API用于處理線程和共享的數(shù)據(jù),從而讓用戶易于編寫(xiě)并發(fā)代碼。這有助于開(kāi)發(fā)易于擴(kuò)展的移動(dòng)應(yīng)用程序,不犧牲性能的情況下處理大型工作負(fù)載。
Rust可以用于開(kāi)發(fā)在多個(gè)平臺(tái)上運(yùn)行的移動(dòng)應(yīng)用程序,包括Windows、macOS和Linux。這使得它成為開(kāi)發(fā)跨不同環(huán)境使用的跨平臺(tái)應(yīng)用程序或庫(kù)的推薦選擇。
Rust生態(tài)系統(tǒng)可能需要改進(jìn)。隨著Rust不斷發(fā)展和成長(zhǎng),需要改進(jìn)的這些方面很可能會(huì)在未來(lái)的更新和開(kāi)發(fā)中得到解決。每種語(yǔ)言都存在在有些方面可能不理想或需要改進(jìn)。以下是Rust的一些潛在的弱點(diǎn)或局限性:
雖然Rust的標(biāo)準(zhǔn)庫(kù)很全面,但其對(duì)庫(kù)的支持可能不如Python或JavaScript等更成熟的語(yǔ)言來(lái)得全面。這使得用戶更難為其他語(yǔ)言通常可以處理的任務(wù)找到預(yù)構(gòu)建的庫(kù)或工具。
Rust是一種靜態(tài)類型語(yǔ)言,這意味著它可能不如Python或JavaScript等動(dòng)態(tài)類型語(yǔ)言來(lái)得靈活。這可能會(huì)使用戶更難處理某些類型的編程任務(wù)或特殊情況。
雖然Rust對(duì)面向?qū)ο缶幊?/span>(OOP)提供了一些支持,但不像Python或Java等語(yǔ)言那樣強(qiáng)大。這使得編寫(xiě)大型復(fù)雜的OOP應(yīng)用程序更具挑戰(zhàn)性。
雖然Rust對(duì)函數(shù)式編程有一定的支持,但不像Haskell或Lisp之類的語(yǔ)言那樣全面。這使得用戶更難編寫(xiě)純函數(shù)式程序或廣泛使用函數(shù)式編程模式。
雖然Rust對(duì)多線程有一定的支持,但可能不如C++或Java等語(yǔ)言中的支持來(lái)得強(qiáng)大。這使得編寫(xiě)復(fù)雜的多線程應(yīng)用程序更具挑戰(zhàn)性。
雖然Rust對(duì)泛型編程有一些支持,但可能不像Haskell或TypeScript這樣的語(yǔ)言那樣全面。這使得用戶更難編寫(xiě)能夠處理各種數(shù)據(jù)類型和模式的泛型程序。
雖然Rust有不斷壯大的工具和庫(kù)生態(tài)系統(tǒng),但工具支持可能不如Python或JavaScript等更成熟的語(yǔ)言來(lái)得全面。這使得將Rust用于處理需要大量工具支持的特定任務(wù)或項(xiàng)目變得更具挑戰(zhàn)性。
與Python或JavaScript等解釋性語(yǔ)言相比,Rust的編譯時(shí)評(píng)估有時(shí)會(huì)導(dǎo)致編譯時(shí)間較長(zhǎng)。雖然這可以通過(guò)優(yōu)化來(lái)緩解,但對(duì)于需要快速開(kāi)發(fā)周期的開(kāi)發(fā)人員來(lái)說(shuō),這仍然是一個(gè)需要考慮的問(wèn)題。
Rust注重零成本抽象和內(nèi)存安全會(huì)帶來(lái)高性能代碼;有必要理解性能受到各種因素的影響,包括算法效率、編譯器優(yōu)化和硬件體系結(jié)構(gòu)。Rust的性能優(yōu)勢(shì)并不具有普遍性,可能會(huì)因具體的用例和實(shí)現(xiàn)細(xì)節(jié)而異。
我的觀點(diǎn):要承認(rèn)Rust并不總是絕對(duì)最快的選擇。存在其他語(yǔ)言可能有優(yōu)勢(shì)的一些場(chǎng)景,比如簡(jiǎn)單的腳本任務(wù)和快速創(chuàng)建原型。
另一個(gè)常見(jiàn)的誤解是,Rust嚴(yán)格的內(nèi)存安全保證必然會(huì)帶來(lái)性能開(kāi)銷(xiāo)。雖然Rust的歸屬和借用體系確實(shí)引入了一些運(yùn)行時(shí)檢查以確保內(nèi)存安全,但這些檢查被設(shè)計(jì)得很小巧,常常在優(yōu)化過(guò)程中完全消除。事實(shí)上,與依賴廢料收集的語(yǔ)言相比,Rust的歸屬模式可以帶來(lái)更有效的內(nèi)存管理,從而在某些場(chǎng)景下獲得更好的性能。
我的觀點(diǎn):在高度優(yōu)化、緊湊的代碼段中,C等一些語(yǔ)言可能略有優(yōu)勢(shì),因?yàn)樗鼈?/span>針對(duì)內(nèi)存管理提供了更精細(xì)化的控制。
一些開(kāi)發(fā)人員認(rèn)為,Rust作為一種具有內(nèi)存安全特性的高級(jí)語(yǔ)言,無(wú)法實(shí)現(xiàn)與C或C++相同級(jí)別的低級(jí)性能。雖然Rust確實(shí)引入了C或C++中可能不存在的某些安全檢查,但該語(yǔ)言提供了一些機(jī)制,比如不安全塊,以便在必要時(shí)繞過(guò)這些檢查。此外,Rust的零成本抽象和與底層硬件直接集成使開(kāi)發(fā)人員能夠編寫(xiě)與傳統(tǒng)系統(tǒng)編程語(yǔ)言的性能相媲美的高度優(yōu)化的代碼。
我的觀點(diǎn):與現(xiàn)有的C/C++代碼庫(kù)集成時(shí),由于更易于協(xié)同操作,將C/C++用于特定模塊可能更有效。
Rust有許多工具可以幫助簡(jiǎn)化工作流程,并編寫(xiě)更好的代碼。下面是一些流行的工具:
1. Cargo:Rust的包管理器簡(jiǎn)化了依賴項(xiàng)管理,允許你輕松地安裝、管理和更新項(xiàng)目的依賴項(xiàng)。
2. Rust-lsp:Rust的語(yǔ)言服務(wù)器協(xié)議客戶軟件提供了實(shí)時(shí)錯(cuò)誤報(bào)告和語(yǔ)法高亮顯示功能,使編寫(xiě)和調(diào)試代碼變得更容易。
3. Rust Analyzer:這個(gè)靜態(tài)分析工具可以幫助你識(shí)別潛在的錯(cuò)誤,并深入了解代碼庫(kù)的性能、安全和并發(fā)性,從而提高代碼庫(kù)的質(zhì)量。
Rust有一個(gè)活躍的開(kāi)發(fā)人員社區(qū),他們?yōu)?/span>這種語(yǔ)言、庫(kù)和工具做出了貢獻(xiàn)。下面是一些有用的Rust入門(mén)資源:
Rust文檔:官方Rust文檔是學(xué)習(xí)Rust語(yǔ)法、特性和最佳實(shí)踐的綜合資源。
Rust subreddit:加入Reddit上的Rust社區(qū)來(lái)提出問(wèn)題、分享知識(shí)和參與討論。
以下是一些開(kāi)放的討論:
https://www.reddit.com/r/rust/comments/15pqmox/why_is_rust_programming_language_becoming_so/
https://www.reddit.com/r/rust/comments/1byqs19/can_rust_be_generic_over_synchronicity/
在線課程:Udemy、51CTO、Coursera和edX等網(wǎng)站提供了一系列Rust課程,涵蓋從入門(mén)主題到高級(jí)主題的各種主題。
1. 亞馬遜:亞馬遜使用Rust構(gòu)建其核心服務(wù),包括數(shù)據(jù)庫(kù)管理系統(tǒng)和內(nèi)容分發(fā)網(wǎng)絡(luò)。
2. Mozilla::Mozilla使用Rust構(gòu)建Firefox Web瀏覽器,充分利用其性能、安全和并發(fā)性特性。
3. Dropbox:Dropbox使用Rust構(gòu)建其文件存儲(chǔ)和共享服務(wù),充分利用該語(yǔ)言的可靠性和可擴(kuò)展性。
4. Linux:許多Linux發(fā)行版使用Rust構(gòu)建內(nèi)核和設(shè)備驅(qū)動(dòng)程序等基本的系統(tǒng)組件。
Rust軟件開(kāi)發(fā)的未來(lái)一片光明。它專注于內(nèi)存安全和消除錯(cuò)誤,解決了系統(tǒng)級(jí)編程、嵌入式系統(tǒng)及其他注重性能的領(lǐng)域中一個(gè)長(zhǎng)期存在的挑戰(zhàn)。雖然一些遺留系統(tǒng)可能依賴C或C++,但Rust能夠通過(guò)內(nèi)置的安全特性實(shí)現(xiàn)相當(dāng)的性能,因此成為引人注目的替代語(yǔ)言。不斷壯大的Rust社區(qū)以及豐富的庫(kù)和工具生態(tài)系統(tǒng),有助于縮短開(kāi)發(fā)周期、提高軟件可靠性。由于開(kāi)發(fā)人員注重安全和效率,Rust有望在塑造軟件開(kāi)發(fā)的未來(lái)方面發(fā)揮重要作用。
無(wú)論你在構(gòu)建新項(xiàng)目還是將現(xiàn)有項(xiàng)目遷移到Rust,我們都希望本文能夠提供有價(jià)值的見(jiàn)解和資源,幫助你取得成功。
原文標(biāo)題:Is Rust Programming Language Worth The Hype? Is The Hype a Bust or a Boom,作者:Gaurav Gurjar
本文鏈接:http://www.www897cc.com/showinfo-26-99023-0.htmlRust編程語(yǔ)言到底是不是炒作的噱頭?
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com