開發人員的困境:選擇Go還是Rust?

如果讓你列出過去十年出現的重要編程語言,幾乎可以肯定Go和Rust榜上有名。

同樣,如果讓你坐下來想想如今哪種編程語言最適合開發對微服務友好且安全的框架或應用程序,你可能發覺在Go和Rust之間難以決定。

如果你難以決定到底是Go還是Rust更適合開發需求,繼續讀下去。此文比較了Go和Rust,解釋了兩者的相似和不同之處以及各自能為你做什麼。

Go編程語言

Go(又叫Golang)於2009年向公眾推出,它由谷歌工程師(包括以Unix成名的Ken Thompson)設計。開發Go出於諸多動機,但是開發人員的目標也許可以用此來概括:他們只是想要一種提供C++的效率,但經過優化後更容易在多核CPU上編寫、閱讀和部署的語言。

為此,Go的獨特功能之一是goroutine,它使人們很容易定義作為不同子進程運行的函數。如果充分利用goroutine,開發人員可以用Go輕鬆構建同時在多個CPU核心上部署工作負載以充分發揮併發性的應用程序。

併發性和優化是強大的功能。這就是我們選擇用Go開發Twistlock的原因之一。

Rust編程語言

Rust的歷史在很多方面與Go的歷史頗為相似。Rust起初是Mozilla一名工程師的個人項目,誕生於2000年代中期。該語言於2010年公開發布。

與Go一樣,Rust的部分動機是希望改進C++的約定,包括使其更易於實現併發性。同時又不降低安全性也是一個主要的考量因素。為此,Rust使開發人員很難將可能導致緩衝區溢出或其他內存相關漏洞的缺陷引入代碼中。

Go和Rust的共同點

Go和Rust在許多方面很相似。它們都是如今廣泛使用的新興編程語言之一。當今大多數其他流行語言的歷史久得多,比如C、Java和Python。

Go和Rust都是經過編譯的語言,開源,針對面向微服務的現代並行計算環境而設計的。

如果你已經瞭解C ++,它們都很容易學習。

Go vs. Rust

這可能讓你不由得發問:“我該使用Go還是Rust來開發下一個應用程序?”

可以從多個方面來回答這個問題,但建議從正在構建的應用程序的類型來考慮。在我看來,Go適合更廣泛的使用場景,而且更靈活一點。Go讓人們很容易構建這種很好地分解的應用程序:可以充分發揮併發性,又可以作為一組微服務加以部署。

Rust也可以做那些事情,不過要難一點。從某些方面來說,Rust專注於防止與內存有關的安全漏洞,這意味著程序員必須竭盡全力執行的任務換成其他語言(包括Go)要來得更簡單。

請注意:順便說一下,這並不意味著Go不安全。Go與其他任何現代編程語言一樣安全。它只是不像Rust那樣關注安全性或者任由安全性優先於更廣泛的功能。

簡而言之:Rust較難使用,更加關注構建範圍較狹窄的應用程序(安全是唯一重要的方面)。相比之下,Go很適合構建你不僅關注安全性,還關注其他諸多因素的應用程序——如果你是旨在構建靈活可擴展的應用程序或框架的DevOps團隊,這可能是你的目標。

同樣值得一提的是,Go在當今的開發人員中更受歡迎。TIOBE Index將Go列在最流行編程語言排行榜上的第15位,而Rust排在第34位。我知道你不應該隨大流,但在編程界,選擇更流行的語言確實有好處。其他程序員更可能瞭解它們,這使得共享代碼或為團隊添加成員變得更容易。流行語言還往往有更好的社區支持、文檔和插件。

我無法在使用Go還是Rust方面給出明確的建議,那是由於兩種語言都是很棒的現代語言,你在決定如何構建新應用程序時最好兩者都考慮一下。

話雖如此,與大多數程序員一樣,我往往對Go更傾向一點,因為它適合更廣泛的使用場景,同時仍提供很高的安全性和性能。

"


分享到:


相關文章: