為什么說 Go 和 Rust 不是競爭者

jopen 9年前發布 | 12K 次閱讀 Go語言

這篇短文解釋了,為什么我認為 Go 和 Rust 并不是競爭對手。

為什么人們認為 Go 和 Rust 是競爭關系

在解釋為什么我認為 Go 和 Rust 不是競爭對手前,我想說明一下為什么這個問題會被提起。

  • Rust 和 Go 發布的時間相近。Go 從 2007 年開始構思,2009 年十一月對外公開。Rust 發布于2010 年,只晚了幾個月,盡管 Graydon(格雷頓)聲明 Rust 可能是更早就開始構思了。無論怎樣,這兩個語言都有著前輩的貴族血統。對于 Go 來說,有 Hoare(霍爾)的 CSP,Alef 和Pike(派克)的 Newsqueak,而 Rust 則是 ML 家族的語言之一。

  • Rust 和 Go 都是被譽為內存安全的。雖然這個說法沒錯,這兩種語言都不允許不安全的內存訪問,更重要的是,世界已經不能容忍一個不是內存安全的新語言了。事實是 Go 和 Rust 這兩種語言,經過數十年的證據表明,現實世界中,程序員們普遍是不能安全手動管理內存的。

  • 同樣是年輕的語言,Go 的 1.0 版本發布于 2012 年,而 Rust 的 1.0 版本是今年(2015)早些時候,這意味著他們都雄心勃勃和有上進心,想要占領現任編程語言的市場。

這些跡象都可以說明為什么我們看的 Rust 和 Go 是競爭關系。放眼看去,確實很難找到他們的其它聯系,他們出現得太偶然了。

為什么我認為 Rust 與 Go 不是競爭對手

綜上,我認為 Go 與 Rust 之間不為競爭關系有以下原因:

  • Rust 關注 “free of charge” 的抽象。如果你對這很熟悉,說明你已經使用 C++ 很多年了。Go 為了保證語言的簡潔性和正交性,將很多底層的操作推遲到運行時來進行。

  • Rust 是專門為與 C語言 的互操作而進行設計的;Rust 代碼一般位于被 C語言 調用的其他大型程序中。Go 通過 cgo 來進行語言之間的交互,但這并不是 Go 被設計的首要原因。

  • Go 將并發作為首先的關注目標。并不是說在 Rust 里面沒有類似 Go 的并發框架,但 Rust 將這部分留給了程序員。

  • Go 關注程序員的編碼效率,可以從 across the whole software development lifecycle 看出。Rust 作為 LLVM 的頂層代碼,存在很多類似的做法。

Rust 和 Go 不是競爭者

Go 著重于提高大團隊開發者工作效率,遵循嚴格應用簡潔化原則( rigid application of simplicity) —拒絕復雜化和歧義化的觀點。

Rust則面向無法容忍不安全內存訪問或運行時開銷的程序員(Go也不能容忍,我想沒有人愿意學習一門新的不安全的編程語言)  —哪些不安全的,或帶來(額外)開銷的想法會被拒絕,至少要排除在核心語言之外。

Rust競爭對象是C++ and D編程語言,這類語言的程序員容易接受更復雜的語法和語義 (可能還有更高的可讀性代價-注,應該是更難于讀懂代碼的意思) 以換取最高性能。 例如,單片機,AAA游戲引擎, 和web渲染引擎(等應用領域)。

Go主要搶占2006年以來的互聯網2.0公司市場,它們大量采用(outgrown)Ruby, Python, 和Node.js (v8) 語言,沒有耐心使用部署代價高昂的基于JVM語言

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!