繁体   English   中英

Gosu C#是否为JVM?

[英]Is Gosu C# for the JVM?

我收集的内容来看,Gosu只是JVM的C#(这是一件好事)。 这是真的吗? Gosu和C#之间有什么区别(除了类库以及它在JVM上运行的事实)?

我们没有将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#的一部分:

  • 自定义值类型
  • 运算符重载
  • LINQ
  • 需要时动态打字

我认为将Gosu视为“JVM的C#”而不是“混合Java的一些JVM语言,C#的位和其他语言的一些位”是错误的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM