Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Primera Clase de Modelos
Primera Clase de Modelos
INTRODUCCIN .................................................................................................................................................................. 2
1.1.
QU ES UN LP? ................................................................................................................................................................... 2
1.2.
ABSTRACCIONES EN LOS LP.................................................................................................................................................... 2
1.2.1. Abstracciones de datos..................................................................................................................................................... 2
1.2.2. Abstracciones de control. .................................................................................................................................................. 2
1.3.
PARADIGMAS DE COMPUTACIN ................................................................................................................................................ 3
1.4.
DEFINICIN DE LENGUAJE ........................................................................................................................................................ 4
1.5.
TRADUCCIN DEL LENGUAJE ..................................................................................................................................................... 5
1.6.
DISEO DEL LENGUAJE ............................................................................................................................................................ 6
1.
Introduccin
1.1. Qu es un LP?
Un LP es un sistema notacional para describir computaciones en una forma legible tanto para la mquina como para el
ser humano.
La computacin, incluye todo tipo de operaciones de computadora, incluyendo la manipulacin de datos, el
procesamiento de texto y el almacenamiento y recuperacin de la informacin.
La legibilidad por parte de la mquina, depende de la estructura del lenguaje. Ha de tener una estructura lo
suficientemente simple como para que permita una traduccin eficiente.
La legibilidad por parte del ser humano, requiere que un LP proporcione abstracciones de las acciones de las
computadoras fciles de comprender.
Una consecuencia de lo anterior es que los LP tienen tendencia a parecerse a los lenguajes naturales. De esta forma un
programador puede basarse en su comprensin del lenguaje natural para tener una idea inmediata de la computacin
que se est describiendo.
Las abstracciones juegan un papel esencial para dotar de legibilidad a los programas para los seres humanos.
Las abstracciones de los LP se agrupan en dos clases generales: abstraccin de datos y abstraccin de control. stas a
su vez, se agrupan en tres niveles: bsicas (renen informacin de mquina ms localizada), estructuradas (renen
informacin ms global sobre la estructura del programa) y unitarias (renen informacin sobre alguna parte completa de
un programa).
1.2.1. Abstracciones de datos
Resumen las propiedades de los datos (cadenas, nmeros, rboles de bsqueda).
Bsicas:
o Resumen la representacin interna de valores de datos comunes en una computadora (complemento a dos,
IEEE754, ASCII).
o Las localizaciones en la memoria de la computadora que contienen valores de datos, se abstraen dndoles un
nombre llamado variables.
o El tipo de valor de datos tambin recibe un nombre y se conoce como tipo.
o A las variables se les dan nombres y tipos de datos mediante una declaracin.
Ej.: int x;
Estructuradas:
o La estructura de los datos es el mtodo principal para la abstraccin de colecciones de valores de datos
relacionados entre s.
Ej.: registros, arreglos, tipos estructurados.
Unitarias:
o Incluyen al encapsulado de datos y la ocultacin de la informacin, a menudo relacionado con los tipos de datos
abstractos.
Ej: paquete, clase.
o
o
Bsicas:
o Son las sentencias de un lenguaje que combinan unas cuantas instrucciones de mquina en una sentencia
abstracta ms comprensible.
Ej.: x = x + 3;
Estructuradas:
o Dividen un programa en grupos de instrucciones que estn anidadas.
Ej.: if, case, switch.
o
o
o
o
o
o
o
Una ventaja es que se pueden anidar estas estructuras dentro de otras estructuras de control.
Los mecanismos de bucle o ciclos estructurados se presentan de muchas formas, incluyendo los ciclos while, for
y do de C y C++, los ciclos repeat de Pascal y el enunciado loop de Ada.
Otro mecanismo til es el procedimiento (subrutina o subprograma).
Se definirse un procedimiento dndole un nombre y asocindolo con las acciones que se van a llevar a cabo
(declaracin de procedimiento).
El procedimiento debe ser llamado (invocacin o activacin) en el punto en que las acciones deben ejecutarse.
Una funcin puede considerarse un procedimiento pero que devuelve un valor o resultado a su invocador.
En C y C++ a los procedimientos se les llama funciones nulas.
Unitarias:
o Consiste en efectuar abstracciones de control con la finalidad de incluir una coleccin de procedimientos que
proporcionan servicios relacionados lgicamente con otras partes del programa y que forman una parte
unitaria, o independiente, del programa.
o Lo descrito anteriormente es en esencia lo mismo que una abstraccin de datos de nivel unitario. La nica
diferencia consiste en que aqu el enfoque est en las operaciones ms que en los datos.
o Un tipo de abstraccin de control que resulta difcil de clasificar son los mecanismos de programacin en
paralelo, por ejemplo, las tareas (task) de ADA son una abstraccin unitaria, pero los hilos o hebras de Java se
consideran estructuradas.
Programacin funcional:
o Basa la descripcin de las computaciones en la evaluacin de funciones o en la aplicacin de
funciones a valores conocidos.
o Se conocen tambin como lenguajes aplicativos.
o Su mecanismo bsico es la llamada de funcin, que involucra la transferencia de valores como
parmetros a las funciones y la obtencin de valores resultantes como valores devueltos de las funciones.
o Este paradigma no involucra una idea de variable o asignacin de variables.
o La programacin funcional es en cierto sentido opuesta a POO, ya que, se concentra en los valores y las
funciones en vez de en localizaciones de memoria; adems de que las operaciones repetitivas se expresan
mediante funciones recursivas y no mediante ciclos.
o Sus ventajas son que el lenguaje se hace ms independiente del modelo de mquina y resulta ms fcil extraer
conclusiones precisas con respecto a su comportamiento.
o Los lenguajes ms importantes son LISP, Scheme y Haskell.
Programacin lgica:
o Basado en la lgica simblica.
o El programa est formado por un conjunto de enunciados que describen lo que es verdad con respecto a un
resultado deseado, en oposicin a dar una secuencia particular de enunciados que deben ser ejecutados en un
orden fijo para producir el resultado.
o No tienen necesidad de abstracciones de control como ciclos o seleccin.
o Tambin se le conoce como programacin declarativa o lenguajes de muy alto nivel. Las variables no
representan localizaciones de memoria sino que se comportan ms como nombres para los resultados de las
computaciones parciales.
o Un lenguaje importante es Prolog.
Es necesario resaltar, que aunque un LP pudiera tener la mayor parte de las propiedades de uno de los anteriores
paradigmas, contienen generalmente caractersticas de varios.
La sintaxis de casi todos los lenguajes est dada ahora utilizando gramticas libres de contexto:
<enunciado if> ::= if(<expresin>)<enunciado>
[else <enunciado>]
Es la estructura de las palabras del lenguaje que generalmente se conocen como tokens:
"if", "else", "+", "<=", ";", "."
A pesar de ello se han desarrollado varios sistemas de notacin para definiciones formales: semntica
operacional, la semntica denotacional y la semntica axiomtica.
Un traductor es un programa que acepta otros programas escritos en el lenguaje en cuestin y que, o los ejecuta
directamente (intrprete), o los transforma en una forma adecuada para su ejecucin (compilador).
La interpretacin es un proceso que consta de un paso, en donde tanto el programa como la entrada le son dados al
intrprete y se obtiene una salida:
Los pseudointrpretes (traductores intermedios entre intrpretes y compiladores), ejecutan el programa sin producir un
programa objetivo.
Tanto los compiladores como los intrpretes deben llevar a cabo:
o Primero, un analizador lxico (rastreador), debe convertir la representacin textual del programa como una
secuencia de caracteres en una forma ms fcil de procesar (agrupando caracteres en tokens).
o Acto seguido, el analizador sintctico o gramatical debe determinar la estructura de la secuencia de los tokens
proporcionados por el rastreador.
o Finalmente, un analizador semntico debe determinar lo suficiente del significado de un programa como para
permitir la ejecucin o la generacin de un programa objetivo. Estas fases ocurren combinadas de diversas
maneras.
Un traductor tiene que mantener un entorno de ejecucin en el cual se asigna el espacio adecuado de memoria para los
datos del programa y registra el avance de la ejecucin del mismo.
Las propiedades de un LP que pueden ser determinadas antes de su ejecucin se llaman propiedades estticas,
mientras que las propiedades que solamente se pueden determinar durante la ejecucin se conocen como propiedades
dinmicas.
Un compilador puede utilizar slo las propiedades estticas de un lenguaje (su lxico y su estructura sintctica).
Un lenguaje que sea ms dinmico es ms adecuado para la interpretacin.
Un lenguaje que slo tenga asignacin esttica puede utilizar un ambiente totalmente esttico. Para lenguajes ms
dinmicos debe utilizarse un ambiente ms complejo totalmente dinmico. En un punto medio est el tpico ambiente
basado en pilas (C y Ada).
Los intrpretes son inherentemente menos eficientes que los compiladores.
Una propiedad importante de un traductor de lenguaje es su respuesta a errores contenidos en un programa fuente.
Un traductor debera emitir mensajes de error apropiados, siendo la recuperacin de errores lo ms apropiado es, que le
permite al traductor seguir adelante con la traduccin, de manera que puedan describirse errores adicionales.
Los errores lxicos ocurren durante el anlisis lxico, generalmente estn limitados al uso de caracteres ilegales.
Los errores ortogrficos los detectara el analizador sintctico (incluyen tokens faltantes o expresiones mal organizadas).
Los errores semnticos pueden ser estticos (tipos incompatibles o variables no declaradas) o dinmicos (subndice
fuera de rango o la divisin entre cero).
Los errores lgicos (los que comete el programador y hace que el programa se comporte de manera errnea), de
ninguna manera son errores desde el punto de vista de la traduccin del lenguaje.
El reto del diseo del LP, es lograr la potencia, expresividad y comprensin que requiere la legibilidad del ser humano,
mientras que se conservan al mismo tiempo la precisin y simplicidad necesarias para la traduccin de mquina.
Un lenguaje exitoso de programacin tiene utileras para abstraccin de datos y abstraccin de control.
La meta prevaleciente de la abstraccin en el diseo de LP es el control de la complejidad.