miércoles, 26 de junio de 2013

Compilación en C#

Hablemos un poco del proceso de compilación de C#. Este artículo será muy interesante pues integra muchos de los conceptos prácticos que involucra la escritura de código fuente en lenguaje C# para su posterior compilación a un assembly (ensamblado) ejecutable (.exe).

- ¿Qué es la compilación?:

La compilación es el proceso de traducción de código fuente (uso de palabras del inglés, entendible por los humanos o lenguaje de alto nivel) a código objeto (interpretable por la máquina, lenguaje de bajo nivel). Este proceso está compuesto, normalmente, por las siguientes fases:
  • Análisis léxico
  • Preprocesamiento
  • Parseo
  • Análisis semántico
  • Generación de código objeto
  • Optimización de código
- Compilación en C#:

El código fuente escrito en lenguaje C# se escribe en archivos de texto plano con extensión .cs. .NET Framework posee compiladores para todos lenguajes compatibles con la CLR, para el caso particular, tenemos a csc.exe que se ejecuta desde la línea de comandos y al que se le debe pasar un archivo (o varios, inclusive) para generar un assembly (o ensamblado).

Un assembly, es la unidad de empaquetamiento y despliegue en .NET Framework. Hay dos tipos de assembly, los ejecutables (o de proceso) o las librerías. En el caso de los procesos, tenemos aplicaciones Windows y de consola, para que sea así deben tener como punto de entrada el método Main. Por otro lado, las librerías pueden ser referenciadas desde aplicaciones que las incluyen en los proyectos; a diferencia de los procesos, las librerías (.dll) no poseen un punto de entrada. Adicionalmente, se puede ver a .NET Framework como un conjunto de librerías para distintos propósitos (e.g., creación de interfaces gráficas, algoritmos numéricos, conexión a base de datos, acceso a datos, criptografía, acceso a red, entre otros más).

El proceso de compilación en C# puede ser realizado desde el entorno de desarrollo integrado Visual Studio [2] o desde la línea de comandos [3]. A continuación presento un ejemplo sencillo acerca del proceso de compilación del programa en código fuente MiPrimerPrograma.cs:

Así compilamos a MiPrimerPrograma.cs:
csc MiPrimerPrograma.cs
La Figura 1 muestra todo el proceso de compilación y ejecución del programa anterior.
PrimerPrograma.cs
Figura 1. Compilación y Ejecución de MiPrimerPrograma.cs

[Nota: El compilador de C# se encuentra en la siguiente ruta %SystemRoot%\Microsoft.NET\Framework\ donde %SystemRoot% es el directorio para Windows.]

Si quisiéramos producir una librería (.dll), ejecutamos el siguiente comando:
csc /target:library MiPrimerPrograma.cs

Conclusiones:

Se ha podido ver que el proceso de compilación es análogo a una traducción de un lenguaje natural a otro. Este proceso involucra varias fases bien definidas que permiten traducir código fuente (en lenguaje de alto nivel) a código objeto (en lenguaje de bajo nivel: entendible por la máquina). Para efectos prácticos, se ha incluido un ejemplo para compilar y ejecutar un programa escrito en lenguaje C#.

Glosario:

- Análisis léxico
- Código fuente
- Compilación
- Compilador
- Ejecutable
- Exe
- IDE

Referencias:
[1] Compiler - http://en.wikipedia.org/wiki/Compiler
[2] Microsoft Visual Studio - https://en.wikipedia.org/wiki/Microsoft_Visual_Studio
[3] Command Prompt - http://en.wikipedia.org/wiki/Command_Prompt
H

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.