Go和Rust都是系統語言和通用語言 - Reddit

banq發表於2022-04-04

一般人認為:Rust通常是一種系統程式語言;而Go是通用語言。

這有點誤導性:

"系統程式設計 "最初的意思是 "與指令碼語言相反,這種語言優先考慮在較長的生命週期內保持大型基礎設施程式碼庫的可維護性和人員變動,即使這降低了原型設計的速度"。(在這個定義下,Java、Go和Rust都是系統語言)。

這只是一個歷史細節,當這個詞被創造出來的那個時候,當時硬體資源是非常稀缺,以至於你不得不使用低階語言來構建基礎設施。而現在,"基礎設施 "包括像微服務這樣的東西,Go完全適合 "系統語言 "這個稱號。(糟糕的是,Java和Go在可維護性方面的定義都是 "不要給新手足夠的繩子來輕易吊死自己",而Rust的方法是 "給專家一個強大的型別系統來建立安全軌道並建立這樣做的文化"。)

Rust確實需要你考慮記憶體管理,所以它在這方面比Go低階,但是,它在各方面也比Go高階,比如它對錯誤處理、無效性和資料競爭的預防方法。
因為Go有垃圾收集器,而Rust沒有,所以Rust被證明比Go更有通用性,很適合加入那些已經有自己的垃圾收集器的地方,比如Node.js、CPython和CRuby擴充套件(垃圾收集器是孤獨的生物,讓它們一起愉快地工作是很痛苦的。)或者加入垃圾收集器不可行的地方。(例如,重寫librsvg,同時保持外部C API不變)。

簡而言之,它們都是系統語言,都是通用語言。

Rust未來看好的領域

  • Rust程式碼將在未來一年內登上月球。
  • 汽車等對安全要求高的行業對Rust有很大的興趣。不過,驗證工作還需要一段時間,預計Rust會在小眾專案中停留一段時間。
  • Rust已經在CLI工具方面取得了成功--誰能否認這一點。
  • 另外,可擴充套件的低延遲伺服器系統似乎是一個可行的利基專案--想想Dropbox的 "Magic Pocket "儲存系統。
  • 在Web前端,WASM非常適合Rust,給Web開發者提供了可靠的效能和我們熟悉和喜愛的偉大的開發體驗。


當然,後端Web API是Go的主要領域之一,在這個領域可同時使用Rust和Go,我更喜歡Rust。
在使用Go的時候,經常因為被迫使用冗長的模式和醜陋的錯誤處理而感到沮喪,實際上,一旦你掌握了生命期,我就會發現Rust更容易,你可以更簡單地使用巨集,而且像serde這樣的板塊也很容易操作。此外,你還會得到明顯的效能和安全方面的好處。

Go的入門門檻顯然要低得多,而且像印度這樣的國家充滿了Go語言工程師,所以我認為Go在初創公司中占主導地位,而那些能夠得到Rust工程師的大公司則可能會走這條路。

相關文章