Rust, Go与Hasekll比较 - Reddit


对这三者隐含的设计范式的非常简洁的总结:

  • 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 可以通过它的类型系统保证没有副作用。