为什么我不喜欢Scala?

这是一篇引起广泛注意的文章,作者不喜欢Scala的理由如下:

1.有多个正确的方式做同样的事情,在Scala中完成一个任务的方法不止是一种,而且这些方法没有明显的优劣,选项从简洁,可读性规模,功能,可扩展性都会各有所长,完成一个功能,functions, folding, collect, map, apply都可以实现,但是由于这是一个简单的任务,可能我是一个初学者,就不知道如何选择哪一个,当然,随着时间的推移,我会建立一个方法的优选集合。

2. 它是隐秘的,作为一种高级语言,使用这么多的符号是很麻烦的。可见stackoverflow问题

3.二进制兼容性,在scala 2.10中的项目不能在Scala 2.9中编译,这让我们感觉生活很难。

4.与现有的Java框架和工具无法平滑集成。
这可能是由于思维方式的不同(例如,你可能不需要Scala中的一个DI框架),使用几个可行的Scala替代(如运筹学和管理学),但有时你会更喜欢使用成熟的技术,- 我发现这是一个噩梦,6个月前的JSON序列化是一个案例,因为我需要它,。最后我只能用一个废弃的项目(jerkson)。幸运的是,后来我切换到jackson。

5.随机的错误。
编译期间被随机的东西中断是浪费时间的,当我继承一个Java类,报错AssertionError。

6.不相关的编译错误。
这是不是普遍的,但有时你会得到一个编译错误,但不是与实际问题有所相关。

7.慢的编译。
我还没有真正经历过一个显著的程度,因为该项目是小型。有人反映这里

8.IDE用起来很可怕
Scala-IDE我是6个月前使用的,几乎是不可用 - 重构不起作用,调试检验不起作用,有时编译不工作(而在同一时间的Maven构建运行和类编译都很好)。我当时试过的IntelliJ,它是稍微好一点。现在,最新的IntelliJ插件工作方式更好,而且是实际可用。也许同样适用于基于Eclipse的Scala-IDE。这样的事情确实正在改善,不,我不想用Vim/ Emacs,因为这是一个静态类型的语言,它需要重构,跨层次调用等。

9.annotations, enums, reflection
这些来自Java,我“珍惜”这些。但是如果你有一个纯粹的Scala思维,你可能不需要注释,我还没有达到这个涅磐,现在还是需要它。

10.高的学习门槛
即使您熟悉函数式编程,Scala引入了很多东西,包括上面提到的“神秘”符号。不仅如此,为了开发出一个全功能的Scala项目,你可能需要学习一个或无数新的框架和工具,如Scalate,scalatest,Squeryl等部分因为Java的替代方案在Scala中并不正常工作,一方面是因为这些Scala替代品可以利用Scala的功能。

好几年前的观点了,参考意义不大。

说两点:
1. 翻译真烂;
2. scala好用,但不能滥用,如果有限度的使用应该是没有大问题的。不需要用到它所有的特性和功能是吧。

In Defense of Scala. Response to “I Don’t Like Scala”.一文认为:

Scala存在陡峭的学习曲线,晦涩的语法,和编译速度慢等等问题。是因为差劲的 SBT构建工具和Scalaz框架,造成了许多斯卡拉新手的负面经验。以及Spray.io并不是一个好的案例参考项目。

另外一文:The case for Scala: Why programmers continue to defend it为什么程序员总是要捍卫Scala?透露, Spring创始人Rod Johnson已经在Scala的公司Typesafe指导工作,预计以后五年内Scala将在传统企业软件中找到其立足点。(奇怪,前段时间传闻rod要跳槽到hazlcast)。