我刚刚开始查看即将发布的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
对于如此简单的功能,这是一个令人生畏的签名,我发现自己很难理解。我并不认为斯卡拉会成为下一个Java(或 /C/C++ /C#)-我不相信它的创造者是针对这个市场的-但我认为Scala成为下一个Ruby或Python是/肯定是可行的(即获得大量的商业用户群)
Steve Yegge曾经攻击过Scala(在我看来是错误的),因为他认为它的类型系统过于复杂。我担心有人会用这个API传播FUD(类似于Josh Bloch如何害怕JCP向Java添加闭包)。
说明-我应该清楚的是,虽然我相信约书亚·布洛赫在拒绝BGGA关闭提案方面有影响力,我不认为这是因为他诚实地认为该提案代表了一个错误。
不管我的妻子和同事一直告诉我什么,我不认为我是个白痴:我从0开始就有一个很好的数学学位,我已经在商业上编程了将近12年,在1号编程了大约一年(也在商业上)。
这个问题是主观的,但它是一个真实的问题,我已经把它变成了CW,我想听听关于这个问题的一些意见。