java - Scala 和 Gosu(与 Java 相关)之间的本质异同是什么?

标签 java scala gosu

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

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

最佳答案

是的,我们的language comparison chart很大程度上是个笑话。尤其是“Not Lisp”行。 :)

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

Scala 和 Gosu 有很多相似之处:

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

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

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

这里有一些区别:

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

  • Gosu 不为 Monad 提供语法支持

  • 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。我不是他们的方法的 super 粉丝,但它是完整的并且很多人喜欢它。

Gosu 也有一个 Web 框架:

http://ronin-web.org

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

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

关于java - Scala 和 Gosu(与 Java 相关)之间的本质异同是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975428/

相关文章:

scala - 将 Option[Validation[E, A]] 转换为 Validation[E, Option[A]]

guidewire - 导丝中的有效实体是什么以及我们如何创建它?

java - 无法让类(class)项目 FTP 服务器发送 226

java - 通过 HTTP header 发送附加信息

postgresql - 使用 Anorm 在 PostgreSQL 中插入图像文件

Java:将 lambda 存储为值的映射

java - 如何在java中调用axis apache客户端

Java:两个扫描仪读取同一输入文件。可行吗?有用?

mysql - Slick 2.1.0 和 Traits 中的外键关系