martes, 5 de abril de 2016

2. Conceptos Generales

Lenguajes de Programación

La programación de computadoras se realiza en los llamados lenguajes de programación, éstos posibilitan la comunicación entre el programador y la computadora, a través de un conjunto de instrucciones u órdenes especificadas por el lenguaje.

Un lenguaje de programación puede definirse como “una notación formal para describir algoritmos o funciones que serán ejecutados por el ordenador”. Según su grado de independencia de la maquina, los lenguajes de programación se clasifican en:
  • Lenguaje maquina: Es la notación que entiende directamente el ordenador, por eso sus instrucciones están escritas con código binario. El repertorio de sus instrucciones, así como la estructura de estas, están ligadas directamente a la arquitectura de la maquina. 
  • Lenguaje ensamblador: es esencialmente una versión simbólica de un lenguaje maquina. Cada código de operación se indica por un código simbólico. Por ejemplo ADD para adición y MUL para multiplicación. 
  • Lenguajes de nivel medio: tienen algunas de las características de los lenguajes de bajo nivel (por ejemplo acceso directo a posiciones de memoria), añadidas a posibilidades de manejo de estructuras de control y de datos de lenguajes de alto nivel. 
  • Lenguajes de alto nivel: facilitan la escritura de programas con estructuras de datos complejas, la utilización de bloques, y procedimientos o subrutinas. Dentro de estos lenguajes destacan un tipo de lenguajes, denominados lenguajes orientados a objetos, que permiten definir tipos abstractos de datos. 
  • Lenguajes de orientados a problemas concretos: se utilizan para la resolución de problemas en un campo específico. 
Procesadores de lenguaje

Procesadores de lenguajes es el nombre genérico que reciben todas las aplicaciones informáticas en las cuales uno de los datos fundamentales de entrada es un lenguaje. La definición anterior afecta una gran variedad de herramientas software, entre las cuales tenemos: 
  • Traductores: Es un programa que procesa un texto fuente y genera un texto objeto 
  • Ensamblador: Si el lenguaje fuente es el lenguaje ensamblador y el lenguaje objeto es el lenguaje maquina, entonces al traductor se le llama ensamblador. 
  • Compiladores: Un traductor que transforma texto fuente de lenguajes de alto nivel a lenguajes de bajo nivel se le denomina compilador.
  • Intérprete: Son programas que simplemente ejecutan las instrucciones que se encuentran en el texto fuente. 
Traductores

Como ya se menciono, un traductor es un programa que procesa un texto fuente y genera un texto objeto. El traductor está escrito en lenguaje de implementación (LI) o también denominado lenguaje host. El texto fuente está escrito en lenguaje fuente (LF), por ejemplo un lenguaje de alto nivel.

El texto objeto está escrito en lenguaje objeto (LO), por ejemplo un lenguaje de máquina, ensamblador u otro lenguaje de alto nivel. Se suele utilizar la notación T, la cual se
muestra en la siguiente figura:

La notación T también se puede representar de forma abreviada como: LFLILO.

Estructura general de un traductor

Todas las fases de un traductor se pueden agrupar en dos áreas: el análisis del programa fuente y su síntesis en el correspondiente programa objeto.

El análisis consiste en verificar la corrección del programa fuente, para lo cual se descompone el programa fuente en trozos elementales o unidades mínimas sintácticas denominadas componentes léxicos o tokens. Los tokens se pueden agrupar para comprobar su disposición correcta en las distintas construcciones y sentencias del lenguaje a analizar (análisis sintáctico y semántico). Comprobándose de esta forma la validez sintáctica y semántica del programa fuente. En caso contrario se emiten los errores oportunos (manejo de errores). La información también se utiliza durante la fase de análisis (por ejemplo ara comprobar si una variable se intentó declarar dos veces).

La tarea de síntesis tiene por objeto la generación del código del lenguaje objeto. En el caso particular de los compiladores suele incluirse también la generación de código
intermedio, como un medio para garantizar la transportabilidad entre distintas maquina objeto o como método para poder utiliza el mismo back-end, entre compiladores de lenguajes diferentes.

La generación de código intermedia se apoya directamente en la información recogida en la tabla de símbolos durante la fase de análisis. La generación de código para la máquina
objeto definitiva tan solo se apoya en el código intermedio. También es necesario un tratamiento de errores para la fase de síntesis.

La siguiente figura muestra las fases de un traductor:


No hay comentarios:

Publicar un comentario