tutorial - lenguaje de programacion c# ejemplos
¿En qué idioma está escrito el compilador de C#? (3)
El compilador original de C # no estaba escrito en C #, estaba en C y C ++. El nuevo compilador de Roslyn se escribió en C #, pero inicialmente se compiló con el compilador anterior. Una vez que el nuevo compilador estuvo listo, pudo compilar su propio código fuente: esto se llama bootstrapping .
Miré el código fuente en http://referencesource.microsoft.com/ , y parece que todo el código fuente está en C #.
También miré el código fuente de la nueva plataforma del compilador de C # ( Roslyn ), y también está en C #. ¿Cómo es eso posible? ¿Está el compilador de lenguaje C # escrito en C #? ¿O me estoy perdiendo algo obvio? Si el compilador de C # está escrito en C #, ¿cómo funciona?
Los compiladores son programas de utilidad: convierten el texto del lenguaje de programación en código de máquina. Si el lenguaje de programación describe software que resulta ser un compilador .....
Los compiladores también pueden producir código de máquina para otras arquitecturas. Por ejemplo, Apple compila iOS usando bastidores de servidores basados en Intel. El compilador no tiene que ejecutar el código ARM que genera, solo escríbalo en el disco.
El compilador 2.0 debe estar escrito en un lenguaje que el compilador 1.0 pueda procesar, pero ciertamente puede crear el compilador 2.0 con nuevas características como la optimización. Luego puede volver a compilar el código fuente usando el compilador 2.0 y hacer una mejor versión de sí mismo. Nuevamente, el compilador no sabe que está haciendo otra versión de sí mismo.
Si retrocedemos lo suficiente en las brumas del tiempo, 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 códigos de operación y escribir el primero en conjunto. ¿Cómo escribimos el primer ensamblador? Entrada directa de código de máquina, probablemente en cinta de papel perforada, o interruptores en el panel frontal.
Un compilador es solo un programa como cualquier otro programa. No hay nada mágico o especial al respecto. Toma algo de entrada y produce algo de salida. En este caso particular, la entrada es C # y la salida es CIL, pero eso no es diferente de que la entrada sea una serie de declaraciones de impuestos y la salida sea un informe.