1. Compilador de C#
El ordenador no entiende el lenguaje humano. Ni siquiera entiende los lenguajes de programación. Solo entiende programas escritos en código máquina — hechos de ceros y unos.
Para los perros hay comandos como "Al lado", "Pata" y otros, y cuando los oyen hacen algo importante. Para el ordenador, esos comandos son números: cada comando está codificado por un número (también llamado código máquina).
Escribir un programa en forma de números es muy complicado, así que la gente inventó lenguajes de programación y compiladores. Un lenguaje así, por un lado, es comprensible para las personas, y por otro, para el compilador. El compilador es un programa especial que traduce el texto de un programa escrito en un lenguaje de programación a un conjunto de códigos máquina.
Normalmente, el programador escribe el programa en un lenguaje de programación y luego ejecuta el compilador, que a partir de los archivos de código escritos por el programador crea un solo archivo con código máquina — el programa final (compilado).
- Programa en lenguaje C++
-
Compilador
- Programa hecho de códigos máquina
El programa resultante puede ejecutarse directamente en el ordenador. El problema de este enfoque es que el código del programa depende mucho del procesador y del sistema operativo. Un programa compilado para Windows no funcionará en un móvil con Android.
Si escribiste un programa para Android, en el sistema operativo Windows ¡no se va a ejecutar!
Pero C# tiene un enfoque mucho más innovador.
- Programa en lenguaje C#
-
Compilador de C#
- Programa hechode códigos IL especiales (byte‑code)
-
CLR
- Programa hecho de códigos máquina
El compilador de C# no compila todas las clases en un solo programa de código máquina. En vez de eso, compila tu código no en código máquina, sino en un código intermedio especial IL (byte-code). La compilación a código máquina se hace al ejecutar el programa.
¿Y quién compila el programa a código máquina cuando se ejecuta?
Para eso hay un programa especial llamado CLR (Common Language Runtime) — la máquina virtual de C#. Primero se ejecuta ella, y luego el programa hecho de byte-code. Y es el CLR el que, antes de ejecutar el programa necesario, lo compila a código máquina.
Si tienes un procesador potente que soporta más instrucciones de máquina, durante la "segunda compilación" se generará código máquina teniendo en cuenta tu procesador y tu sistema operativo. Por eso C# a veces es más rápido que C++, que se compila directamente a código máquina y solo puede usar las instrucciones más comunes del procesador.
2. Errores típicos al compilar
La velocidad y la optimización del código por ahora no nos importan mucho, pero lo que sí importa es que el compilador revisa tu programa en busca de errores. Comprueba que el código sea correcto y no deja pasar nada si encuentra hasta el más mínimo error.
Ejemplo de error:
Intentas asignar un número a una variable que solo puede guardar texto.
string nombreUsuario = 42; // ¡Uy! Así no se puede.
El compilador enseguida dará un error de que los tipos no coinciden: "Cannot implicitly convert type 'int' to 'string'".
Otro ejemplo — un error de tipeo en el comando WriteLine():
Console.WriteLin("¡Hola!"); // Error en el nombre del método
El compilador dirá: "No existe ese método — ¡revisa la sintaxis!"
¿Cómo leer los errores?
La mayoría de los compiladores te dicen dónde está el error en el código, e incluso a veces te sugieren cómo arreglarlo. No tengas miedo de los errores: cada uno es un paso hacia la iluminación y para pasar a tu "jefe" interno.
3. Comentarios
Imagina: estás escribiendo un programa complicado. Todo funciona, ¡eres un genio! Pero al mes abres ese código y... no entiendes nada. Unas líneas de código aquí, una variable rara allá. Solo piensas: «¡Esto lo escribió cualquiera menos yo!». Aquí es donde los comentarios te salvan.
Los comentarios son como notas en los márgenes de un libro o mensajes en la nevera ("Cerveza. No beber. Para mañana!"). El compilador los ignora, pero la gente no. Los comentarios sirven para explicar el sentido del código, marcar detalles importantes e incluso "apagar" partes del programa sin borrarlas.
Importante: ¡Ningún compilador lee tus comentarios, los ignora totalmente!
Comentarios de una sola línea
En C# hay dos tipos de comentarios — de una sola línea y de varias líneas. Los de una sola línea empiezan con dos barras // y van hasta el final de la línea. Todo lo que está después de // se considera comentario y el compilador lo ignora totalmente.
Ejemplo:
Console.WriteLine("¡Hola, mundo!"); // Esto muestra un saludo en pantalla
Aquí // Esto muestra un saludo en pantalla — es un comentario. Si en el código no queda claro para qué sirve una línea, ¡escribe así!
Otro ejemplo:
int x = 42; // Valor de la edad del programador
Puedes escribir comentarios de una sola línea también en líneas separadas:
// Inicialización de la variable con el nombre del usuario
string nombreUsuario = "Vasya";
Casi como diálogos en un guion: el comentario explica el porqué y para qué.
Comentarios de varias líneas
¿Y si tienes mucho que decir? ¿Una historia real? Para eso están los comentarios de varias líneas, que empiezan con /* y terminan con */. Todo lo que esté entre estos símbolos lo ignora el compilador, aunque sean varias líneas.
Ejemplo:
/*
Aquí mostramos el nombre del usuario en pantalla.
Si no hay nombre, escribimos "Invitado".
*/
Console.WriteLine("Introduce tu nombre:");
O así:
int edad = 18; /* Valor inicial de la edad
para un nuevo usuario */
Atención: no puedes meter comentarios de varias líneas dentro de otros. No intentes ser más listo que el compilador — no va a funcionar.
Ilustración:
| Tipo | Sintaxis | Ejemplo |
|---|---|---|
| De una línea | // comentario |
int x = 1; // explicación |
| De varias líneas | /* lo que sea aquí */ |
/* aquí puedes explicar lo que quieras */ |
4. Ejemplos de la vida real
"Apagar" una línea de código:
A veces quieres que un fragmento de código no se ejecute temporalmente. Los comentarios vienen genial aquí:
// Console.WriteLine("Texto que no hace falta ahora");
La línea sigue ahí, pero el compilador no la "ve".
Notas TODO y FIXME
Los programadores también son humanos, y a veces hay que recordarse a uno mismo que el código aún no está terminado, o que hay un bug. Para eso se suele escribir:
// TODO: hacer comprobación de entrada vacía
// FIXME: esta función calcula mal la suma
¡Muchos editores e IDE incluso resaltan estas palabras!
Los programadores bromean
Y claro, a veces en el código aparecen comentarios muy curiosos:
// No me hago responsable de este código. Me obligaron a escribirlo en contra de mi voluntad.
// Querido, yo_del_futuro! Por favor, perdóname por este código.
// Si vuelvo a ver algo así, tendré que empezar a llevar armas al trabajo.
// Si alguna vez se cumple esta condición, por favor avísame al tel. xxx-xxx-xxx por recompensa.
// Querido programador:
//
// Cuando termines de "optimizar" esta subrutina
// y te des cuenta de lo grande que fue el error de hacerlo,
// por favor, aumenta el contador de abajo como advertencia
// para el siguiente:
//
// horas_gastadas_aquí = 42
// Cuando empecé a escribir esto, solo Dios y yo sabíamos lo que hacía.
// Ahora solo queda Dios
// a veces me parece que el compilador ignora todos mis comentarios
// Dedico todo mi código, todo mi trabajo a mi esposa Darlin, que
// tendrá que mantenerme a mí, a nuestros tres hijos y al perro cuando
// esto salga a producción.
Sí, los comentarios pueden ser muy graciosos. Al final, los escriben personas de verdad.
GO TO FULL VERSION