Introducción a los compiladores de C #

En el artículo C # Compiler, Compiler es un programa de software que convierte el código fuente (el código escrito por cualquier desarrollador en cualquier idioma) en lenguaje de aprendizaje automático para que el procesador pueda entenderlo. El procesador es la parte más importante de la computadora que solo comprende los códigos de la máquina. Por lo tanto, es obligatorio convertir cualquier código de idioma a códigos de máquina.

En C # ejecutamos los compiladores, toma el código como parámetro de entrada y realiza algún procesamiento, después de procesarlo proporciona la salida en el lenguaje intermedio. Esta salida se guarda en archivos * .dll o * .exe

Entonces, después del lenguaje intermedio generado, requerimos convertir este IL a códigos de máquina porque el procesador solo entendió los códigos de máquina. Entonces usamos CLR (Common Language Runtime) para esta conversión. CLR es un programa que se ejecuta en la computadora y cambia el código IL a códigos de máquina con la ayuda de Just-In-Time (comúnmente llamado JIT). Cuando hacemos doble clic en el archivo .exe, se invoca el compilador JIT y compila el código IL en esa parte del tiempo, por eso se llama JUST-IN-TIME (JIT).

La compilación se puede hacer implícita o explícitamente. La compilación implícita es una compilación doble en la que primero se compila IS y luego se compila en lenguaje máquina. Este proceso se llama compilación JIT o compilación JUST-In-Time. JIT admite múltiples plataformas y acelera la ejecución del código.

Tipos de compilador Just-In-Time

Hay tres compiladores Just-In-Time diferentes

1. Compilador Pre JIT

En este compilador, solo hay un único proceso de compilación ya que todo el código fuente se compila en el código nativo.

2. Compilador JIT normal

En este compilador, solo esos métodos se compilan en el código de máquina, que se requiere en tiempo de ejecución. El compilador compila esos métodos, los almacena en la memoria caché y vuelve a utilizar el mismo método.

3. Compilador Econo JIT

En este compilador, solo esos métodos se compilan en el código de máquina que se requiere en un tiempo de ejecución; sin embargo, estos métodos se eliminan si no se requieren. En JIT, solo el método requerido se compila en tiempo de ejecución, por lo tanto, requiere menos uso de memoria.

En el diagrama de arriba

1-3 pasos se ejecutarán en el momento de la compilación

Se ejecutarán 3-5 pasos en el tiempo de ejecución.

Entonces, cuando ejecutamos estos dos tipos de error ocurre.

Errores en tiempo de ejecución y errores del compilador

  • Errores del compilador: este tipo de error se produce en el compilador de C #. Impide que el código C # se compile en formato .exe. Estos errores se producen básicamente debido a un error de sintaxis. Cuando escribimos incorrectamente cualquier sintaxis o omitimos la coma o el punto y coma, el compilador no entendió esto, por lo que detiene el procesamiento y arroja el error en tiempo de compilación. Podemos ver estos errores en la ventana de salida de IDE. Entonces, al examinar estos errores, podemos rectificar nuestro código.
  • Errores de tiempo de ejecución: estos son errores en tiempo real. Esto ocurre cuando el código se compila correctamente pero encuentra algún problema mientras se ejecuta. Esto afecta el comportamiento del código. Por ejemplo, podemos decir que cuando intentamos dividir cualquier número con cero en ese momento se produce un error de tiempo de ejecución. Estos errores son más tediosos que los errores del compilador porque en este caso, necesitamos rectificar el comportamiento del código.

Tipo de compiladores de C #

Los compiladores anteriores de Microsoft fueron nombrados como .Net Framework como C # compiler 2.0, C # compiler 3.5, C # compiler 4.x, etc. Estos compiladores no fueron escritos en C # o podemos decir que C # no fue compilado por C #. Los otros compiladores que surgieron después de esto son:

1. Roslyn

Anteriormente el compilador fue escrito en C / C ++. Roslyn es un compilador de código abierto .Net en el que se reemplaza el código C ++. Obtiene los tipos de elementos en el código, su relación entre sí. Como los equipos de C # y VB escribieron el compilador, por lo tanto, las plantillas de estudio visual disponibles para ambos. Nos permite escribir código que analiza un archivo fuente y nos resulta fácil modificar el código fuente.

Las siguientes son las cuatro capas API de Roslyn.

  • API de secuencias de comandos: esta capa proporciona un contexto de ejecución en tiempo de ejecución y nos permite utilizar C # como lenguaje de secuencias de comandos y no depende de los componentes de Visual Studio.
  • API del compilador: esta capa se utiliza para la sintaxis y contiene referencias para ensamblados y archivos de código fuente. Esta capa tampoco tiene dependencias en los componentes de Visual Studio.
  • API de servicio: esta capa proporciona IntelliSense, formato, Buscar todas las referencias, etc. en la parte superior del SDK. También ayuda a gestionar la información sobre el proyecto y a gestionar las dependencias del proyecto.
  • API del espacio de trabajo: esta capa es principalmente para el análisis de código y la refactorización a través de IDEs. Roslyn facilita el código y consta de un conjunto de API como compilador y servicio que proporciona muchas funcionalidades como formateo, Intellisense, etc. Proporciona soporte para múltiples idiomas. Las API del espacio de trabajo proporcionan información detallada sobre el código fuente.

2. Mono compiladores

Compilador Mono C # basado en estándares ECMA para C #. Tiene múltiples versiones con un marco como C # 1.0, 2.0, 3.0, 4.0. El compilador mono mcs apunta a framework 1.1, gmcs apunta a framework 2.0 mientras que smcs y dmcs apuntan a framework 2.1 y 4.0 respectivamente.

  • mcs: admite todas las características de C # 1.1 como métodos anónimos, tipos anulables, buffers fijos, modificadores de acceso en propiedades, clases estáticas, etc.
  • gmcs : admite características de C # 2.0 como expresiones de consulta, inicializadores de objetos, métodos parciales, expresiones lambda, propiedades implementadas automáticamente, etc.
  • dmcs : admite características de C # 4.0 que incluyen argumentos con nombre, variación de tipo genérico, enlace dinámico, etc.

El otro compilador como RemObjects C # que sigue el estándar C # según la especificación EMCA y aparte de eso hay compiladores GNU C # que implementan C # y .Net.

Conclusión

El compilador de C # es como cualquier otro compilador que compila código en código de máquina para que el procesador pueda entender el proceso.

Artículo recomendado

Esta ha sido una guía para la herramienta de minería de datos. Aquí discutimos una introducción a los compiladores de C # y los diferentes tipos de compiladores Just-In-Time y compiladores de C #. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Compiladores de Python
  2. Compiladores Java
  3. Mejores compiladores de C
  4. Los mejores compiladores de Java
  5. Guía para el compilador de PHP
  6. Modificadores de acceso en PHP