13年資深開(kāi)發(fā)者分享一年學(xué)習(xí)Rust經(jīng)歷:從必備書目到代碼練習(xí)一網(wǎng)打盡
如何學(xué)習(xí)Rust,Hacker News上有這么一篇教程火了。
它不同于網(wǎng)絡(luò)上類似的幾小時(shí)速成教程,而是通過(guò)自己的學(xué)習(xí)經(jīng)歷向大家指出一條學(xué)習(xí)Rust的路徑。
教程發(fā)出之后,網(wǎng)友們也在Hacker News上貼出了自己的學(xué)習(xí)經(jīng)歷。
了解Rust相關(guān)的書籍和教程很方便,即使在沒(méi)有網(wǎng)絡(luò),離線的時(shí)候也可以學(xué)習(xí)。我在沒(méi)有WiFi的長(zhǎng)途飛行中學(xué)到了Rust的基礎(chǔ)知識(shí)。確實(shí)是個(gè)打發(fā)時(shí)間的好方法!
閱讀相關(guān)書籍以及編寫代碼對(duì)于學(xué)習(xí)一門編程語(yǔ)言來(lái)說(shuō)都必不可少,二者交替學(xué)習(xí)對(duì)掌握Rust至關(guān)重要。
資深開(kāi)發(fā)者Eli Bendersky在他的網(wǎng)站上撰寫了很多篇關(guān)于代碼語(yǔ)言的博客,其中就有一篇關(guān)于他自己為期一年學(xué)習(xí)Rust的經(jīng)歷。
一起來(lái)看看吧。
相關(guān)書目黑紅榜
首先,Eli在教程中對(duì)他所讀過(guò)的Rust相關(guān)書目做了評(píng)價(jià)。
Programming Rust一般是作為入門書籍來(lái)看,這是Eli學(xué)習(xí)Rust時(shí)所讀的第一本書。
書中初步介紹了Rust,內(nèi)含Rust1.50的全面概述和參考。
雖說(shuō)它是入門書籍,但還是需要一定的編程基礎(chǔ),熟悉低級(jí)編程,尤其是內(nèi)存管理。
總體而言,對(duì)于一個(gè)有經(jīng)驗(yàn)的開(kāi)發(fā)人員(最好具有C++背景)知道如何在項(xiàng)目中使用替代資源,這本書是對(duì)Rust的一個(gè)很好而全面的概述。
其次是The Rust Programming Language,相較于Programming Rust,Eli認(rèn)為這本書會(huì)是一個(gè)更好的參考,雖然他還沒(méi)有完整地讀過(guò)整本書,但已經(jīng)瀏覽了它的主要部分。
這本書在谷歌中的排名也名列前茅,很多人都將其列為Rust入門指南,由Rust核心團(tuán)隊(duì)的兩名成員編寫,42名社區(qū)成員反饋和貢獻(xiàn)。
同樣的是,閱讀這本書也需要有編程基礎(chǔ),這意味著這些材料對(duì)于具有各種編程背景的開(kāi)發(fā)人員來(lái)說(shuō)都是有用的。
總結(jié)下來(lái),如果想要閱讀這些入門Rust書籍,就得先有一定的編程基礎(chǔ)在。
接下來(lái)再來(lái)講Rust in Action,它是關(guān)于Rust的一本中級(jí)書籍,包含系統(tǒng)編程領(lǐng)域的幾個(gè)重要項(xiàng)目。
這本書中,介紹的方法很有趣,很適合已經(jīng)初步了解Rust的人群閱讀。
除此之外,它還專注于系統(tǒng)編程,并且寫出了很多真正有用的代碼。
但美中不足的是,由于這本書還很新,里面有許多錯(cuò)別字、混淆、代碼清單和隨附的存儲(chǔ)庫(kù)之間的嚴(yán)重不匹配等。
最后來(lái)講一講Rust for Rustaceans這本書,先說(shuō)結(jié)論,不推薦閱讀。
Eli很喜歡這本書的作者Jon Gjengset以前發(fā)布的一些視頻,但是看完這本書卻大失所望。
這本書混合了Rust官方書中解釋得更好的材料和過(guò)于專業(yè)的材料,只是一層又一層的文字,幾乎沒(méi)有圖表和代碼示例,幾乎沒(méi)有任何可編譯的項(xiàng)目去做一些有用的事情。
已經(jīng)了解了學(xué)習(xí)Rust的相關(guān)書籍,在閱讀之余也要適當(dāng)練習(xí)練習(xí)編寫代碼。
編寫代碼練習(xí)
既然如此,我們?cè)撊绾斡行Ь毩?xí)呢?Eli也根據(jù)自己的經(jīng)驗(yàn)推薦了一些渠道。
如果開(kāi)始學(xué)習(xí)Rust時(shí),可以先用rustlings,它是用來(lái)閱讀和編寫Rust代碼片段的小練習(xí)。雖然不是很全面,但對(duì)于剛?cè)胧值男“讈?lái)說(shuō)還是挺有用的。
網(wǎng)站附于文末。
再來(lái)說(shuō)說(shuō)Advent of Code,2021年版很適合用來(lái)練習(xí)Rust,一共有25個(gè)問(wèn)題,根據(jù)它里面的指示來(lái)編寫代碼,完成任務(wù)。
通過(guò)解決AOC的問(wèn)題,可以很好地學(xué)習(xí)和練習(xí)編程語(yǔ)言。
Eli已經(jīng)完成了前面的18個(gè)問(wèn)題,在博客中他也提到,很可能會(huì)再次在Rust中處理AOC2022,保持他的手感。
The Ray Tracer Challenge book,這本書由一系列“單元測(cè)試”和易于翻譯成任何語(yǔ)言的偽代碼組成,可以用來(lái)指導(dǎo)我們使用編程語(yǔ)言來(lái)實(shí)現(xiàn)光線追蹤器。
在學(xué)習(xí)新的編程語(yǔ)言的同時(shí),我們還可以構(gòu)建一些可視化的東西,不會(huì)很快覺(jué)得枯燥。
但是,這本書著墨解釋為什么它提供的公式和偽代碼有效,無(wú)助于培養(yǎng)直覺(jué)。
這導(dǎo)致調(diào)試問(wèn)題時(shí)會(huì)發(fā)生嚴(yán)重的差錯(cuò)。由于沒(méi)有開(kāi)發(fā)直覺(jué),因此調(diào)試的唯一方法是將代碼與書中的偽代碼進(jìn)行細(xì)致的比較,以確保在轉(zhuǎn)錄過(guò)程中沒(méi)有丟失或輸入錯(cuò)誤的內(nèi)容。
當(dāng)然總體來(lái)說(shuō),還是值得一讀的。
最后來(lái)講一講Crafting Interpreters,在這本書中,作者從頭到尾為該語(yǔ)言開(kāi)發(fā)了兩個(gè)完整的解釋器,包括所有前端和后端部分。
在書中,兩個(gè)解釋器的所有代碼都完全包含在文本中并分段呈現(xiàn)。并不需要翻閱外部的存儲(chǔ)庫(kù)。直接閱讀并將代碼復(fù)制到自己的編輯器中即可運(yùn)行。
Eli也對(duì)這本書抱有很高的評(píng)價(jià),他認(rèn)為這本書是在他看過(guò)的許多編譯器書籍中,迄今為止最實(shí)用的。
除了以上這些,Eli還做了很多實(shí)驗(yàn),編寫代碼來(lái)探索Rust的各個(gè)領(lǐng)域。