domingo, 13 de noviembre de 2011

Comparadores e Intérpretes


Compiladores:
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar.

Un compilador es un generador de código que lleva un código de alto nivel a un código de máquina.
De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

PARTES DE UN COMPILADOR:
Tiene fases que se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.
Análisis:
-          Comprueba la corrección del programa fuente.
-          Análisis léxico: descomposición del programa fuente en componentes léxicos.
-          Análisis Sintáctico: agrupa los componentes léxicos en frases gramaticales.
-          Análisis Semántico: Comprueba la validez semántica. Que tenga sentido.
Síntesis:
-          Genera la salida expresada en el lenguaje objeto.
-          Está formado por una o por varias combinaciones de fases de generación de código(intermedio o objeto).
-          Optimiza el código( busca el código más eficiente).
Este análisis y Síntesis se agrupan en Front- End y Back- End.
FRONT-END:
-          Analiza el código fuente.
-          Comprueba su validez.
-          Genera el árbol de derivación.
-          Rellena los valores de la tabla de símbolos.
BACK-END:
-          Genera el código máquina. Este no se puede ejecutar directamente sino que necesita ayuda del Linker, que es un programa enlazador.

Tipos de Compiladores:
-          CRUZADOS: Generan código para un sistema distinto del que están funcionando.
-          OPTIMIZADORES: Cambian el código para mejorar su eficiencia, pero manteniendo la funcionalidad original.
-          DE UNA SOLA PASADA: Genera el código máquina a partir de una única lectura.
-          DE VARIAS PASADAS: Leen el código fuente varias veces.
-          JIT: Forman parte de un intérprete y compilan partes del código según se necesite.


Lenguajes de Programación:
Son un conjunto de sentencias que hacen algo. Dentro estas sentencias está la tipificación de datos, la sintaxis, léxico y semántico. Don de tipificar es definir el dato.
Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.


Intérpretes:
Intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel.

Los intérpretes llevan instrucciones de un lenguaje A a un lenguaje B. Actúa al vuelo, según ve.

Se va escribiendo y el intérprete realiza las instrucciones al mismo tiempo:
-          De alto nivel a bajo nivel.
-          Va compilando línea a línea.



Comparación:
Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que se necesite hacerlo. Casi siempre línea a línea, y normalmente no guardan el resultado de la traducción.

Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.

Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.

Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración, y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce como máquina virtual).



 

TABLA COMPARATIVA:


Pascal (Compilador)
Perl (Intérprete)
Tipos de Datos soportados
Char, byte, integer, real, boolean, shortint, word, longint, String.
Reales,  enteros, las cadenas de caracteres y el tipo booleano.
Estructuras repetitivas
While, repeat-until y for.
For, foreach y while
Manejo de excepciones
Eval
Objetos
Programación Orientada a Objetos con las características de Encapsulación, herencia y polimorfismo
Los objetos llevan más abstracción, pues son agregados de variables (atributos) con identidad propia que además incluyen las subrutinas (métodos) que permiten manipularlos.




No hay comentarios:

Publicar un comentario