我刚刚开始研究即将发布的2.8版本中的Scala 集合库重新实现。熟悉 2.7 中的库的人会注意到,从使用的角度来看,该库几乎没有变化。例如...
> List("Paris", "London").map(_.length)
res0: List[Int] List(5, 6)
...在任何一个版本中都可以使用。该库非常有用:事实上它太棒了。然而,那些以前不熟悉 Scala 并四处寻找语言的人现在必须理解方法签名,例如:
def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That
对于如此简单的功能,这是一个令人生畏的签名,我发现自己很难理解。并不是说我认为 Scala 有可能成为下一个 Java(或 /C/C++/C#)——我不相信它的创造者将它瞄准了那个市场——但我认为 Scala 成为/肯定是可行的下一个 Ruby 或 Python(即获得重要的商业用户群)
- 这会阻止人们来 Scala 吗?
- 这是否会让 Scala 在商业世界中名声不佳,成为只有敬业的博士生才能理解的学术玩物?CTO和软件负责人会被吓跑吗?
- 图书馆重新设计是一个明智的想法吗?
- 如果你在商业上使用 Scala,你会担心这个吗?您打算立即采用 2.8 还是等着看会发生什么?
Steve Yegge 曾经攻击过 Scala(在我看来是错误的),因为他认为 Scala 的类型系统过于复杂。我担心有人会用这个 API 来散布FUD(类似于 Josh Bloch 如何让JCP害怕向 Java 添加闭包)。
注意-我应该明确一点,虽然我相信Joshua Bloch在拒绝 BGGA 关闭提案方面具有影响力,但我不会将此归因于他诚实地认为该提案代表错误的信念。
不管我的妻子和同事一直告诉我什么,我不认为我是个白痴:我在牛津大学获得了很好的数学学位,我已经从事商业编程将近 12 年,并且在Scala中工作了大约一年(也是商业)。
请注意,煽动性主题标题是对 1980 年代初期英国政党宣言的引用。这个问题是主观的,但它是一个真实的问题,我已经把它变成了 CW,我想就此事发表一些意见。