6

Erlang 会在简明性的范围内落在哪里,比如说,Java/.net 在不太简洁的一端,而 Ruby/Python 在更简洁的一端?我有一个 RSI 问题,因此出于健康原因,简洁对我来说尤其重要。

4

4 回答 4

7

作为语言特征的简洁性定义不明确,可能不统一。根据问题,不同的语言可能或多或少简洁。

Erlang 作为一种函数式语言可以非常简洁,超越 Ruby 或 Python。具体来说,模式匹配通常会替换 if 语句,递归和列表推导可以替换循环。

例如Java会有这样的东西:

String foobar(int number){
  if (number == 0) {
    return "foo";
  } else if (number == 1) {
    return "bar";
  }
  throw new Exception();
}

而 Erlang 代码看起来像:

foobar(0) -> "foo";
foobar(1) -> "bar".

例外是固有的,因为除了 0 或 1 之外没有输入子句。这是一个很适合 Erlang 风格开发的问题。

一般来说,任何可以定义为转换的东西都会特别好地匹配函数式语言,并且可以写得非常简洁。当然,许多函数式语言狂热者表示,编程中的任何问题都是一种转换。

于 2009-03-18T08:48:14.070 回答
1

与我在 Java 和 Python 方面的经验相比,Erlang 允许您用很少的代码行来实现功能。过去只有 Smalltalk 或 Scheme 能接近我。你只得到很少的开销,但你通常倾向于说出模块、函数、变量和原子的标识符。它们使代码更具可读性。你有很多正常的、花括号和方括号。因此,它的舒适程度取决于您的键盘布局。你应该试一试。

于 2009-03-18T08:46:10.970 回答
1

Erlang 出奇的简洁,尤其是当您想要获得性能和可靠性时。

即使与 Haskell 相比,Erlang 也很简洁:

http://thinkerlang.com/2006/01/01/haskell-vs-erlang-reloaded.html

即使与 C++ 相比,它的速度也出奇的快(而且可靠):

http://www.erlang.se/euc/06/proceedings/1600Nystrom.ppt

(少 18 倍的 SLOC 不足为奇)。

无论如何,它总是取决于你的喜好和你想要达到的目标。

于 2009-03-18T09:14:30.870 回答
1

你必须花一些时间,编写代码,来理解 erlang 的最佳点,与所有其他新兴工具相比,DHT、文档存储、mapreduce 框架、hadoop、GPU、scala,......如果你尝试这样做,比如说 SIMD 类型应用程序超出最佳范围,您可能最终会与范式作斗争并编写冗长的代码,而如果您遇到需要无缝扩展服务器和中间件的问题,它会自然而然地进行。(我认为,scala 在其最佳位置的崛起也是不可避免的)

几年前的 Tim Bray Wide Finder 实验(提取大型 apache 日志文件)是一件值得查找的好事情,以及他对 erlang 的失望程度。

我一般不建议在 Alioth 枪战中放置太多存储,因为您不可避免地最终会比较真正好和坏的代码,但是如果您需要放置 LOC、erlang 与 C、ruby 的数量,等等

https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/erlang.html

于 2009-08-24T00:37:26.200 回答