El compilador - glantucan/puzzle_game GitHub Wiki

Ahora que ya has tecleado tus primeros programas en C# para Unity, el compilador para ti debe de ser ese señor implacable y molesto que te impide avanzar en tu programa cuando encuentra un error y que además no te da muchas pistas de que es lo que tienes que arreglar. Estos textos pretenden que entiendas por qué este señor tiene que ser tan implacable y críptico en sus mensajes, y que entendiendo sus razones, escribas mejores programas que tengan más probabilidades de obtener su aprobación.

No hace falta tener todos estos conceptos claros para empezar a programar. Igual que no hace falta saber que es un complemento indirecto para empezar a hablar e incluso escribir en castellano. Sin embargo, a medida que avanzamos y queremos hacer programas más complejos veremos que estamos limitados sin todos estos conocimientos, igual que lo está un guionista que no sabe escribir buenos diálogos o utilizar una elipsis cuando es apropiado.

Probablemente lo que sigue te parezca muy abstracto pero, aunque no lo entiendas todo, es importante que lo intentes. Es más, como sé que probablemente no lo consigas a la primera, te pido que lo leas una vez, lo dejes reposar, y después de un tiempo practicando con Unity, vuelvas a leerlo, verás que entiendes más cosas que la primera vez.

El lenguaje del procesador

Los ordenadores entienden ceros y unos. Los humanos no. Nosotros necesitamos lenguajes que se denominan de *alto nivel* para convertir las ideas complejas que tenemos acerca de un programa en un programa en sí. Escribir esas ideas con ceros y unos es posible, así se escribieron los primeros programas, porque eran mucho más sencillos. Pero escribir cualquiera de los programas actuales en lenguaje binario llevaría décadas de desarrollo.

Por eso se inventaron los compiladores, cuya función principal es traducir entre los lenguajes de alto nivel y el lenguaje binario que entienden los procesadores.

Es importante que entiendas, al menos a un nivel básico, como funcionan. Ese conocimiento te permitirá comprender algunas de las reglas básicas más importantes a la hora de evitar errores de compilación.

Los compiladores son maquinarias muy complejas y trabajan a muchos niveles de abstracción. Nosotros vamos a ver por encima tres de esos niveles.

Los niveles de abstracción de un lenguaje de programación

El primero tiene que ver con como separa el conjunto de nuestro código en pequeñas piezas que es capaz de catalogar y procesar. Si lo comparamos con un lenguaje humano este paso se parecería al análisis morfológico de una frase en inglés o en español. Es decir, identificar los signos de puntuación, las palabras del lenguaje y cuales de esas palabras son adjetivos, sustantivos o verbos. En este paso, el compilador identifica lo que llamamos símbolos (o tokens, en inglés) utilizados en el programa.

El segundo tiene que ver con la estructura de un programa y podría equivaler a una parte del análisis sintáctico de una frase, que identifica el sujeto, el predicado, los diferentes tipos de complementos del predicado, etc. El símil no es perfecto, pero aquí el compilador identifica las estructuras básicas del programa: expresiones sentencias, bloques de código. Nosotros debemos conocerlas también para, digamos, escribir frases que tengan sentido (que tengan su sujeto y su predicado y los complementos que necesite para expresar una orden completa)

Por último, podemos comparar un programa en su conjunto con una obra literaria. Un escritor utilizará numerosos recursos estilísticos para construir la trama de su novela: descripciones, diálogos, metáforas, elipsis, etc. El equivalente a estos recursos de expresión son lo que llamamos estructuras de programación: Condicionales, bucles, funciones, clases y objetos, etc.

Los tres niveles están interrelacionados y no es fácil entender uno sin conocer los otros. Así que te recomiendo que hagas una primera lectura sin pararte demasiado. Cuando llegues al final tendrás una imagen global que te permitirá rellenar las lagunas que hayan quedado en una segunda lectura.

Hay conceptos que cuesta trabajo entender de una sola vez. Pero poco a poco van calando, y sólo después de volver a la carga varias veces dejan de resistirse. Algo hace click en nuestro cerebro y de repente entendemos un montón de cosas que no entendíamos antes. Es ese momento "Eureka!" el que los programadores más disfrutamos, así que te animo a perseguirlo con tesón. Merece la pena.

⚠️ **GitHub.com Fallback** ⚠️