从I gather开始,Gosu只是JVM的C#(这是一件好事)。这是真的吗? Gosu和C#之间有什么区别(除了类库以及它在JVM上运行的事实)?
答案 0 :(得分:20)
我们没有将Gosu构建为JVM的一种语言或另一种语言。相反,我们将Gosu构建为JVM的有用的语言。此外,我们认识到Gosu需要熟悉那些对命令式,面向对象模型最熟悉的现有程序员。为了实现这一点,我们大量借用了几种语言,例如Java,C#,EcmaScript,Ruby和其他一些语言。我们认为,结果是一种独特地定位在JVM上的语言。
Gosu的独特之处在于它是开放式系统。
Gosu的类型系统由可配置数量的类型加载器组成。类型加载器的主要职责是解析其域中的类型名称并返回Gosu的IType接口的实现。这是Gosu最独特的 - 它的类型系统对其他领域开放,可以参与一流的代表。我经常使用术语DST(域特定类型)来理解这个想法。例如,Gosu不区分Gosu类,Java类或XML类型或者您拥有的内容;他们都只是Gosu编译器的类型。查看下载中的 DynamicType example ,了解开放式系统提供的强大功能和广度。本质上,该示例演示了C#的“动态类型在必要时”可以简单地成为Gosu中的新类型加载器域。或者查看Ronin框架,了解Web和数据库域可以轻松地无缝映射到Gosu。
重要的是要理解并非Gosu中的所有类型加载器域都需要生成字节码。那些确实实现了获取相应Java类的接口的那些。那些不分别为反射MethodInfo和PropertyInfo评估提供调用处理程序和属性访问器的程序。注意所有类型都提供TypeInfo,请参阅IType.getTypeInfo()。例如,解析器针对TypeInfo,MethodInfo等抽象作为不同类型之间的公平竞争场的手段。但是,在运行时,除非类型提供Java字节码类,否则MethodInfos和PropertyInfos也负责处理调用。
答案 1 :(得分:8)
没有。如果你看一下“值得注意的差异”页面(Java和Gosu之间的差异),你会看到很多 的东西,比如C#,还有不是在C#中,如不区分大小写,并使分号可选。还有一些事情当然没有提到,但它们是C#的一部分:
我认为将Gosu视为“JVM的C#”是错误的,而不是“混合Java的一些JVM语言,C#和其他语言的一些位”。