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