Documente Academic
Documente Profesional
Documente Cultură
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.
1.2.2. Abstracciones de control. Resumen propiedades de la transferencia de control, es decir, la modificacin de la trayectoria de ejecucin de un programa con base en una situacin determinada (bucles, sentencias condicionadas, llamadas a procedimientos).
2
Longinos Recuero Bustos (http://longinox.blogspot.com)
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>]
Un problema ntimamente relacionado con la sintaxis de un LP es su estructura lxica (equiparable a la ortografa del lenguaje natural):
Longinos Recuero Bustos (http://longinox.blogspot.com)
Es la estructura de las palabras del lenguaje que generalmente se conocen como tokens:
"if", "else", "+", "<=", ";", "."
Semntica del lenguaje (su significado): Es mucho ms compleja y difcil de describir con precisin. Al describir el significado de una fraccin de cdigo se involucra algn tipo de descripcin de los efectos de su ejecucin, y no existe una manera estndar de hacer esto. Una descripcin completa de su significado en todos los contextos puede llegar a ser extremadamente compleja:
A pesar de ello se han desarrollado varios sistemas de notacin para definiciones formales: semntica operacional, la semntica denotacional y la semntica axiomtica.
La compilacin es un proceso que consta de dos pasos: o El programa original (programa fuente) es la entrada al compilador, y la salida del compilador es un nuevo programa (programa objetivo) el cual puede ser entonces ejecutado (si est en lenguaje mquina), aunque lo ms comn es que sea un lenguaje ensamblador. o El programa objetivo debe ser traducido por un ensamblador en un programa objeto y posteriormente ligado (linkado) con otros programas objetos y cargado en localizaciones de memoria apropiadas antes de que pueda ser ejecutado.
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.