Rust, Go與Hasekll比較 - Reddit

banq發表於2022-03-16

對這三者隱含的設計正規化的非常簡潔的總結:
  • Haskell:適合計算,預設情況下容易抽象(專注於指定做什麼而不是怎麼做,需要很少的程式碼來表示它)。
  • Go : 適合做服務,預設情況下容易併發(專注於指定如何做而不是何時做,需要非常少的程式碼來並行化它)
  • Rust:適合做系統,預設情況下容易實現可靠性(專注於指定什麼時候做而不是在哪裡做,需要很少的程式碼來管理記憶體)。

 
但是,需要首先問問自己你想解決什麼樣的問題,然後看看哪些語言(庫)在解決這些問題方面很流行。
例如:
  • 機器學習:Python 非常流行,為什麼會這樣,考慮到它是一種緩慢的解釋語言,具有併發挑戰(答案:令人驚歎的庫)
  • 遊戲程式設計:儘管 C++ 中存在記憶體管理挑戰,但 C# 和 C++ 都非常流行。
  • 流和事件處理:Java 以 Kafka、Kinesis、Flink、Hadoop 等為主。

最後,一般新手不會選擇 Haskell 或 Rust 作為第一種程式語言,可能需要考慮從 Python 或 Golang 開始,然後再分支到具有更復雜記憶體管理和高階型別系統的語言。

下面是另外一種角度比較這三者:
  • Haskell 致力於提升程式語言設計的藝術水平:
    如果對於 Next Big Language(下一個大語言) 來說這似乎是一個好主意,Haskell 很可能會這樣做。
  • Go 是關於擁有一種簡單、高效的語言:
    簡單被定義為“對實施者來說簡單”。高效被定義為“初學者開始編寫與專家編寫的程式碼一樣好的程式碼的時間很短”。
  • Rust 是關於務實的:
    你有完全的權力來控制微小的細節,在某種程度上你需要。它具有眾所周知的高學習曲線。另一方面,一旦你越過了學習曲線,它就會感覺像是一門富有表現力的高階語言。

 
Haskell 的一大重點也是純度。就像 Rust 有它的記憶體保證和生命週期一樣,Haskell 可以透過它的型別系統保證沒有副作用。

 

相關文章