Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje
Un Lenguaje es un sistema de comunicación basado en reglas y que es utilizado en determinado
contexto. Un Idioma es un lenguaje oral humano.
Existen diversidad de lenguajes, cada uno de ellos utilizado por una comunidad específica. Cuando
un usuario X1, que solo conoce el lenguaje L1, desea comunicarse con un usuario Y1, que solo
conoce el lenguaje L2, entonces uno de los 2 deberá aprender el lenguaje del otro. Esto es
impráctico si crece el número de usuarios que deseen comunicarse o si crece el número de
Lenguajes.
Una solución práctica a este problema es la presencia de un traductor, es decir, alguien que
conozca ambos lenguajes y que sirva de intermediario entre ambas comunidades, traduciendo de
un lenguaje al otro.
Lenguaje de Programación
Un Lenguaje de Programación (LP) es un lenguaje formal diseñado para especificar un conjunto de
instrucciones, conocido como programa, a un computador. Existen 2 paradigmas fundamentales
de Programación:
Traductor
Un traductor es un modulo de software que a partir de un programa fuente (PF), perteneciente a
un lenguaje fuente, obtiene un programa objeto (PO), perteneciente a un lenguaje objeto, el cual
es equivalente al programa fuente en contenido de acción, es decir, tanto el PF como el PO
especifican las mismas acciones, solo que en lenguajes diferentes .
Cuando un traductor no genera programa objeto, sino que ejecuta directamente las instrucciones
del programa fuente, entonces lo conocemos como un intérprete.
También se puede tener una forma mixta, en la cual se traduce a un código intermedio y mediante
una maquina virtual se interpreta dicho código intermedio. Por ejm bytecode en Java.
Proceso de Traducción:
La traducción se hace en base al análisis del contenido de acción presente en el PF, esta
información se analiza y almacena, para luego generar la información equivalente pero
especificada en el lenguaje objeto.
Adicionalmente podemos considerar que el traductor tiene dos bloques básicos que se pueden
describir también como Front-End y Back-End
• En el Front-End se analiza el PF, se le valida y se genera un código intermedio el cual es
independiente de las características hardware de la maquina destino.
• En el Back-End se efectúa la optimización y conversión a código máquina.
Esta separación permite desarrollar un Front-End único que permite luego implementar diferentes
Back-End para diferentes arquitecturas de computador.
Módulos de un traductor
Los procesos fundamentales de un traductor se pueden realizar a través de módulos que ya han
sido estandarizados funcionalmente dentro del traductor.
Esto comprende:
Tiempo de Edición --- > Tiempo de Traducción --- > Tiempo de Ejecución
Ejemplo de Traduccion:
a) x = a + b; // Codigo fuente
Traductor embebido, en el contexto actual se tienen programas que están conformados por
bloques que pertenecen a lenguajes diferentes. Cada bloque es entonces compilado o
interpretado por el compilador del lenguaje correspondiente.
Por ejm, en una pagina web HTML, podemos tener bloques que son de PHP, Jscript y otros. Cada
bloque será manejado por su traductor correspondiente.
Compilador JIT (Just In Time), aquel que es requerido en tiempo de ejecucion para compilar
modulos de PF específicos.
Lenguajes Formales
Es todo lenguaje cuyos símbolos básicos (alfabeto), así como las reglas para construir sentencias
(cadenas de texto usando símbolos del alfabeto) están definidos por reglas formales. Se les
encuentra en las matemáticas y la ciencia de la computación.
1. Expresiones Regulares
2. Autómatas
3. Gramáticas
Componentes de un Lenguaje
El componente fundamental en todo lenguaje es el Alfabeto, el cual definimos como un conjunto
finito de símbolos. Por ejemplo para el lenguaje binario el alfabeto es { 0, 1}
La noción de símbolo es de mayor nivel que la de carácter o digito. El símbolo es indivisible, por
ejemplo el símbolo if corresponde a una palabra reservada, si lo descomponemos en los
caracteres i y f, deja de ser un símbolo de palabra reservada.
Observación: Un lenguaje puede ser visto como un conjunto. El lenguaje es el conjunto de todas
las cadenas formadas con símbolos del alfabeto y que cumplen el mismo patrón de formación.
Ejm. Dado el lenguaje L = { a (bn a)m , m>=1, n>=0 } indicar cual(es) de las siguientes cadenas
candidatas pertenece al lenguaje:
aabba, abaa, ababa, abbaaa, babbaa
Ejemplos:
Ejercicios