Scala和Gosu(与Java相关)之间的本质相似之处和不同之处是什么?

2022-09-02 11:49:59

我现在正在学习Scala,并且在过去的一个月里一直在这样做。今天,(通过Twitter)我偶然发现了另一种似乎非常相似的语言,Gosu

Scala和Gosu就其最有影响力的母公司Java而言,有哪些本质的相似之处和不同之处?是否有任何网站可以比较和对比这两种语言?


答案 1

是的,我们的语言比较表很大程度上是一个笑话。尤其是“Not Lisp”行。:)

正如Stephen C在我原来的帖子中指出的那样,总的来说,Gosu比Scala更简单,而Scala比Gosu具有更高级的功能。

Scala和Gosu有许多相似之处:

  • 两者都是静态类型的,但使用类型推断来减少代码膨胀

  • 两者都支持闭包和更多函数式编程

  • 两者都在现有java库之上提供了额外的功能,特别是在集合方面。

以下是一些区别:

  • Gosu 不支持一般运算符重载

  • Gosu 不为 Monads 提供句法支持

  • Gosu中的泛型比Java中的泛型更简单(以正确性为代价),在Scala中它们更复杂(或至少同样复杂)(尽管Scala在正确性方面做得更好)。

  • Gosu 不支持像 Scala 的闭包中隐含的 '_' 参数这样的东西:在这样的情况下,它更明确。

  • Gosu对核心Java库的扩展不那么引人注目。我们将其他方法焊接到现有的java类型上,而不是引入新的类型层次结构。

Gosu和Scala在功能方面有一个很大的区别:Gosu有一个我们所说的开放类型系统。这允许人们将任意资源插入Gosu编译器。例如:Gosu(从0.8.5开始)支持XSD和WSDL文件作为一等公民:

http://lazygosu.org/xml.html

在功能方面,开放类型系统是Gosu和其他静态类型JVM语言之间的真正区别。

话虽如此,现在不幸的现实是,Scala在某些领域比Gosu成熟得多,尤其是工具。在所有主要的IDE中,Scala都有很好的IDE支持。我们有一个用于Gosu的Eclipse插件,但它仍处于起步阶段。同样,我们的IntelliJ插件非常新。

Scala有一个非常完整的Web框架,Lift。我不是他们方法的忠实粉丝,但它是完整的,很多人喜欢它。

Gosu也有一个Web框架:

http://ronin-web.org

我喜欢Ronin的方法,但我会的,不是吗?Ronin是由非常了解Gosu的人构建的,因此,它利用了该语言中的许多功能。

希望有所帮助。实际上,如果我今天开始一个项目,我可能会因为工具支持而选择Scala。但是,如果你想从另一个方向上走出来,特别是如果你的项目涉及Web服务或XSD处理,Gosu可能是一种有益的语言。从长远来看,我希望Gosu将成为JVM开发人员的务实选择,但只有时间会证明一切。


答案 2

Gosu比较表对Scala来说有点不公平:从Java的过渡很容易(你不必在一开始就使用所有花哨的Scala东西),对于重新定义的泛型,Scala没有一个完美的,但可行的解决方案,称为Manifests。当然,缺少Scala闪耀的类别(模式匹配,更高种类的类型......


推荐