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