2009-06-25 12 views

Respuesta

5

Describir un idioma como un idioma .NET de primera clase es una descripción subjetiva. Se refiere a un lenguaje .NET que admite todas las características .NET CLR (en el mundo real creo que esto significa que admite más de las características).

También se ha usado tradicionalmente para describir un lenguaje que ayuda a dar forma al .NET CLR, lo que significa que dudo que Wasabi sea un verdadero lenguaje de primera clase.


actualización

cita de un article describiendo cómo F # es un lenguaje de primera clase .NET.

"Esto significa que F # se ejecuta en el CLR, abarca programación orientada a objetos y tiene características para garantizar una integración sin problemas con .NET Framework".

1

Significa que es totalmente compatible con .net y, a la inversa, admite todas las características de .nets. No hay limitaciones impuestas sobre eso. Todo lo que se puede hacer en un "lenguaje de primera clase" se puede hacer igualmente bien en otro.

C#, VB.net, IronPython etc. son todos idiomas de primera clase. XAML sin embargo no lo es. Se usa en partes de .net, pero ciertamente no se puede hacer todo en él.

+0

".NET", el CLR y IL tienen características que C# no admite. – MichaelGG

3

Por lo que yo sé, no hay una definición clara de "lenguaje de primera clase .NET". Creo que simplemente se refiere a los idiomas que admiten la mayoría de las características que ofrece el CLR.

0

Entiendo que significa "compila directamente a bytecode .NET" (en lugar de codificar código a C#), y también que sería capaz de usar las bibliotecas .NET estándar.

0

Creo que en ese contexto, significaba no solo que había un compilador de wasabi para IL, sino también que había compatibilidad con Visual Studio/tool.

También puede significar que los tipos, etc., son todos tipos .Net, en lugar de estar asignados a objetos equivalentes de .Net en tiempo de compilación?

Supongo que un lenguaje de primera clase tradicionalmente tendría todos los juguetes (Reflexión, generación de código, etc.) donde una segunda clase podría compilarse para IL, y no mucho más.

3

"Idioma de .NET de primera clase" no es un término oficial.

Oficialmente, un idioma puede ser Common Language Specification (CLS) -compliant y así poder interoperar con otros lenguajes CLS-obedientes.

(Nota:. Por supuesto, ser compatible con CLS es una propiedad del software que escribe, y por lo tanto, del conjunto que producen una CLI language le permitirá escribir código compatible con CLS, pero no lo hará vigor usted puede hacerlo. Puede escribir un ensamblaje no compatible con CLS en C#, por ejemplo, utilizando tipos sin firmar en su API pública.)

Sin embargo, dado que (nuevamente) no hay una definición oficial de "primera clase .NET ", algunas personas pueden no considerar que están trabajando en un lenguaje .NET de" primera clase "a menos que puedan usar WPF o (mañana) Contratos de código, que es claramente mucho más exigente que el requisito de cumplimiento CLS.

+0

Me gustaría que las personas que rechazaron una respuesta correcta al menos comenten por qué, pero creo que tendré que vivir con eso. –

1

parte de ILASM ningún lenguaje .NET soporta todas las características del CLR

En mi libro, un lenguaje de primera clase es un lenguaje que compila a IL y produce código verificable es decir, se puede desmontar el conjunto nuevo a la original código, por ejemplo, utilizando Reflector ("disparo circular").

2

Como se ha mencionado un par de veces no hay una definición oficial, pero un lenguaje de .NET de primera clase es esencialmente uno que puede crear comió ensamblajes compatibles con CLS y los consumió.

Si está aburrido y quiere leer el ECMA CLI specifications, encontrará que distinguen entre los marcos CLS (ensamblajes que cumplen con CLS), los consumidores CLS (compiladores que pueden consumir estructuras CLS) y los extensores CLS (compiladores que pueden crear Marcos CLS).

En la especificación de la CLI hablamos una 1.ª clase. El lenguaje .NET es, por lo tanto, un lenguaje cuyo compilador puede actuar como un CLS Consumer y un CLS Extender.

Cuestiones relacionadas