Go和Rust都是系統語言和通用語言 - Reddit
一般人認為: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工程師的大公司則可能會走這條路。
相關文章
- 從錯誤處理看 Rust 的語言和 Go 語言的設計RustGo
- Rust語言與Go語言各自特點概要比較 –thenewstackRustGo
- Rust語言最獨特的特點是什麼? - RedditRust
- Go 語言型別系統詳解Go型別
- Go語言————1、初識GO語言Go
- 為何Rust語言在區塊鏈中應用廣泛? - RedditRust區塊鏈
- Go 語言 nil 和介面Go
- badamczewski/PowerUp:Rust/Go語言的反編譯工具RustGo編譯
- 開源go-zero作者描述自己從Java到Go語言經歷 - RedditGoJava
- GO語言————2、GO語言環境安裝Go
- 帶讀 |《Go in Action》(中文:Go語言實戰) 語法和語言結構概覽(三)Go
- 帶讀 |《Go in Action》(中文:Go語言實戰)語法和語言結構概覽 (二)Go
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- Go語言分散式系統配置管理實踐--go archaiusGo分散式AI
- Rust, Go與Hasekll比較 - RedditRustGo
- Go語言mapGo
- go 語言切片Go
- go 語言常量Go
- go語言使用Go
- 【譯】Go語言宣告語法Go
- GO語言————4.7 strings和strconv 包Go
- GO語言————4.8 時間和日期Go
- GO語言————6.4 defer 和追蹤Go
- Go 語言指標符號 *和&Go指標符號
- Go 語言 結構體和方法Go結構體
- 聊聊 C 語言和 ABAP 這兩門程式語言的關係
- Rust 語言學習之旅Rust
- Go 語言的詞法分析和語法分析(1)Go詞法分析語法分析
- Java和Go語言二選一,選擇哪門語言好?JavaGo
- Go_go語言初探Go
- go語言與c語言的相互呼叫GoC語言
- 獲取系統語言/當前 App支援語言APP
- Rust語言4歲了 | rust-langRust
- 什麼是Go語言?Go語言有什麼特點?Go
- 大資料教程之《MYSQL資料庫》TCL語言和DCL語言大資料MySql資料庫
- GO語言—————7.1 宣告和初始化Go
- go語言簽發和驗證licenseGo
- go語言學習-安裝和配置Go