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