Download Fundamentos de Programación
Document related concepts
Transcript
Fundamentos de Programación Compiladores, intérpretes y máquinas virtuales Fundamentos de Programación La CPU sólo entiende su propio lenguaje: el código máquina, que son secuencias binarias. Los programadores hacen sus programas en lenguajes de alto nivel Ningún programador de aplicaciones pierde su tiempo y sus neuronas escribiendo secuencias de 1 y 0 directamente. ____ ___ ___ __ Programador __ ___ ____ __ Micro proce sador Compilador Intérprete Archivos Fuente Lenguaje Máquina Fundamentos de Programación Compiladores: Cuando se aprende a programar, una de las primeras distinciones que es interesante conocer es si el lenguaje se compila o se interpreta. La compilación consiste en tomar los archivos fuente que conforman un programa y, línea por línea, traducir cada instrucción de alto nivel por varias instrucciones en código máquina. Como resultado se obtiene un archivo binario ejecutable, o simplemente, un archivo ejecutable. Micro proce sador Usuario Ejecutable Fundamentos de Programación Intérpretes: El intérprete intenta realizar "al vuelo" lo que se expresa en los archivos fuente. Cuando un programa es interpretado, el intérprete obtiene una instrucción del archivo fuente y la realiza inmediatamente. Cuando la CPU termina la ejecución de esa secuencia, el resultado es que la CPU habrá hecho lo que la línea de código fuente expresaba ____ ___ ___ __ Usuario __ ___ ____ __ Micro proce sador Intérprete Archivos Fuente Lenguaje Máquina Fundamentos de Programación Máquinas virtuales La filosofía de la máquina virtual es que el código fuente se compile y genere un código máquina dirigido a una CPU imaginaria. A esta especie de código máquina se le denomina código intermedio o byte-code Como esa CPU imaginaria no existe, para poder ejecutar ese ejecutable, se construye un intérprete, denominada máquina virtual, capaz de leer cada una de las instrucciones de código máquina imaginario y ejecutarlas en una CPU real. ____ ___ ___ __ __ Programador _ _ _ ____ Archivos __ Fuente Máquina Virtual Compilador Código Intermedio Micro proce sador Fundamentos de Programación Compilador -Genera un ejecutable Intérprete -No genera un ejecutable Máquina virtual -Genera una especie de ejecutable, pero portable entre plataformas, dirigido a una CPU imaginaria. -El proceso de traducción se -El proceso de traducción se realiza una sola vez realiza en cada ejecución -Se realiza una sola traducción a código intermedio, y una interpretación muy rápida del código intermedio en cada ejecución. -La ejecución es muy rápida debido a que el programa ya ha sido traducido a código máquina -La ejecución no es tan rápida como en la compilación tradicional ni tan lenta como en la interpretación. -La ejecución es más lenta, ya que para cada línea del programa es necesario realizar la traducción Fundamentos de Programación Compilador Intérprete Máquina virtual El ejecutable va dirigido a una -No hay ejecutable, así que si -El ejecutable va dirigido a plataforma concreta (una CPU, existe un intérprete para una una CPU imaginaria. Se un sistema operativo, y quizá plataforma concreta, el puede transportar a una alguna otra consideración) programa se podrá ejecutar en plataforma para la cual ambas. Típicamente, los exista una "máquina virtual” programas interpretados son mucho más portables que los compilados. -Los lenguajes compilados -Los lenguajes interpretados -La plataforma de destino es suelen proporcionar al no suelen ser muy virtual. Así pues, los programador mecanismos dependientes de la plataforma programas son dependientes más potentes y flexibles, a de destino, pero en de esta plataforma virtual, costa de una mayor ligazón a contrapartida suelen ser que es emulada luego sobre la plataforma. menos flexibles y potentes plataformas reales por la que los compilados. "maquina virtual". Fundamentos de Programación Compilador Intérprete Máquina virtual -Una vez compilado el -El código fuente es -El código fuente no es programa, el código fuente no necesario en cada ejecución. necesario para la ejecución, es necesario para ejecutarlo. sólo el código intermedio. -Los errores sintácticos se detectan durante la compilación. Si el fuente contiene errores sintácticos, el compilador no producirá un ejecutable. -Los errores sintácticos se -Los errores sintácticos se detectan durante la detectan durante la ejecución, ya que traducción compilación. y ejecución se van haciendo simultáneamente. Fundamentos de Programación Demostración del uso de Máquinas virtuales Como caso de estudio se utilizará el compilador y la máquina virtual de Java. Para este ejercicio se requieren los archivos: • holaTec.java • HelloDate.java ____ ___ ___ __ __ Programador _ _ _ ____ Archivos __ Fuente Máquina Virtual Compilador Código Intermedio Micro proce sador Fundamentos de Programación Fecha: 31/AGO/2012 Investigar los principales conceptos de los fundamentos de la programación tales como: • Computadora • Entrada-proceso-salida • Periféricos • Algoritmo • Programa • Programación • Compilador • interprete Modalidad: Individual Objetivo: aplicar los conceptos adecuadamente Fecha de entrega: lunes 3 de Septiembre 2012 Fundamentos de Programación Buscar, Seleccionar, y analizar por equipo información de distintas fuentes sobre: Clasificación de software, lenguajes de programación y paradigmas de la programación, con el fin de: • Realizar un mapa conceptual sobre los tipos de software • Hacer una síntesis de los paradigmas de la programación • Construir una tabla comparativa sobre los lenguajes de programación Modalidad: en equipo Objetivo: exponer el material en clase