Ich habe gerade einige Whitepapers und Beispiele von Microsoft "Roslyn" gelesen und das Konzept scheint sehr interessant zu sein. Soweit ich weiß, öffnet es die Blackbox, die der Compiler ist, und bietet eine Schnittstelle, über die wir Informationen und Metriken zu in Visual Studio geschriebenem Code abrufen können.
Roslyn scheint auch die Fähigkeit zu haben, Code zu "skripten" und im laufenden Betrieb zu kompilieren / auszuführen (ähnlich dem CodeDom), aber ich habe meiner Erfahrung nach nur begrenzte Verwendungen für diese Art von Funktionalität festgestellt.
Während das Element Code Analysis & Metrics ein interessanter Bereich ist ... gibt es schon sehr lange und es gibt zahlreiche Anbieter, die bereits viel Geld in Tools für Code Analysis & Refactoring investiert haben (z. B. ReSharper, CodeRush) , nCover, etc) und sie machen einen ziemlich guten Job!
Warum sollte sich ein Unternehmen Mühe geben, etwas zu implementieren, das zu einem Bruchteil der Kosten bereitgestellt werden kann, indem eine Lizenz für eines der vorhandenen Tools erworben wird?
Vielleicht habe ich einige Schlüsselfunktionen des Roslyn-Projekts übersehen, die es außerhalb der Domäne der genannten Tools platzieren ...
quelle
Antworten:
On-the-Fly-Kompilierung und Ausführung ist der Hauptvorteil von Roslyn. Ich denke, Sie werden den Nutzen dieser Funktion möglicherweise unterschätzen, weil Sie in Ihrer Erfahrung noch nie auf einen Anwendungsfall gestoßen sind, bei dem sie wirklich glänzt. Und das macht Sinn; Das Erfordernis einer dynamischen Kompilierung ist wahrscheinlich eine Nischenfunktion, die jedoch einige leistungsstarke Anwendungen bietet, die ohne sie viel schwieriger wären.
Hier sind ein paar Beispiele aus dem Kopf, bei denen die dynamische Kompilierung sehr nützlich wäre. Es gibt andere Möglichkeiten, um all diese Dinge zu erreichen, aber Roslyn macht sie einfacher.
Zusammenfassend lässt sich sagen, dass Sie für Roslyn möglicherweise nie eine Verwendung finden, je nachdem, für welche Software Sie Ihre Zeit mit dem Schreiben verbringen. Es gibt jedoch viele Anwendungsfälle, in denen Roslyn viel auf den Tisch bringt. Keines der von Ihnen genannten Tools bietet diese Funktion. Sie konnten sich auch nicht auf ihre Architektur und ihren Zweck stützen.
quelle
Ich bin sicher, dass Unternehmen, die Werkzeuge anbieten (z. B. JetBrains *), großes Interesse an Roslyn haben. Microsoft möchte die Erstellung von Tools vereinfachen, da gute Tools die Nutzung des Microsoft-Ökosystems fördern.
* Laut dem JetBrains-Blog ( dieser Eintrag ) hat JetBrians angekündigt, dass sie Roslyn nicht verwenden werden. Ich stelle mir jedoch vor, dass alle neuen Mitbewerber von JetBrains (die nicht über eine bereits vorhandene Codebasis verfügen, auf der sie arbeiten können) Roslyn verwenden werden. es gibt ihnen einen Vorsprung.
Frage 6 in 10 Fragen, 10 Antworten auf Roslyn :
quelle
Ich bin gespannt auf den Tag, an dem alle Compiler Compiler as a Service (CaaS) routinemäßig anbieten. Wir müssen aufhören zu denken, dass Compiler nur Pre-Linker-Code ausgeben, und anfangen zu denken, dass Compiler Bäume ausgeben, die in mehrere Ziele umgewandelt werden können. Alle Compiler sollten über eine Funktion zur Ausgabe von Bäumen und optional über JSON / XML verfügen. Die Ausgabe kann dann in viele Arten von Zielen umgewandelt werden, z. B. verschönerte gleiche Sprache, C, IL-Quelle, IL-Binärdatei, Java, Javascript, LLVM, ausführbare PIC-Datei und sogar Pre-Linker-Code.
Ich schreibe Compiler für den Lebensunterhalt. Meine Kunden werden über CaaS verkauft, weil dies die Tür zu fantastischer Flexibilität, Portabilität und Analyse öffnet.
Ich bin wirklich enttäuscht, dass Microsoft CaaS vor langer Zeit nicht implementiert hat. Beispielsweise könnte es als Migrationspfad für VB6 zu etwas anderem oder .Net zu C ++ verwendet worden sein.
quelle
Die einfache Antwort, warum MSFT in Roslyn investiert, ist, dass die vorhandene Codebasis für den C # -Compiler jetzt 5 Versionen alt ist - 11 Jahre. Es ist eine lange Zeit, bis eine Codebasis überschaubar bleibt. Da sie neu schreiben, haben sie beschlossen, in dieses Verfahren zu investieren, damit alle seine Interna als APIs verfügbar gemacht werden.
quelle