remarks generate example compiladores c# compiler-construction compiler-as-a-service roslyn

generate - remarks c#



¿Qué harías con el compilador como servicio? (5)

Viendo que probablemente obtendremos esta característica en la próxima versión

No hemos anunciado la programación ni el envío de vehículos para ninguna característica o producto asociado con la estrategia de "compilador como servicio". CaaS es una estrategia prospectiva a largo plazo sobre cómo esperamos construir arquitecturas de compiladores en el futuro. No es una característica del lenguaje, es una estrategia para construir herramientas. En el reciente PDC, Anders hizo algunas demostraciones del tipo de cosas que uno podría hacer con esas herramientas, pero específicamente no dijo cuándo se enviaría algo así. No deberías esperar que sea pronto. La única característica que hemos anunciado en la próxima versión es la función de espera asíncrona de C # 5, y tampoco hemos anunciado un cronograma para eso.

¿Cuáles son algunas de las cosas que cree que podrá hacer o las cosas que le gustaría usar para usar esta función?

Aunque personalmente estoy muy interesado en las respuestas a esta pregunta, observo que no es un buen candidato para una pregunta de StackOverflow. Es vago, especulativo y subjetivo, en lugar de tratarse de un problema técnico de codificación específico.

Gracias por dar sus escenarios sin embargo; me son útiles

ACTUALIZACIÓN: octubre 2011

Acabamos de enviar una versión preliminar del proyecto "Compilador como servicio", también conocido como "Roslyn".

Todavía no estamos anunciando un vehículo de barco; Será post Visual Studio 11.

Al ver que probablemente obtendremos esta función en la próxima versión, ¿cuáles son algunas de las cosas que cree que podrá hacer o qué cosas le gustaría usar para hacer esta función?

Personalmente, durante la generación de código (por ejemplo, en una tarea de MSBuild) a veces me gustaría poder asimilar el código en el proyecto y así tener la opción de producir mejor (más código).

Por ejemplo, si tengo una clase parcial que tiene un método parcial con un parámetro de algún tipo que se envía, entonces, en el momento de la generación del código, podría usar esa información para generar un mejor código.

En otras palabras, publico mi "Intención" al momento de escribir el código y podría tener generadores de código para el trabajo pesado.

partial void InitCommandForStoredProc(ref DbCommand command, string storedProcName);

Dada esta información en un método parcial podría generar el código correcto.

Entonces, ¿qué esperan poder hacer con Compiler como servicio?


Creo que haría que el proceso de tejido que hacen los marcos orientados a aspectos sea mucho más poderoso. En este momento, casi todos utilizan alguna técnica de intrusión que pone requisitos en su implementación, como heredar de ContextBoundObject, o hacer que todos sus métodos sean virtuales. Tener CaaS haría que los marcos AOP sean ciudadanos de primera clase en .NET y creo que sería un gran beneficio.


En el episodio 541 de .NET Rocks !, Anders dijo que el tema de C # 5 será Compiler as a Service.

Anders Hejlsberg: Podría decirles que una de las cosas en las que estamos trabajando es este tema y cada lanzamiento ha tenido un tema.

Richard Campbell: Correcto.

Anders Hejlsberg: En 4.0, se podría decir que el tema es Dinámico, y en 3.0 fue LINQ. El tema para 5.0 es el compilador en el servicio, es cómo lo pensamos.

http://www.dotnetrocks.com/text/0541/index12.html

Desde abril de 2010, cuando se emitió este podcast, los nuevos anuncios en el PDC 2010 indican que el tema ya no será Compilador como un Servicio, sino que será la programación Async. No se han hecho anuncios para indicar por qué se requirió un cambio de tema.


Para dar (una) respuesta práctica, el IntelliSense de LINQPad se beneficiará enormemente de CaaS. Permitirá que la autocompletación funcione tanto con C # como con VB (asumiendo que CaaS también funciona para VB). También facilitará la escritura de nuevas herramientas de refactorización.

Danos CaaS, y haré de LINQPad una pieza maestra de lo que puedes hacer con él :)

Esta característica es demasiado buena para esperar hasta que C # 6 / VB 12


Sospecho que la metaprogramación dará un gran salto hacia adelante con CaaS. Me imagino que cosas como las macros de Lisp serán posibles de emular. También espero con interés la posibilidad de manipular la sintaxis para cosas como DSL internos o imitar la sintaxis de otros idiomas, por ejemplo, me gusta la sintaxis de Python para listas y tuplas. No sé lo suficiente sobre CaaS para decir si todo esto es posible, pero puedo imaginármelo.