2022,越來越多的開發(fā)者會發(fā)現(xiàn),組長開始讓自己組用 Rust 來重構(gòu)項目了,即便是組長不 Push,身邊的同事好像也在悄咪咪地練習(xí)“borrow checker”,有時還會看見同事對著屏幕發(fā)飆:什么玩意兒,不倒騰了!
網(wǎng)友戲稱:只需要十行 Rust 代碼,就能讓你果斷放棄!
學(xué) Rust 難,已經(jīng)是一個共識。然而,那些吐槽難的同學(xué),往往會過一段時間重新操練起來,屢戰(zhàn)屢敗,屢敗屢戰(zhàn)。曾有一位資深的技術(shù)大牛吐槽:我放棄 Rust 已經(jīng)四次了!
Rust 讓人既愛又恨,恨得腦袋火冒三丈,直噴這代碼連鍵盤都不夠敲了,但又每次看到 Github 上的項目運(yùn)行得如此高效優(yōu)雅,讓人卻之不恭。
來源:知乎
1、Rust 魅力所在
企業(yè)對于 Rust 的吹捧已非一時興起。
以近日電商行業(yè)軟件開發(fā)商 Shopify 宣布擁抱 Rust 為例,Shopify 從一致性、性能、社區(qū)、生產(chǎn)力、安全等 5 個方面闡述了 Rust 對于其業(yè)務(wù)的吸引力和評估考量。
業(yè)務(wù)需求一致對口,性能高效,入門雖然難但開發(fā)還挺高效,社區(qū)驅(qū)動的開源項目,內(nèi)存安全?梢哉f Shopify 已經(jīng)把 Rust 的每個好處都說了個遍。
一致性:Shopify 的系統(tǒng)編程需要覆蓋多個領(lǐng)域,而且隨著時間的推移,這個數(shù)字可能會增加。它們包括高性能服務(wù)器、提高性能或連接到其他庫的 Ruby 擴(kuò)展,以及編譯到 Web Assembly。Shopify 訴求是對單一語言進(jìn)行投資,并將其應(yīng)用到眾多領(lǐng)域,這意味著要確定一種可以非常靈活使用的語言。
性能:Shopify 需要能夠高效、可持續(xù)地擴(kuò)展,以支持全球商業(yè)。Rust 為我們提供了可預(yù)測的本機(jī)代碼性能,包括對內(nèi)存使用的精細(xì)控制,這使得它適合于我們堆棧的最低級別。當(dāng)然,Rust 并不是唯一能夠提供或近似這種性能的語言。在此基礎(chǔ)上,還可以考慮使用現(xiàn)代 C++,如果垃圾收集器的分配行為和性能可以接受,則可以使用 Go。
社區(qū):Rust 語言和生態(tài)系統(tǒng)由一個健康的社區(qū)驅(qū)動,Shopify 計劃像 Ruby、Rails、React Native 和其他開源項目一樣參與這個社區(qū)。Rust 的 RFC 過程和治理結(jié)構(gòu)為包容性、深思熟慮的討論提供了強(qiáng)大的基礎(chǔ),以推動語言和工具的未來。我們的貢獻(xiàn)不僅有望使 Rust 在 Shopify 的使用中更加高效,而且還將改善所有 Rust 開發(fā)人員的工作。這也是 Shopify 加入 Rust 基金會的原因。我們希望支持 Rust 優(yōu)秀的治理模式和“Rust commons”的維護(hù),并將 Shopify 的知識和觀點(diǎn)帶入更大的 Rust 對話中。
生產(chǎn)力:在某些圈子里,Rust 以難以學(xué)習(xí)和使用而聞名,但 Shopify 內(nèi)部和外部的開發(fā)人員發(fā)現(xiàn),在最初的學(xué)習(xí)期之后,他們使用 Rust 構(gòu)建起來非常高效和舒適。Rust 還有一個強(qiáng)大的庫生態(tài)系統(tǒng)(“crates”)和良好的 IDE 集成工具,當(dāng)然還有非常好的編譯器錯誤消息。類型和宏系統(tǒng)的強(qiáng)大功能允許非常有表現(xiàn)力的 API 和語法,將開發(fā)人員的精力集中在表達(dá)他們的意思上,而不是在頭腦中玩弄大量的狀態(tài)和不變量。Go 在這里也有很好的聲譽(yù),C 和 C++ 就不那么好了。
安全:Rust 提供了許多讓編譯器幫助確保程序正確的工具,包括它們安全地管理內(nèi)存,并且可以“無畏地并行”。隨著 Shopify 對 Rust 的使用越來越復(fù)雜,將找到更多的方法來使用 Rust 的類型系統(tǒng)和安全規(guī)則來保持系統(tǒng)中的不變量。從我們最初的項目中,我們發(fā)現(xiàn)與我們評估的其他語言相比,Rust 在編譯時而不是運(yùn)行時暴露更多的錯誤。Rust 開發(fā)者經(jīng)常說“部署沒問題”,原因就在于此。
2、背后推手
Rust 在編程語言界內(nèi)算是年輕一輩,但能在 Stack Overflow 開發(fā)者調(diào)查的“最受喜愛編程語言”評選項目中連續(xù)七年摘下桂冠,足以說明背后實力不俗。
這種實力,除了 Rust 本身的特質(zhì),更多的則來自于多家頂級大型公司或者名人的背書。
外界耳熟能詳?shù)目赡芤讓傥④洝?019 年 2 月發(fā)布報告稱 70% 的安全問題為內(nèi)存安全問題,為了解決安全問題,開始嘗試使用 Rust 來代替 C/C++ 重寫 Windows 組件;微軟的 DeisLabs 團(tuán)隊也選擇 Rust 來構(gòu)建 Kubernetes 工具 Krustlet,并稱 Rust 比 Go 更適合 Kubernetes 的開發(fā) 。
再比如 Facebook: 從 2016 年開始使用 Rust,當(dāng)時啟動了一個名為 Mononoke 的重寫項目;有 Mononoke 項目作為 Rust 語言是可行的,2019 年內(nèi)部 Rust 開發(fā)團(tuán)隊達(dá)到了 100 人,并開始應(yīng)用于 Diem 區(qū)塊鏈項目;2020 年在內(nèi)部成立了 Rust 開發(fā)者體驗團(tuán)隊,繼續(xù)為 Rust 社區(qū)做貢獻(xiàn),并支持內(nèi)部 Rust 項目開發(fā) 。
還有谷歌:2016 年開始開發(fā)的 Fuchsia 操作系統(tǒng),在 2020 年 12 月首次亮相于 google open source,其中 22% 的代碼為 Rust 編寫 。
值得一提的是,安全的語言特性與區(qū)塊鏈的特性天生有重合性,因此區(qū)塊鏈也成為較早引入 Rust 語言的領(lǐng)域之一。Gavin Wood 博士開發(fā)的 Parity 客戶端應(yīng)該是首個使用 Rust 的區(qū)塊鏈項目,于 2015 年推出,Parity Technologies 的產(chǎn)品還包括 Polkadot、substrate 等 。Parity 一經(jīng)發(fā)布在當(dāng)時引起了不小的轟動。
對了,Mozilla 作為 Rust 項目的孵化起源地,F(xiàn)ireFox 瀏覽器原本計劃全部用 Rust 重寫,但事與愿違,最后只完成了不到 10% 的比例,整個 Rust 項目就被砍掉了!不過正是因為被砍,才讓 Rust 得以有了今天遍地開花的局面。
許多技術(shù)圈內(nèi)的大佬對 Rust 也是推崇備至,Linux 便是其中之一。
由 Linux 基金會主辦的 2022 開源峰會上,Linus 宣布:Linux 開始擁抱 Rust!
不久,Azure CTO Mark Russinovich 甚至在 9 月呼吁停用 C/C++,建議使用 Rust,一時引起網(wǎng)友熱議。
而時任微軟首席工程師的 Nick Cameron 在個人博客經(jīng)常看到 Rust 的字眼,并給出了許多中肯的 Rust 發(fā)展建議。
甚至 Python 的創(chuàng)始人 Guido van Rossum,不惜自損 Python 4.0 也要夸一夸 Rust。Guido 表示 Python 4.0 很難看到曙光,并認(rèn)為 Rust 是一種迷人的語言,幾乎可以完美地處理內(nèi)存管理問題。
視線拉回國內(nèi),華為、阿里、百度、字節(jié)等企業(yè)都已經(jīng)入局了 Rust。華為作為國內(nèi)唯一 Rust 基金會創(chuàng)始成員,可以說在 Rust 社區(qū)相當(dāng)活躍,比如開發(fā)了代發(fā)度量工具 Tokei、Cargo-Geiger ,同時嘗試將 Rust 應(yīng)用于開源項目:StratoVirt 是 openEuler 上的企業(yè)級虛擬化平臺,面向云數(shù)據(jù)中心,實現(xiàn)了一套架構(gòu)統(tǒng)一支持虛擬機(jī)、容器、Serverless 三種場景。此外,華為還發(fā)起了 Rusted AI 的非商業(yè)組織,推動 Rust 在 AI 領(lǐng)域的應(yīng)用落地 。
而字節(jié)跳動飛書團(tuán)隊則從 2017 年開始引入 Rust,飛書客戶端非 UI 部分是由 Rust 跨平臺實現(xiàn) ;2021 年 5 月開源了 rsmpeg 項目(一個 FFmpeg 的庫),也是采用 Rust 作為主要語言。
阿里則在云原生方面加碼了 Rust 的投入,比如 11 月,Nacos 多語言體系中迎來了 Rust 版本。
3、2023,Rust 值得再次拾起嗎?
值得,當(dāng)然值得。不管是趨勢還是現(xiàn)實,Rust 的價值已經(jīng)十分清晰。
首先從流行度上而言,Stack Overflow開發(fā)者調(diào)查以及 Rust 的年度調(diào)查都在表明使用 Rust 作為工作語言的占比正在持續(xù)提高,這種慣性一旦養(yǎng)成,就會成為當(dāng)年 Java 風(fēng)靡全球之勢。
此外還是 Rust 基金會的助力,這種趨勢會越來越快。據(jù)悉,Rust 基金會的創(chuàng)始成員承諾在 2 年內(nèi),提供每年超過一百萬美元的預(yù)算,用于 Rust 項目的維護(hù)、開發(fā)和推廣。
其次,Rust 代表著一種“前衛(wèi)”的編程理念。軟件性能的提升總是滯后于硬件性能的提升。Rust 這種基于多核編程的理念,將對性能的低級(low-level)控制與現(xiàn)代語言功能結(jié)合在一起,語法上類似于 C++,但是又可以保證內(nèi)存安全,足以讓它在未來編程界站穩(wěn)腳跟。
并且,Rust 陸續(xù)提出了“沒有數(shù)據(jù)爭用的并發(fā)性”、“沒有垃圾回收的內(nèi)存安全性” 和 “無懼駭客” 等引人矚目的概念,將無數(shù)極客大牛吸引聚攏在其項目中,不斷演進(jìn),呈現(xiàn)出越來越開放和健康的社區(qū)生態(tài)。
此外,Rust 還代表了一種新的、開源項目的協(xié)作方式:Rust 項目中的決策權(quán)是唯一委派和分配的,核心團(tuán)隊擁有更多特權(quán)。
最后,需求就在那里,如果說以前,領(lǐng)導(dǎo)讓做 Rust 重構(gòu)是為了講故事,自己學(xué) Rust 是為了?,但現(xiàn)如今的 Rust 的應(yīng)用場景愈發(fā)明晰:區(qū)塊鏈開發(fā)、嵌入式開發(fā)、分布式、云原生、WASL、GUI 等等已經(jīng)到處可以看到它的身影。
之前一種語言單挑多個領(lǐng)域的夢想,Java 嘗試過,但夢碎了,Rust 卻成為了新的希望,Shopify 等為代表的公司評估它與自身的業(yè)務(wù)十分契合,就是一個例子。
正如一位開發(fā)者所評論的:
Rust 在大型企業(yè)環(huán)境中的一大優(yōu)勢是它真的非常通用,能夠用一種語言替換多種語言。Rust 真的可以做到 C/C++ 所能做到的一切,Java 所能做的一切,大部分 JavaScript 所能做到(隨著 WASM 情況的改善)。這個一站式編程語言商店是 Java 的夢想,但嵌入式 Java 的失敗和 Java 小程序的失敗扼殺了這個夢想。Rust 有希望復(fù)活它。
4、難學(xué):門檻如何降低
Rust 初學(xué)者經(jīng)常寫到一半,腦海中會出現(xiàn)一種聲音:何苦為難自己呢?比如下面這位朋友——
本來想拿 Rust 寫一個集成業(yè)務(wù)邏輯的 API gateway,結(jié)果被 future 的那些個 error 轉(zhuǎn)來轉(zhuǎn)去搞得煩不勝煩,想一想發(fā)現(xiàn)這玩意兒又沒狀態(tài)我折騰它有個屁用,所以拿 node 隨便搞了搞就上線了。
Rust 學(xué)習(xí)曲線陡峭得厲害是公認(rèn)的。每每一到挫敗之時,Go、C#、Crystal、Dart 就成了它的替代品。許多開發(fā)者甚至學(xué)習(xí)了N個月也搞不明白借用檢查器。
因此,即使 Rust 能產(chǎn)生十分高效的代碼,公司也會對他們的開發(fā)者使用它的生產(chǎn)力持懷疑態(tài)度。
最大的問題是,Rust 是否會被技術(shù)水平較低的程序員接受,特別是在其復(fù)雜性不斷增加的情況下。Rust 的教學(xué)和培訓(xùn)將是關(guān)鍵。
習(xí)慣是需要培養(yǎng)的,就像垃圾收集、運(yùn)行時異常、函數(shù)式編程這些陌生的概念一樣,是一個不斷磨合與適應(yīng)的過程。
我們可以看到 Rust 方面一直在推廣在學(xué)習(xí)方面不遺余力,從社區(qū)的活躍度,教程的補(bǔ)充等等。此外,Linux 基金會也在如何用 Rust 編寫內(nèi)核模塊方面發(fā)布了教程。
近期,一位有心之人就利用 OpenAI ChatGPT 學(xué)習(xí) Rust 。有位作者嘗試和它做一些有關(guān) Rust 方面的交流,回答的可以說相當(dāng)可以了。比如:
編寫一個讀取文件內(nèi)容的程序并為每一行添加詳細(xì)的注釋
給它源碼和編譯器報的錯誤,他給了更清晰的解釋并幫忙修復(fù)了
問了一個rust-anlyzer filed to discover workspace 這樣的問題,ChatGPT給予了詳細(xì)的解決辦法。后面甚至讓ChatGPT幫忙寫了一個完整的命令行程序
人之為學(xué)有難易乎?學(xué)之,則難者亦易矣;不學(xué),則易者亦難矣。Rust 虐我千百遍,我待 Rust 如初戀!共勉!
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請謹(jǐn)慎對待。投資者據(jù)此操作,風(fēng)險自擔(dān)。
2024年的Adobe MAX 2024發(fā)布會上,Adobe推出了最新版本的Adobe Creative Cloud。
奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。
“以前都要去窗口辦,一套流程下來都要半個月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進(jìn)了21600元。
華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準(zhǔn)的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來實質(zhì)性的幫助,雙十一期間低至2799元,性價比很高,簡直是創(chuàng)作者們的首選。
9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會——工業(yè)互聯(lián)網(wǎng)標(biāo)識解析專題論壇在沈陽成功舉辦。