我正在学习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 文件作为一等公民:
在功能方面,开放类型系统是 Gosu 和其他静态类型 JVM 语言之间的真正区别。
话虽如此,目前不幸的现实是 Scala 在某些领域比 Gosu 成熟得多,尤其是在工具方面。在所有主要的 IDE 中都对 Scala 提供了很好的 IDE 支持。我们有一个 Gosu 的 Eclipse 插件,但它仍处于起步阶段。同样,我们的 IntelliJ 插件也很新。
Scala 有一个非常完整的 Web 框架 Lift。我不是他们的方法的 super 粉丝,但它是完整的并且很多人喜欢它。
Gosu 也有一个 Web 框架:
我喜欢 Ronin 的方法,但我会的,不是吗? Ronin 是由非常了解 Gosu 的人构建的,因此它利用了该语言的许多功能。
希望对您有所帮助。实际上,如果我今天开始一个项目,我可能会因为工具支持而选择 Scala。但是,如果您想朝另一个方向发展,特别是如果您的项目涉及 Web 服务或 XSD 处理,那么 Gosu 可能是一种值得使用的语言。从长远来看,我希望 Gosu 将成为 JVM 开发人员的务实选择,但只有时间会证明一切。
关于java - Scala 和 Gosu(与 Java 相关)之间的本质异同是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975428/