¿En qué idioma está escrito el compilador de C#?


Miré el código fuente en http://referencesource.microsoft.com / , y aparece todo el código fuente en C#.

También miré el código fuente para la nueva plataforma de compilador de C# ( Roslyn), y también está en C#. ¿Cómo es eso posible? ¿El compilador del lenguaje C# está escrito en C#? ¿O me estoy perdiendo algo obvio? Si el compilador de C# está escrito en C#, ¿cómo funciona?

Author: Shahzeb, 2014-12-16

3 answers

El compilador original de C# no estaba escrito en C#, estaba en C y C++. El nuevo compilador de Roslyn fue escrito en C#, pero inicialmente fue compilado con el antiguo compilador. Una vez hecho el nuevo compilador, fue capaz de compilar su propio código fuente: esto se llama bootstrapping.

 213
Author: Thomas Levesque,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-03 21:06:28

Los compiladores son programas utilitarios - convierten el texto del lenguaje de programación en código máquina. Si el lenguaje de programación describe un software que resulta ser un compilador.....

Los compiladores también pueden producir código máquina para otras arquitecturas. Por ejemplo, Apple compila iOS utilizando racks de servidores basados en Intel. El compilador no tiene que ejecutar el código ARM que genera, simplemente escríbalo en el disco.

El compilador 2.0 debe estar escrito en un lenguaje que el compilador 1.0 pueda procesar, pero sin duda puede crear compilador 2.0 con nuevas características como la optimización. A continuación, puede volver a compilar el código fuente utilizando compilador 2.0 y hacer una mejor versión de sí mismo. De nuevo, el compilador no sabe que está haciendo otra versión de sí mismo.

Si retrocedemos lo suficiente en las nieblas del tiempo, entonces llegamos a un punto en el que no tenemos compilador, la primera iteración de un lenguaje de alto nivel. Luego tenemos que sacar los lápices y los libros de opcode y escribir el primero en assembly. Cuan ¿escribimos el primer ensamblador? Entrada directa de código de máquina, probablemente en cinta de papel perforada, o volteando interruptores en el panel frontal.

 31
Author: paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-17 00:06:01

Un compilador es simplemente un programa como cualquier otro programa. No hay nada mágico o especial. Toma algo de entrada y produce algo de salida. En este caso particular, la entrada sólo pasa a ser C# y la salida sólo pasa a ser CIL, pero eso no es diferente de la entrada es una serie de declaraciones de impuestos y la salida es un informe.

 14
Author: Jörg W Mittag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-17 06:06:32