是的,我们的语言比较表很大程度上是一个笑话。尤其是“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文件作为一等公民:
在功能方面,开放类型系统是Gosu和其他静态类型JVM语言之间的真正区别。
话虽如此,现在不幸的现实是,Scala在某些领域比Gosu成熟得多,尤其是工具。在所有主要的IDE中,Scala都有很好的IDE支持。我们有一个用于Gosu的Eclipse插件,但它仍处于起步阶段。同样,我们的IntelliJ插件非常新。
Scala有一个非常完整的Web框架,Lift。我不是他们方法的忠实粉丝,但它是完整的,很多人喜欢它。
Gosu也有一个Web框架:
我喜欢Ronin的方法,但我会的,不是吗?Ronin是由非常了解Gosu的人构建的,因此,它利用了该语言中的许多功能。
希望有所帮助。实际上,如果我今天开始一个项目,我可能会因为工具支持而选择Scala。但是,如果你想从另一个方向上走出来,特别是如果你的项目涉及Web服务或XSD处理,Gosu可能是一种有益的语言。从长远来看,我希望Gosu将成为JVM开发人员的务实选择,但只有时间会证明一切。
Gosu比较表对Scala来说有点不公平:从Java的过渡很容易(你不必在一开始就使用所有花哨的Scala东西),对于重新定义的泛型,Scala没有一个完美的,但可行的解决方案,称为Manifests。当然,缺少Scala闪耀的类别(模式匹配,更高种类的类型......
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-