LENGUAJES NATURALES Y ARTIFICIALES
wella23 de Julio de 2013
663 Palabras (3 Páginas)479 Visitas
LENGUAJES NATURALES Y ARTIFICIALES
La teoría de gramáticas transformacionales de Chomsky se aplica por igual a los lenguajes natu¬rales (los que hablamos los seres humanos) y los lenguajes de programación de computadoras. Con muy pocas excepciones, todos estos lenguajes tienen una sintaxis que se puede expresar con gramáticas del tipo 2 de Chomsky; es decir, se trata de lenguajes independientes del contexto. Las dos excepciones conocidas son el alemán suizo y el bambara.
LENGUAJES DE PROGRAMACIÓN DE COMPUTADORAS
A lo largo de la historia de la Informática, han surgido varias generaciones de lenguajes artifi¬ciales, progresivamente más complejas:
Primera generación: lenguajes de la máquina. Los programas se escriben en código binario. Por ejemplo:
000001011010000000000000
Segunda generación: lenguajes simbólicos, cada instrucción de la máquina se representa mediante símbolos. Por ejemplo:
ADD AX, P1
Tercera generación: lenguajes de alto nivel, con una sola instrucción este tipo representa usualmente varias instrucciones de la máquina. Por ejemplo:
P1 = P2 + P3;
Son lenguajes de alto nivel, FORTRAN, COBOL, LISP, BASIC, C, C++, APL, PASCAL, SMALLTALK, JAVA, ADA, PROLOG, y otros muchos. Entre los lenguajes que usualmente se interpretan citaremos LISP, APL, SMALLTALK, JAVA y PROLOG. De algún lenguaje, como BASIC, existen a la vez compiladores e intérpretes.
Los lenguajes simbólicos se traducen mediante programas llamados ensambladores, que convierten cada instrucción simbólica en la instrucción máquina equivalente. Estos progra¬mas suelen ser relativamente sencillos y no se van a considerar aquí.
Los programas escritos en lenguajes de alto nivel se traducen mediante programas llama¬dos, en general, traductores o procesadores de lenguaje. Existen tres tipos de estos traduc¬tores:
Compilador: analiza un programa escrito en un lenguaje de alto nivel (programa fuen¬te) y, si es correcto, genera un código equivalente (programa objeto) escrito en otro len¬guaje, que puede ser de primera generación (de la máquina), de segunda generación (simbólico) o de tercera generación. El programa objeto puede guardarse y ejecutarse tantas veces como se quiera, sin necesidad traducirlo de nuevo.
Compilador-intérprete: traduce el programa fuente a un formato o lenguaje interme¬dió, que después se interpreta.
JAVA es un ejemplo típico de lenguaje traducido mediante un compilador-intérprete, pues primero se compila a BYTECODE, y posteriormente éste se interpreta mediante una máquina virtual de JAVA, que no es otra cosa que un intérprete de BYTECODE. En este caso, A es JAVA, B es BYTECODE, C es el lenguaje en que esté escrito el com¬pilador de JAVA a BYTECODE, y D es el lenguaje en que esté escrita la máquina vir¬tual de JAVA.
Los compiladores generan código más rápido que los intérpretes, pues éstos tienen que ana¬lizar el código cada vez que lo ejecutan. Sin embargo, los intérpretes proporcionan ciertas ven¬tajas, que en algunos compensan dicha pérdida de eficiencia, como la protección contra virus, la independencia de la máquina y la posibilidad de ejecutar instrucciones de alto nivel generadas durante la ejecución del programa. Los compiladores-intérpretes tratan de obtener estas ventajas con una pérdida menor de tiempo de ejecución.
PARTES DE UN PROCESADOR DE LENGUAJE
Un compilador se compone de las siguientes:
Analizador sintáctico, también llamado par ser, en inglés. Es el elemento fundamental del procesador, pues lleva el control del proceso e invoca como subrutinas a los restantes ele¬mentos del compilador. Realiza el resto de la reducción al axioma de la gramática para com¬probar que la instrucción es correcta. Usualmente se implementa mediante un autómata a pila o una construcción
...