<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          可信而可靠,關(guān)于Rust 的學(xué)習(xí)

          共 2709字,需瀏覽 6分鐘

           ·

          2023-09-18 15:54

          最早接觸到Rust是在幾年前的一次技術(shù)大會(huì)上, 黃東旭說TiKV 是用Rust 語言編寫的, 引起了我的一些興趣,但只是保持關(guān)注而已。我一直認(rèn)為每一種編程語言都有著各自的典型應(yīng)用領(lǐng)域, 也有著各自的編程范式,沒有最好的編程語言(參見《PHP是最好的編程語言嗎?》), 但存在最適合當(dāng)前的問領(lǐng)域的編程語言。

          個(gè)人認(rèn)為,所謂全棧工程師,至少要掌握4種編程語言——C/C++,Java, JavaScript 和Python。作為一個(gè)半吊子全棧工匠,我還涉足過Go,Scala,Erlang,PHP和Perl,Shell 編程是必備技能,不放在編程語言的行列。

          直到去年,自己進(jìn)入操作系統(tǒng)的研發(fā)領(lǐng)域,尤其是與操作系統(tǒng)內(nèi)核相關(guān)的那些工作,才著手系統(tǒng)地學(xué)習(xí)Rust編程語言。C/C++ 一直是系統(tǒng)編程的首選,但由于內(nèi)存安全、數(shù)據(jù)競爭等引起的問題一直存在,每一次對內(nèi)核的修改嘗試都有些畏首畏尾,而Rust 就是為了從語言層面解決這些問題而誕生的。Rust 的設(shè)計(jì)哲學(xué)是內(nèi)存安全、零成本抽象和實(shí)用性。

          尤其是,2022 年 12 月 11 日發(fā)布的 Linux Kernel 6.1,最重要的變化是引入了初始的 Rust 框架代碼。但高達(dá) 12k 行的代碼僅帶來了 Rust 基本的基礎(chǔ)設(shè)施。有了這個(gè)基礎(chǔ),新的驅(qū)動(dòng)程序、子系統(tǒng)和內(nèi)核模塊有望通過 Rust 編程語言登陸內(nèi)核。Rust 進(jìn)入 Linux 內(nèi)核,對于 推動(dòng) Rust 進(jìn)化具有很重要的戰(zhàn)略意義。另外,今年5月的這條消息也證明了自己的選擇存在一定的正確性。

          Rust 宣稱可以“賦予每個(gè)人構(gòu)建可靠高效的軟件的能力” , 而我更關(guān)注在實(shí)現(xiàn)對系統(tǒng)安全編程的同時(shí)對底層有控制權(quán) 。Rust 沒有運(yùn)行時(shí)和垃圾回收器,可以提供對性能要求很高的服務(wù),可在嵌入式設(shè)備上運(yùn)行,也可以很方便地和其他語言集成。對比 C、C++ 和 Go, Rust 的性能和 C++ 接近,快于 Go。

          安全編程是最吸引我的地方。在2020 年 8 月, Rarf Jung 在他的博士論文中提供了第一個(gè)正式證據(jù)(RustBelt),證明了 Rust 的安全承諾成立 ,即使開發(fā)者有可能編寫“不安全”代碼,Rust 的安全聲明仍然有效 。具體而言,Rust采用了所有權(quán)類型系統(tǒng),每個(gè)被分配的內(nèi)存都有指針,且給每個(gè)變量都設(shè)定了生命周期,一旦超出生命周期,變量就會(huì)被自動(dòng)釋放。另外, Rust劃分了安全邊界,如果要做內(nèi)存不安全的事情,必須在代碼中明確聲明。就線程而言,由于采用 1:1 線程模型,不需要運(yùn)行時(shí),在一定程度上消除了數(shù)據(jù)競爭的現(xiàn)象。

          客觀而言,Rust 的學(xué)習(xí)曲線還是相對陡峭的?;谒袡?quán)系統(tǒng)來管理內(nèi)存,移動(dòng)(move)、借用(borrow)、生命周期(lifetime)等概念提供了很多抽象表達(dá)能力,這需要較強(qiáng)的理解能力,對初學(xué)者確實(shí)存在挑戰(zhàn)。內(nèi)存模型嚴(yán)格區(qū)分可變狀態(tài)和不可變狀態(tài),頗有一些Erlang的味道,這需要新的編程范式。Rust 擁有非常嚴(yán)格的靜態(tài)類型系統(tǒng),這就要求寫程序時(shí)需要細(xì)致地設(shè)計(jì)數(shù)據(jù)類型。另外,相對于C/C++,Java,Python等成熟語言而言,Rust 的生態(tài)系統(tǒng)還在成長中,存在較多不完整的地方。

          當(dāng)自己開始體會(huì)到“Rust”的一些味道的時(shí)候,有幸參與了《Rust 程序設(shè)計(jì)(第二版)》審讀。因?yàn)樽约阂卜g過幾本書,一看到書籍的頁數(shù)就知道這本書的翻譯是一件艱難的工作。進(jìn)而,我從稿件的內(nèi)容中看到了譯者滿滿的誠意。譯者雪狼那25年碼農(nóng)的經(jīng)歷和我有著太多的相似,他前前后后對稿子修訂了 7 遍,雖然每一遍的重心有所不同,但每一遍都耗費(fèi)了巨大的心血。很長一段時(shí)間內(nèi),獨(dú)立進(jìn)行翻譯的雪狼每一天都會(huì)是挑燈夜戰(zhàn),向譯者雪狼致敬!

          審讀群里高手很多,我不過是一個(gè)Rust的初學(xué)者,談不上審讀,更多是學(xué)習(xí)和疑問,尤其是向雪狼和群里的各位老師學(xué)習(xí)。對于《Rust 程序設(shè)計(jì)(第二版)》書中的內(nèi)容,頗有相見很晚的感覺,這本書的思維導(dǎo)圖如下:

          跟著書中講解的思路走,一步步來,就一定能掌握 Rust 的核心特性和在工作場景中的用法。書中的代碼是開源的,而且基于 Rust 2021。如果我能夠早學(xué)習(xí)這本書,可以避免自己走很多的彎路。 

          鑒于自己的認(rèn)知局限,如果你是操作系統(tǒng)的相關(guān)開發(fā)工程師, 或者是嵌入式系統(tǒng)的工程師,亦或是后端服務(wù)的工程師,Rust 都會(huì)帶來安全而可靠的開發(fā)效果, 《Rust 程序設(shè)計(jì)(第二版)》將會(huì)成為你的案頭手冊!


          【參考資料與關(guān)聯(lián)閱讀】


          瀏覽 440
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人操人人色人人操 | 亚州一区 | 小泽玛利亚大战黑人 | 日韩操B| 大屌操大逼 |