Rust語言與Go語言各自特點概要比較 –thenewstack

發表於2021-03-14

在本文中,我們將討論Rust和Go的優缺點,以及它們如何相互補充和相互支援,並針對每種語言何時採納提出最合適的建議。

 

相似之處

Go和Rust有很多共同點。兩種都是現代軟體語言,兩者的建立都是為了應對建立者在業界現有語言中遇到的問題:生產力、可伸縮性、安全性和併發性。

  • 效能和併發

Go和Rust都是致力於生成高效程式碼的編譯語言。它們還提供對當今機器的多個處理器的輕鬆訪問,使它們成為編寫高效並行程式碼的理想語言。Go具有開箱即用的出色效能;Rust的設計使您能夠從程式碼中優化出所有最後的效能提升。在這方面,今天您真的找不到比Rust更快的語言。但是,Rust的效能提高是以增加複雜性為代價的。

  • 團隊可擴充套件性

當今的軟體開發是由成長和擴充套件的團隊建立的,並且經常使用原始碼控制以分散式方式進行協作。Go和Rust都是針對團隊的工作方式而設計的,通過消除格式、安全性和複雜組織等不必要的問題來改進程式碼審查。兩種語言都需要相對較少的上下文來理解程式碼的作用,從而使審閱者可以更快地使用其他人編寫的程式碼,並可以審閱團隊成員的程式碼以及團隊外部的開源開發人員提供的程式碼。

Go的快速迭代優勢使開發人員可以快速嘗試想法並磨練可解決當前任務的工作程式碼。通常,這足夠了,並可以使開發人員有更多時間從事其他任務。另一方面,與Go相比,Rust的編譯時間更長,導致迭代時間更慢。這使得Go在更快的週轉時間允許開發人員適應不斷變化的需求的場景中可以更好地工作,而Rust在可以花更多時間進行更精緻和高效能的實現的場景中蓬勃發展。

  • 學習能力

確實沒有比Go更容易上手的語言了,關於採納Go語言的故事很多,他們採用Go並在幾周內將Go應用投入生產。此外,Go在各種語言中相對獨特,因為在其10年以上的生命週期中,其語言設計和實踐都相當一致。因此,花在學習Go上的時間可以長期保持其價值。相比之下,Rust由於其複雜性而被認為是一種難以學習的語言。通常,需要花費幾個月的時間來學習Rust,以適應它,但是這種額外的複雜性帶來了精確的控制和更高的效能。

  • 精確控制

Rust的最大優勢之一可能是開發人員對記憶體的管理方式,如何使用機器的可用資源,如何優化程式碼以及如何制定問題解決方案的控制權。與Go相比,這並不意味著沒有很大的複雜性成本,Go的設計目的是減少此類精確製作的時間,而為更快的探索時間和更快的週轉時間而設計。

 

總結/要點

Go可使團隊可以將精力集中在靈活性上;Rust更好的控制可以實現更高的精度。

Rust能成為低階別的理想語言;在大規模部署時可以從Go的效能提高中受益。

儘管Go和Rust的設計差異很大,但它們各自的設計發揮了相容的優勢,一起使用時,具有很高的靈活性和效能。

對於大多數公司和使用者,Go是正確的預設選項。它的效能強大,易於採用,並且Go的高度模組化特性使其特別適合於需求不斷變化或發展的情況;隨著您產品的成熟和需求的穩定,可能會有機會從效能的小幅提高中獲得豐碩的成果。在這些情況下,使用Rust來最大化效能可能很值得進行初始投資。

相關文章