Conceptos Basicos
Lenguaje: Forma de representar informacin basada en un conjunto finito de signos o smbolos Alfabeto: Conjunto de smbolos que forman parte de un lenguaje Sentencia o palabra o frmula bien formada: Secuencia de smbolos correcta. Lenguaje formal: Lenguaje descrito mediante un formalismo matemtico
Otras definiciones
Los conceptos bsicos de smbolos, palabras, alfabetos y strings son comunes en la mayora de las descripciones de los autmatas. Estos son: Smbolo
Un dato arbitrario que tiene algn significado a o efecto en la mquina. A estos smbolos tambin se les llama "letras" o "tomos".
Palabra
Una cadena finita formada por la concatenacin de un nmero de smbolos.
Alfabeto
Conjunto finito de smbolos. Un alfabeto se indica normalmente con , que es el conjunto de letras en un alfabeto.
Lenguaje
Un conjunto de palabras, formado por smbolos en un alfabeto dado. Puede ser infinito.
Alfabeto
Un alfabeto es un conjunto nito y no vaco de elementos llamados smbolos o letras. Una palabra o cadena sobre un alfabeto V es una cadena nita de smbolos del alfabeto. Notaciones:
La concatenacin de dos cadenas es la cadena que se forma al escribir la primera seguida de la segunda, sin que haya espacio entre ellas, Por ejemplo la concatenacin de padre y madre es padremadre. La yuxtaposicin se utiliza como el operador de concatenacin. Esto es si w y x son cadenas, entonces wx es la concatenacin de estas dos cadenas. La cadena vaca es la identidad para el operador de concatenacin, es decir Ew=wE para cada cadena de w.
Un alfabeto es un conjunto de smbolos finito y no vaco. Convencionalmente se utiliza el smbolo S para designar un alfabeto.
Otro lenguaje es el conjunto de cadenas sobre un alfabeto fijo S Denotamos a este lenguaje como S* Por ejemplo:
Lenguajes
En matemticas, lgica, y las ciencias computacionales, un lenguaje formal es un conjunto de palabras (cadenas de caracteres) de longitud finita formadas a partir de un alfabeto (conjunto de caracteres) finito. Informalmente, el trmino lenguaje formal se utiliza en muchos contextos (en las ciencias, en derecho, etc.) para referirse a un modo de expresin ms cuidadoso y preciso que el habla cotidiana. Hasta finales de la dcada de 1990, el consenso general era que un lenguaje formal, era en cierto modo la versin lmite de este uso antes mencionado: un lenguaje tan formalizado que poda ser usado en forma escrita para describir mtodos computacionales. Sin embargo, hoy en da, el punto de vista de que la naturaleza esencial de los lenguajes naturales (sin importar su grado de formalidad en el sentido informal antes descrito) difiere de manera importante de aquella de los verdaderos lenguajes formales, gana cada vez ms adeptos.
Tipos de Lenguajes
Llamamos lenguaje sobre el alfabeto V a cualquier subconjunto de V. Especificacin de lenguajes: Extensin (lenguajes finitos) L = fa; aa; aaag es un lenguaje sobre el alfabeto V = fag L = faba; cab; aaabcg es un lenguaje sobre el alfabeto V = fa; b; cg Comprensin (lenguajes infinitos) L = fa(bc)njn >= 1g
Tipos de Lenguajes
Chomsky clasificar los lenguajes formales de acuerdo a una jerarqua de cuatro niveles, conteniendo cada uno de todos los siguientes. El lenguaje ms general ser, pues, de tipo 0,y no posee restriccin alguna. Este conjunto engloba el conjunto de todos los lenguajes posibles. En el segundo nivel aparecen los lenguajes de tipo1,tambin llamados lenguajes sensibles al contexto, al permitir que el papel de las palabras dependa de la posicin en que aparezcan(es decir, del contexto).La mayor parte de los lenguajes de ordenador pertenecen a este tipo. En tercer lugar aparecen los lenguajes de tipo 2, o lenguajes independientes del contexto. En ellas el significado de una palabra es independiente del lugar que ocupa en la frase. Finalmente, los lenguajes de tipo 3,o lenguajes regulares, son los que presentan una estructura ms sencilla.
Tipos de Lenguajes
Resulta curioso observar como paralelamente a la jerarqua de lenguajes aparece otra de mquinas abstractas equivalentes, como se observa en el esquema siguiente:
Cada uno de estos tipos de mquinas es capaz de resolver problemas cada vez ms complicados, hasta llegar a las mquinas de Turing. Como descubri Turing, existen una serie de problemas que no son computacionalmente abordables y que reciben el nombre de problemas no enumerables.
La relacin estrecha entre la Teora de Lenguajes Formales y la Teora de Autmatas se pone de manifiesto en este tema. Se establece unisomorfismo entre ambas, estableciendo una conexin entre la clase de lenguajes generados por ciertos tipos de gramticas y la clase de lenguajes reconocibles por ciertas mqinas. Los lenguajes del tipo 0 con los lenguajes reconocidos por una mquina de Turing, Los lenguajes de tipo 1 con los Autmatas Linealmente Acotados, Los lenguajes de tipo 2 con los Autmatas a Pila
Los lenguajes de tipo 3 con los Autmatas Finitos, los Autmatas Probabilsticos y los Autmatas de Clulas de McCulloch-Pitts.
Cada uno de estos tipos/mquinas aade restricciones al tipo/mquina del nivel superior.
Qu es un Traductor?
Un traductor es un mediador entre dos entidades: emisoras y receptoras, los mediadores enmascaran la complejidad y heterogeneidad de los lenguajes.
Un traductor convierte un lenguaje de entrada (cdigo fuente) a una de salida (cdigo objeto).
Ensambladores
Ensamblador se refiere a un tipo de programa, informtico que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene cdigo mquina ejecutable directamente por la mquina para la que se ha generado. Ejemplos: MASM
Funcin De Un Ensamblador:
La tarea fundamental de un ensamblador es traducir un programa en lenguaje de ensamblador al cdigo correspondiente en lenguaje de mquina. .
Difcilmente portable, es decir, un cdigo escrito para un microprocesador en particular necesita ser modificado muchas veces en su totalidad para poder ser usado en otro microprocesador.
Tipos de Ensambladores
ENSAMBLADORES CRUZADOS: Se denominan as a los ensambladores que se utilizan en una computadora que posee el procesador diferente al que tendrn las computadoras donde se va a ejecutar el programa objeto producido. ENSAMBLADORES RESIDENTES: Son aquellas que permanecen en la memoria principal de la computadora y cargar para su ejecucin al programa objeto producido.
MICRO ENSAMBLADORES: Al programa que indica al intrprete de instrucciones de la CPU como debe actuar se le denomina microprograma. El programa que ayuda a realizar este microprograma se llama micro ensamblador.
ENSAMBLADORES DE UNA FASE: leen una lnea y la traducen directamente para producir una instruccin de lenguaje maquina o la ejecuta si se trata de una pseudosinstruccin. Se construye la tabla de smbolos a medida que aparecen las definiciones de variables, etiquetas, etc. ENSAMBLADORES DE DOS FASES: Realiza la traduccin en dos etapas: 1 fase leen el programa fuente y construyen la tabla de smbolos, 2 fase vuelve a leer el programa fuente y pueden ir traduciendo totalmente pues reconocen la totalidad de los smbolos.
Compiladores
Un compilador es querer traducir un programa de un lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje mquina).
Los compiladores son programas o herramientas encargadas de compilar. Un compilador toma un texto (cdigo fuente) escrito en un lenguaje de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (cdigo objeto).
CLASIFICACIN DE COMPILADORES
DE UNA PASADA: Examina el cdigo fuente una vez, generando el cdigo o programa objeto.
PASADAS MLTIPLES: Requiere pasos intermedios para producir cdigo en otro lenguaje y una pasada final para producir y optimizar el cdigo producido durante pasos anteriores.
COMPILADORES INCREMENTALES: Generan un cdigo objeto, instruccin por instruccin cuando el usuario teclea cada orden individual. COMPILADOR CRUZADO: Se genera cdigo en lenguaje objeto para una maquina diferente a la que se esta utilizando para compilar. COMPILADOR CON MONTADOR: Compila distintos mdulos de forma independiente y despus es capaz de aplazarlos.
AUTO COMPILADORES: Compilador que esta escrito en el mismo lenguaje que va a compilar. META COMPILADOR: Es programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. DESCOMPILADOR: Es un programa que acepta como entrada cdigo maquina y la traduce a un lenguaje de alto nivel realizando el proceso inverso a la compilacin.
1.4.3 Interpretes
Un intrprete es un programa capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes suelen contraponerse a los compiladores, ya que mientras que los segundos se encargan de traducir un programa desde su descripcin en un lenguaje de programacin al cdigo mquina del sistema destino, los primeros slo realizan la traduccin a medida que sea necesario y normalmente, no guardan el resultado de dicha traduccin.
JavaScript, BASIC, LISP, Smalltalk y Python son ejemplos de lenguajes que son normalmente interpretados en vez de compilados.
Conclusiones
Gran parte del temario se basar en problemas que tienen que ver con el procesamiento del lenguaje, por tanto, se repasa la terminologa y algunos de los conceptos asociados al proceso de traduccin. Se establecen los trminos de lenguaje formal, definidos por reglas preestablecidas, y de lenguaje natural, no cuentan con reglas gramaticales formales. As, el estudio de los lenguajes se reduce al anlisis de la estructura de las frases (Gramtica)y del significado de las mismas(Semntica). A su vez, la Gramtica puede analizar las formas que toman las palabras(Morfologa),su combinacin para formar frases correctas(Sintaxis),y las propiedades del lenguaje hablado(Fontica)(nica no aplicable a los lenguajes de ordenador).
Para realzar el papel de la gramtica en el proceso de traduccin se indican los componentes bsicos de que consta compilador para un determinado lenguaje de programacin: anlisis lxico, anlisis sintctico y generacin de cdigo.