Me han pedido continuar un poco con la introducción que hice hace tiempo (Introducción: ¿Qué es la programación?) así que vamos a ello.
En la primera parte vimos, a grandes rasgos, qué hay detrás de los programas informáticos, y más o menos qué es esto de programar.
Aprendimos que el objetivo es entendernos con el ordenador (el ordenador ya sabemos que es realmente idiota, sólo distingue el 1 del 0, nada más _xD_ ), y claro, hablarle en lenguaje de 1 y 0 para nosotros es muy complicado.
Nosotros hablamos con palabras, frases, en distintos idiomas. Así que no nos entendemos.
Es por eso que se inventó un término medio. Ni tan complicado como hablar con 1s y 0s, ni tan sofisticado como un idioma: lenguajes de programación.
hr
1. Lenguaje de Programación
¿qué aspecto tiene un lenguaje de programación?
Depende el lenguaje (ya sabéis que hay varios, java, c, cobol, php...), pero por poner un ejemplo:
var fechaActual = new Date();
var horas = fechaActual.getHours();
var minutos = fechaActual.getMinutes();
var segundos = fechaActual.getSeconds();
alert("Son las: " + horas + " : " + minutos + " : " + segundos);
No es como leer un libro, pero ni punto de comparación con leer una ristra de unos y ceros no?
Este fragmento concretamente es lenguaje Javascript. Por si alguien tiene curiosidad, lo que hace es tomar la fecha (año, mes, día, horas, minutos, segundos y milisegundos), sacar de esa fecha las horas, minutos y segundos, y mostrarle un cartelito al usuario. Algo tal que así:
[html]
[/html]
(es un programa muy muy sencillo, habría que mejorarlo, pero como ejemplo va que chuta)
Lógicamente cada lenguaje tiene sus normas, su SINTAXIS. En javascript para crear una variable, usamos "var". Pero en otros lenguajes es distinto: en otros no basta con decir "crea una variable", y hay que decirle "crea una variable para guardar números", o "una variable para guardar texto", etc.
Eso entra dentro de las normas del lenguaje, junto con toda una serie de características y limitaciones.
2. La traducción
Lo que no debemos perder de vista es que se trata de un lenguaje intermedio, que luego hay que traducir al lenguaje máquina que entiende el ordenador (unos y ceros).
La traducción como comenté en el primer hilo suele ser "automática", gracias a unos programas traductores que llamamos COMPILADORES (esos traductores los hace alguien claro jeje). Por tanto, nosotros solamente tenemos que escribir en un lenguaje de programación, y darle el código a un traductor. Y listo, nuestro programa ya lo puede entender un ordenador.
Por norma general, todos los programas que escribamos (en c, en visual basic, o en el lenguaje que sea) los pasaremos luego por un compilador. Si programamos en C, pues usaremos un compilador que traduzca C a lenguaje máquina, si programamos en otro lenguaje pues usaremos el correspondiente compilador.
No siempre es así, pero bueno, es la visión general.
3. Lenguaje Máquina
Tras la traducción, el aspecto de nuestro código cambia radicalmente. Todo es convertido a una serie de instrucciones. Y cada instrucción puede tener un aspecto similar a esto:
00000011 10011000 01001000 00100010
Verdaderamente horroroso verdad? pues no es más que una instrucción. Cada línea de nuestro código puede convertirse en unas cuantas instrucciones como esa.
Dentro de esa instrucción, los 6 primeros números significan una cosa, los 4 siguientes otra... depende el formato de instrucción, el caso es que al final el ordenador sabe de dónde tiene que sacar un dato, con qué tiene que sumarlo, y dónde guardar el resultado, por ejemplo.
Casualmente, esa instrucción tiene en total 32 números. O dicho de forma que a alguno se le encienda la bombilla "32 BITS". ¿suena de algo? 32 y 64 bits? no?
pues bien, cuando compréis un ordenador, fijaros en si la arquitectura del procesador es de 32 o de 64 bits jeje.
Hay procesadores que reciben instrucciones de 64 bits, y otros que las reciben de 32.
Y al igual que nosotros tenemos distintos lenguajes de programación, cada procesador también entiende su instrucciones. Son especialitos, y lo que entiende un procesador, no tiene por qué entenderlo otro procesador.
4. La ejecución
Una vez que hemos escrito el programa, se lo hemos pasado al compilador, y éste ha generado el código máquina, ya tenemos algo que el ordenador puede entender, puede ejecutar. Pero, ¿cómo se ejecuta?
Pues bien, la ristra de instrucciones es cargada en la memoria del ordenador, y se empiezan a ejecutar las instrucciones, una tras otra hasta terminar. Si todo va bien, el programa hará lo que queremos, y terminará. Si no, como se suele decir, "petará" durante la ejecución. Lo que muchas veces habréis visto estilo "El programa se cerró inesperadamente...". Vamos, que ha pegado una hostia jejeje. Alguna instrucción no era correcta, o al buscar un dato en memoria se ha encontrado algo raro, o ha intentado hacer una operación imposible... a saber.
Ya sabemos más o menos qué función cumple un compilador, y por qué son tan necesarios (alguno se imagina escribir programas de esa forma? con instrucciones de unos y ceros?? infernal!). Es la magia escondida tras los lenguajes de programación.
Ahora qué nos queda? pues centrarnos en un lenguaje concreto. Aprendernos su sintaxis, aprender cómo se compila, y probarlo. Aunque todos los lenguajes se parecen, cada uno tiene sus reglas, y no queda otra que aprendérselas.