我刚开始研究即将发布的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(我认为是错误的),因为他认为它的类型系统过于复杂。我担心有人会利用这个API散布FUD,就像Josh Bloch吓坏了JCP不添加Java闭包一样。
注意 - 我应该明确表示,尽管我相信Joshua Bloch在拒绝BGGA闭包提案方面具有影响力,但我并不将其归因于除了他真诚持有的信念之外的任何事情,即该提案代表了一个错误。
尽管我的妻子和同事不断告诉我,但我并不认为自己是个白痴:我拥有牛津大学的数学学位,并且已经在商业领域编程近12年,在Scala方面有一年的商业经验。 < p > 请注意,这个具有煽动性的主题标题是关于1980年代初英国政党宣言的引语。这个问题是主观的,但它是一个真正的问题,我已将其设为CW,并希望得到一些意见。