2010-11-09 9 views
5

De lo que I gather, Gosu es simplemente C# para la JVM (que es algo bueno). ¿Es verdad? ¿Cuáles son algunas diferencias entre Gosu y C# (excepto la biblioteca de la clase y el hecho de que se ejecuta en JVM)?¿Es Gosu C# para JVM?

Respuesta

7

No. Si nos fijamos en la página "diferencias notables" (diferencias entre Java y Gosu) verá un montón de cosas que son como C#, sino también lo que no son en C#, tales como insensibilidad a mayúsculas y haciendo que los puntos y coma sean opcionales. También hay cosas que ciertamente no se mencionan pero que forman parte de C#:

  • tipos de valor personalizado
  • sobrecarga de operadores
  • LINQ
  • tipado dinámico donde se requiera

creo sería un error considerar a Gosu como "C# para la JVM" en lugar de "un lenguaje JVM que mezcla bits de Java, bits de C# y algunos bits de otros idiomas también".

+1

Lástima, me gusta C# pero necesito programar en la JVM. Gracias. – ripper234

+2

@ ripper234: ¿Por qué no probar Scala? – missingfaktor

19

No creamos Gosu para que sea un idioma u otro para JVM. En cambio, creamos que Gosu es un lenguaje útil para la JVM. Además, reconocimos que Gosu necesitaba estar familiarizado con la multitud de programadores existentes que se sienten más cómodos con el modelo imperativo orientado a objetos. Para lograrlo, tomamos prestado muchos idiomas, por ejemplo, Java, C#, EcmaScript, Ruby y algunos otros. El resultado, creemos, es un lenguaje que está posicionado de manera única en la JVM.

Lo que es completamente único de Gosu, sin embargo, es tipo abierto sistema.

El sistema de tipo Gosu consiste en un configurable cantidad de cargadores tipo. La responsabilidad principal de un cargador de tipos es resolver un nombre de tipo en su dominio y devolver una implementación de la interfaz IType de Gosu. Esto es lo más exclusivo de Gosu: su sistema de tipos está abierto a otros dominios para participar con una representación de primera clase. Con frecuencia utilizo el término, DST (tipo específico de dominio), para transmitir la idea. Por ejemplo, Gosu no discrimina entre una clase Gosu, una clase Java o un tipo XML, o lo que sea; todos son solo tipos del compilador de Gosu. Consulte DynamicType example en la descarga para tener una idea de la potencia y la amplitud que ofrece el sistema de tipo abierto. Básicamente, el ejemplo demuestra que los "tipos dinámicos donde sea necesario" de C# pueden ser simplemente un nuevo dominio de cargador de tipo en Gosu. O consulte el marco Ronin para ver con qué facilidad los dominios de la web y de la base de datos se pueden mapear perfectamente en Gosu.

Es importante comprender que no todos los dominios de cargador de tipo en Gosu son necesarios para producir bytecode. Aquellos que implementan una interfaz para llegar a la clase Java correspondiente. Aquellos que no proporcionan controladores de llamadas y acceso a propiedades para evaluaciones reflectivas de MethodInfo y PropertyInfo, respectivamente. Tenga en cuenta que todos los tipos proporcionan TypeInfo, consulte IType.getTypeInfo(). Por ejemplo, el analizador funciona en contra de las abstracciones TypeInfo, MethodInfo, etc. como medios para un campo de juego de nivel entre tipos dispares. Sin embargo, en tiempo de ejecución, a menos que un tipo proporcione una clase de bytecode de Java, MethodInfos y PropertyInfos también son responsables de manejar las llamadas.

+0

He visto referencias a Gosu como un lenguaje utilizado para juegos; ¿Es ese el mismo Gosu que usa la industria de seguros, o no tiene conexión? –

+1

No, las referencias "Gosu" en los hilos de juego no tienen nada que ver con el lenguaje de programación Gosu. –