Estaba escuchando Hanselminutes Podcast 158 donde Joel Spolsky menciona que Wasabi es un lenguaje .NET de primera clase. Qué significa eso?¿Qué es un lenguaje .NET de primera clase?
Respuesta
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".
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.
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.
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.
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.
"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.
Me gustaría que las personas que rechazaron una respuesta correcta al menos comenten por qué, pero creo que tendré que vivir con eso. –
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").
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.
- 1. ¿Qué es un lenguaje lambda?
- 2. ¿Qué es una construcción de programación de primera clase?
- 3. ¿Qué son los objetos de "primera clase"?
- 4. ¿Qué es un lenguaje de plantillas?
- 5. ¿Qué es un lenguaje de programación formal?
- 6. ¿Qué es un lenguaje de pegamento?
- 7. Por qué .NET es un Framework y Java es un lenguaje
- 8. ¿Qué es este lenguaje?
- 9. Además de un lenguaje declarativo, ¿SQL es un lenguaje funcional?
- 10. ¿Qué es un dominio de aplicación .NET?
- 11. ¿Cómo crear un lenguaje de programación .Net?
- 12. .Net - ¿Qué es un "desenrollar"?
- 13. ¿Por qué C no es un lenguaje dinámico?
- 14. ¿Qué lenguaje de scripting para nuestro IDE basado en .NET?
- 15. ¿Es R un lenguaje compilado?
- 16. ¿Qué es un chunker en Procesamiento de lenguaje natural?
- 17. ¿Cómo hacer un lenguaje .Net o JVM?
- 18. ¿Qué es un dominio de aplicación .NET?
- 19. ¿Por qué Scheme no admite entornos de primera clase?
- 20. ¿Qué es un módulo administrado .NET?
- 21. ¿Para qué es el lenguaje M?
- 22. ¿JavaScript es un lenguaje de aplicación?
- 23. ¿Qué tan estable es el lenguaje Groovy?
- 24. ¿Qué se entiende por 'objeto de primera clase'?
- 25. ¿Qué parte del lenguaje C# es .ForEach()?
- 26. ¿XSLT es un lenguaje de programación funcional?
- 27. ¿Qué lenguaje .NET usa para escribir Pruebas Unitarias?
- 28. .NET lenguaje para programación simultánea
- 29. ¿Qué significa que Javascript es un lenguaje basado en prototipos?
- 30. ¿Desempeño dinámico del lenguaje .NET?
".NET", el CLR y IL tienen características que C# no admite. – MichaelGG