19

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

Scala 和 Gosu 与它们最有影响力的父级 Java 有哪些本质上的相同点和不同点?有没有比较和对比这两种语言的网站?

4

4 回答 4

27

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

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

Scala 和 Gosu 有很多相似之处:

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

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

  • 两者都在现有的 java 库之上提供了额外的功能,尤其是在集合周围。

这里有一些区别:

  • Gosu 不支持通用运算符重载

  • Gosu 不为 Monad 提供语法支持

  • Gosu 中的泛型比 Java 中的泛型更简单(以正确性为代价),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 是由非常了解 Gosu 的人构建的,因此它利用了该语言的许多功能。

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

于 2011-02-12T04:36:52.757 回答
16

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

于 2011-02-12T10:24:36.877 回答
2

在gosu-lang 列表上的这个线程中,Carson Gross 总结如下:

简短的回答是 Gosu 比 Scala 更简单(更简单的泛型,有限的运算符重载),但比 Groovy 更牢固地静态类型化。

还有这张表,但它是“我们的产品比你的产品更好”的比较之一;即本质上是有偏见的。

于 2011-02-12T01:23:02.317 回答
0

据我所知,Gosu 是由 Guidewire 为他们的产品特定开发和产品配置而开发的。所以所有 Guidewire 用户/开发者都使用 Gosu 进行编程。这就是您没有看到很多与 Gosu 脚本相关的帖子的主要原因。

于 2019-10-25T00:08:21.730 回答