Wenn der C # -Compiler in C # geschrieben wird, kann man ihn dann ändern?

7

Ich wundere mich darüber, ob man aus Bequemlichkeit eine neue Funktionalität implementieren kann.

Wird das möglich sein, wenn es draußen ist?

C # 5.0: Compiler als Service:

Ссылка

    
Joan Venge 12.06.2009, 19:34
quelle

5 Antworten

11

Anders Hejlsberg sagte:

  

Es ist eine der Richtungen, die wir für zukünftige Versionen von   C #. Tatsächlich sehe ich Meta-Programmierung als Teil unseres größeren "Compilers"   als Service-Thema, an dem wir für eine zukünftige Version arbeiten. Wir   Wir möchten unseren Compiler öffnen, damit er zu einer API wird, die Sie aufrufen können   kompilieren Sie ein Stück Code und erhalten Sie Expressionsbäume und / oder IL zurück. Dies   ermöglicht eine ganze Reihe von Szenarien, z. B. die Anwendung   Programmierbarkeit, eine interaktive Eingabeaufforderung, benutzerdefinierte Refactorings und   domänenspezifische Sprachen, in die kleine Inseln von C # eingebettet sind   sie.
Quelle

Er sagte auch woanders (in Kanal9 Interview), dass sie den Kern des C # -Compilers auf verwalteten Code portierten, um dies zu ermöglichen.

Es gibt eine Demo , die vom letzten PDC verfügbar ist. Der C # -Compiler ist in der Tat verwalteten Code.

    
Richard Hein 12.06.2009, 23:02
quelle
5

Das hängt wirklich von vielen verschiedenen Dingen ab. Einschließlich, aber nicht beschränkt auch ...

  1. Wird Microsoft einen C # -Compiler in C # schreiben?
  2. Wird der Compiler in Quell- und Binärform oder nur in Binärform ausgeliefert?
  3. Möchten Sie eine binäre Erweiterung schreiben oder nur die Quelle ändern?
  4. Unter welcher Lizenz werden die Quelle und die Binärdatei aufgeführt?
  5. Möchten Sie die Binärdatei in einem kommerziellen oder Hobby-Projekt verwenden?

Was nun die Antworten auf diese Fragen sind, ich habe keine Ahnung. Ich glaube auch nicht, dass es auf die eine oder andere Art eine Antwort auf die grundlegende Frage Nr. 1 gibt. Die Gesamtantwort ist also ein großes "Weiß nicht"

    
JaredPar 12.06.2009 19:38
quelle
3

Ernsthaft. NEIN. Dies wäre ein Support-Albtraum für Microsoft. "Bootstrapping" -Compiler, dh Compiler, die die Sprache kompilieren, in der sie geschrieben sind, gibt es seit mindestens den 70ern. Das hat nichts damit zu tun, den Kunden den Quellcode ändern zu lassen, Supportfähigkeit ist das ganze Thema. Fürs Erste sind VS-IDE-Add-Ins ungefähr so ​​nah wie möglich.

    
RBarryYoung 12.06.2009 19:44
quelle
3

Wenn ich Ihre Frage richtig verstehe, dann denke ich, dass die Antwort ein partielles Ja ist: Der Aufbau eines C # -Compilers in C # (oder eigentlich in .NET) würde es sehr einfach machen, Hooks im Kompilierungsprozess zu entdecken, die Benutzer wären in der Lage, innerhalb der Sprache selbst zu verwenden.

Als Beispiel für eine .NET-Sprache mit einem .NET-Compiler lesen Sie Boo . Da Boo's Compiler in .NET geschrieben ist (meistens in C # und einem kleinen Boo, um genau zu sein), ist es sehr einfach, sich mit Kompilierungsmakros und Meta-Programmierung in den Kompilierungsprozess einzuklinken.

Ich stelle mir vor, dass, wenn der C # -Compiler selbst in C # geschrieben wird, die Meta-Programmierung von C # viel einfacher und ziemlich unvermeidbar wird. Ich bezweifle jedoch, dass Microsoft den gesamten Compiler "vom Benutzer modifizierbar" machen würde, da dies, wie in anderen Antworten angegeben, einen Support-Albtraum bedeuten würde. Andere quelloffene C # -Compiler existieren jedoch und könnten in ihrer Vorgehensweise liberaler sein.

    
Avish 12.06.2009 19:56
quelle
2

Ja, die C # -Version des Compilers wäre die "offizielle Microsoft C #", und Sie könnten damit Ihre "eigene C # -Sprache" erstellen. Dann könnten Sie einen Compiler erstellen, der in Ihrer "eigenen C # -Sprache" geschrieben wurde, um sich selbst oder andere Programme zu kompilieren

    
Samuel Carrijo 12.06.2009 19:39
quelle

Tags und Links