¿Qué es la programación? Segunda parte

Topic created · 6 Mensajes · 1429 Visitas
  • 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.

  • Muy buena segunda parte, me parece todo muy clarito y bien explicado. Solo creo que te podría faltar haber hablado de los intérpretes, además de los compiladores, sobre todo si pones de ejemplo un código en javascript x). A ver si después de leer esto alguien se anima a aprender a programar, aunque no sea necesariamente en uno de los cursos del foro, que para mi es lo de menos, yo lo que quiero es ver esta seccion activa, llena de programadores 😛

  • Yo me animo a programar, que nunca viene mal saber algo nuevo :wiii: . No estaría mal que te hicieses un cursillo de esto Hawkings, así los torpes como yo podemos aprender _xD_ .

    Un saludo.

  • iba a añadir lo de los intérpretes, pero se alargaba demasiado el hilo, y además, si estamos haciendo una introducción, pues lo normal es intentar simplificar y generalizar. Si entro en detalles pues cada lenguaje tiene lo suyo...

    Además, aunque algunos lenguajes no nos obliguen a usar un compilador, no quiere decir que no sea necesario. Al fin y al cabo, ¿qué hace la máquina virtual de java por ejemplo? En cierto modo, lo que hace es traducir nuestro código a algo que el procesador entienda.

    Es decir, que la explicación sigue siendo válida, simplemente es un matiz. Por eso, como he dicho, los siguientes cursos ya tienen que ser específicos de cada lenguaje. Y entonces sí se puede entrar en esos detalles.

  • me gusta este programacion es para aprender un pocoo asii seria estupendo ke tdo los novatos aprenda igual como ioooo

  • Cuando tengas tiempo Salvatore, podrias sacar las partes consecutivas, vi hoy el 1º post y me atrajo y me puse a leer, y claro, no voy a dejar la 2º parte 🙂
    Está muy bien, hasta ahora es todo fácil, la mayor parte de cosas ya se entiende 0 no hay corriente 1 si hay corriente, es como a mi me lo explicaron hace tiempo jaja

    Todo muy claro, a seguir así. :icon_cheesygrin:

    EDITO: Puff nose si seguiras con la guía es del 22 de agosto 😧 espero que saques mas partes... Aqui no se pueden dejar las Gracias t_t