Este documento describe los diferentes tipos de lenguajes de programación, compiladores e intérpretes. Explica que los lenguajes de máquina son numéricos y los ensambladores son más fáciles de usar pero aún están cerca de la máquina. Los compiladores traducen el código fuente a objeto mientras que los intérpretes lo ejecutan directamente. También cubre los criterios de diseño de lenguajes como claridad y dominios de aplicación como científicos y de sistemas.
2. INTRODUCCIÓN
Las primeras computadoras ejecutaban
instrucciones consistentes en códigos
numéricos que señalan a los circuitos de la
máquina los estados correspondientes a cada
operación. (Lenguaje de Maquina)
Pronto los primeros usuarios de estos
ordenadores descubrieron la ventaja de
escribir sus programas mediante claves más
fáciles de recordar que esos códigos
numéricos; al final, todas esas claves juntas se
traducían manualmente a Lenguaje
Máquina.(Lenguaje Ensamblador)
3. INTRODUCCION
El lenguaje Ensamblador seguía siendo el de
una máquina, pero más fácil de manejar.
Esta sentencia en un Lenguaje de Alto Nivel
A: = B+C
convertida en Lenguaje Ensamblador
quedaría:
LOAD B
ADD C
STORE A
Está más cerca de la máquina
4. Traductores de lenguajes de
Programación
La programación de un lenguaje de alto
nivel requiere, de algún tipo de interfaz con
el lenguaje máquina para que el programa
pueda ejecutase.
Las interfaces más comunes son:
“compilador” e "interprete".
5. Traductores de lenguajes de
Programación
El Compilador: Traduce el programa a
otro equivalente en el lenguaje “X” de la
maquina “residente” como un paso
separado antes de la ejecución.
El Interprete: Ejecuta directamente las
instrucciones en un lenguaje “Y” de alto
nivel, sin un paso de procedimiento previo.
6. CONCLUSION
Un compilador: Traduce un Programa Fuente a un
Programa Objeto o de máquina y después que está
todo traducido lo ejecuta.
Un Ensamblador: es un compilador, pero el
programa fuente que debe traducir es un programa
ensamblador, lo traduce a programa de máquina y
después lo ejecuta.
Un intérprete: no genera un programa
equivalente, sino que toma una sentencia del
programa fuente en un lenguaje de alto nivel y la
traduce al código equivalente en un lenguaje de
bajo nivel y al mismo tiempo lo ejecuta.
7. Compiladores Vs. Interpretes
COMPILADOR INTÉRPRETE
Realizan la traducción en tiempo de
desarrollo.
Es decir, el programa aún no se está
ejecutando. El compilador recibe todo
el código fuente, lo analiza, lo optimiza
y lo traduce a lenguaje máquina
dejando un programa completo listo
para su ejecución.
Se compila una vez, se ejecuta n veces.
Realizan la traducción en tiempo de
ejecución.
Es decir, a medida que el programa se va
ejecutando, el intérprete va traduciendo
instrucciones al lenguaje máquina.
La ejecución es más lenta, pues cada
instrucción debe ser traducida a código
máquina tantas veces como sea
ejecutada.
8. Funcionamiento de un compilador
A grandes rasgos un compilador es un
programa que lee un programa escrito es
un lenguaje, el lenguaje fuente, y lo traduce
a un programa equivalente en otro
lenguaje, el lenguaje objeto.
Como parte importante de este proceso de
traducción, el compilador informa a su
usuario de la presencia de errores en el
programa fuente.
9. Partes en las que trabaja un
compilador
Conceptualmente un compilador opera en
fases. Cada una de las cuales transforma el
programa fuente de una representación en
otra.
En la figura que está en la próxima filmina
se muestra una descomposición típica de
un compilador.
10. Fases de un compilador
Programa Fuente
Programa Objeto
11. Tabla de símbolos
Un compilador necesita guardar y usar la
información de los objetos que va
encontrando en el texto fuente, como por
ejemplo variables, etiquetas, etc.
Esta información se almacena en una
estructura de datos interna conocida como
tabla de símbolos.
12. Manejo de Errores
Es una de las misiones más importantes de
un compilador. Donde más se utiliza es en
las etapas de análisis sintáctico y
semántico, aunque los errores se pueden
descubrir en cualquier fase de un
compilador.
Es una tarea difícil, por dos motivos:
A veces unos errores ocultan otros.
A veces un error provoca una avalancha de muchos
errores que se solucionan con el primero.
13. Manejo de Errores
Es conveniente un buen manejo de errores,
y que el compilador detecte todos los
errores que tiene el programa y no se pare
en el primero que encuentre.
Hay, pues, dos criterios a seguir a la hora de
manejar errores:
Pararse al detectar el primer error.
Detectar todos los errores de una pasada.
14. Funcionamiento de un intérprete
Se caracteriza por traducir y ejecutar, de una en una,
las instrucciones del código fuente de un programa,
pero sin generar como salida código objeto.
El proceso que realiza un intérprete es el siguiente:
Lee la primera instrucción del código fuente, la
traduce a código objeto y la ejecuta; a continuación,
hace lo mismo con la segunda instrucción; y así
sucesivamente, hasta llegar a la última instrucción
del programa, siempre y cuando, no se produzca
ningún error que detenga el proceso.
15. Criterios de diseño y de
implementación
Los Lenguajes de programación se pueden
clasificar según el paradigma de
programación que soporten:
Lenguajes Genéricos
Lenguajes Estructurados
Lenguajes Orientados a Objetos
16. Atributos de un buen lenguaje
Claridad, Sencillez y Unidad
La sintaxis del lenguaje afecta la facilidad con la
que un programa se puede escribir, poner a
prueba, y más tarde entender y modificar.
Ortogonalidad
Capacidad para combinar varias características
de un lenguaje en todas las combinaciones
posibles, de manera que todas ellas tengan
significado.
Naturalidad para la aplicación
La sintaxis del programa debe permitir que la
estructura del programa refleje la estructura
lógica subyacente.
17. Atributos de un buen lenguaje
Apoyo para la abstracción
Una parte importante de la tarea del programador es
proyectar las abstracciones adecuadas para la solución del
problema y luego implementar esas abstracciones
empleando las capacidades más primitivas que provee el
lenguaje de programación mismo.
Facilidad para verificar programas
La sencillez de la estructura semántica y sintáctica ayuda a
simplificar la verificación de programas.
Costo de uso
1. Costo de ejecución del programa.
2. Costo de traducción de programas.
3. Costo de creación, prueba y uso de programas.
4. Costo de mantenimiento de los programas: costo total
del ciclo de vida.
19. Lenguajes para diversos dominios de
aplicación
Científicos.
De Sistemas.
De IA (Inteligencia Artificial).
De Edición.
De Proceso.
Nuevos Paradigmas.