2010-11-09 47 views

回答

7

號如果你看「顯着差異」頁面(Java和古藪之間的差異),你會看到很多的東西如C#,也是事在C#這樣的作爲不區分大小寫並使分號可選。還有,這當然沒有被提及,但事情是C#的一部分:

  • 自定義值類型
  • 操作符重載
  • LINQ
  • 動態類型在需要

我想將Gosu視爲「用於JVM的C#」而不是「混合Java位,C#位和其他語言的某些位的JVM語言」將是錯誤的。

+1

太糟糕了,我喜歡C#但需要在JVM上編程。謝謝。 – ripper234 2010-11-09 09:13:35

+2

@ ripper234:爲什麼不嘗試Scala? – missingfaktor 2011-07-25 22:47:19

19

我們沒有將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也負責處理調用。

+0

我曾經參考過Gosu作爲遊戲中使用的語言;與保險業使用的是相同的Gosu還是沒有關係? – 2016-01-15 17:39:49

+1

不,遊戲線程中的「Gosu」引用與Gosu編程語言無關。 – 2016-02-04 20:33:15