aus dem verlinkten Artikel Genommen:
Hejlsberg zeigte ein C# Programm, das ein paar Code-Schnipsel zu der C# -Compiler als Strings übergeben; der Compiler zurückgegeben den resultierenden IL Assembler-Code als ein Objekt, das dann an der gemeinsamen Language Runtime (CLR) zur Ausführung übergeben wurde. Voilà! Mit Roslyn erhält C# die dynamische Sprache , mit der Code zur Laufzeit generiert und aufgerufen werden kann.
Der Teil von:
[...] C# gewinnt eine dynamische Fähigkeit, Sprache zu erzeugen und Code zur Laufzeit aufzurufen.
... ist nur eine sehr falsche Annahme durch den Blog-Post Autor gemacht ...
Code aus einer Anwendung kompilieren lässt sich nicht C# in eine dynamische Sprache oder es doesn 't neuen C# Compiler in einem Ersatz eines Interpreters ...
C# konnte Code zur Laufzeit seit seiner Gründung mit Reflection Emit generieren. Es scheint, wie der neue Compiler nicht dieses Feature hinzufügen, aber trotzdem ist es einfacher, Code aus regulären C# -Code mit dem neuen Compiler zu generieren als mit Reflection auszusenden. Darüber hinaus, wie @hvd in einigen Kommentaren festgestellt hat, war es auch seit C# Einführung mit CSharpCodeProvider
möglich.
C#, da .NET 4.0 kann mit dynamischen Sprachen interoperabel mit der Dynamic Language Runtime, die erstellt wurde, um die Tür zu öffnen Sprachimplementierungen auf der .NET zu interpretieren (und auch COM-Interop zu erleichtern. ..).
Über die andere Frage (die Sache über dekonstruiert Compiler), bedeutet dies, dass die neue C# Compiler ermöglicht es Ihnen, einen anderen Code einzuhaken Aktionen auf Schritte C# Zusammenstellung basiert auszuführen.
Ich würde einen Blick auf Roslyn Overview on GitHub nehmen, wo viele Details sind da, die mehr Tiefe zu dem Thema geben sollte.
Ein "dekonstruierter" Compiler ist einer, dessen Elemente verfügbar sind. Dies ermöglicht es, dass Nicht-Compiler-Builder einige Compiler-ähnliche Aufgaben ausführen können. Eine allgemeinere Alternative ist ein Programmtransformationssystem https://en.wikipedia.org/wiki/Program_transformation, das Compiler-ähnliche Maschinen für eine Vielzahl von Sprachen verfügbar macht, anstatt nur eine. Siehe meine Biographie für einen Link zu Details über eine dieser. –