Sunteți pe pagina 1din 6

1.

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. Abstracciones en los LP


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 Una propiedad adicional de la abstraccin de datos unitarios es su reutilizacin. Tpicamente estas abstracciones representan componentes o contenedores y se convierten en la base de mecanismos de bibliotecas de lenguaje.

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.

1.3. Paradigmas de computacin


Programacin imperativa o procedural: o Propiedades: La ejecucin secuencial de instrucciones. El uso de variables en representacin de localizaciones de memoria. El uso de la asignacin para cambiar el valor de las variables. o Al requisito de que la computacin sea descrita como una secuencia de instrucciones se le llama cuello de botella de Von Neumann, dado que limita la capacidad de un lenguaje de indicar computacin en paralelo. Programacin orientada a objetos: o Un objeto puede describirse vagamente como una coleccin de localizaciones de memoria junto con todas las operaciones que pueden cambiar los valores de dichas localizaciones. o Representan una computacin como la interaccin o comunicacin entre un grupo de objetos, cada uno de ellos comportndose como su propia computadora, con su propia memoria y sus propias operaciones. o En muchos lenguajes, stos se agrupan en clases que representan todos los objetos con las mismas propiedades. Entonces, se crean los objetos como instancias (ejemplos particulares) de una clase. o Los mtodos son las funciones u operaciones que contienen esas clases. o En una clase, primero se define un constructor, el cual asigna memoria y proporciona los valores iniciales para los datos de un objeto. o Permiten a los programadores escribir cdigo reutilizable y ampliable o Los lenguajes orientados a objetos ms importantes son Java, C++ y Smalltalk.
3
Longinos Recuero Bustos (http://longinox.blogspot.com)

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.

1.4. Definicin de lenguaje


Un LP necesita una descripcin completa y precisa. Actualmente es habitual dar una definicin formal slo de fracciones de un LP. La importancia de una definicin precisa para un LP debe resultar clara a partir de su uso para describir un cmputo. La mejor forma de lograr independencia de la mquina y independencia de la implementacin es a travs de la estandarizacin, que requiere una definicin del lenguaje independiente y precisa, as como universalmente aceptada. Los requisitos de una definicin formal aportan disciplina durante el diseo de un lenguaje. La definicin del lenguaje se puede dividir aproximadamente en dos partes: o Sintaxis del elnguaje (su estructura): Es de la descripcin de las maneras en que las diferentes partes del lenguaje pueden ser combinadas para formar otras partes (equiparable a la gramtica de un lenguaje natural):
Un enunciado if est formado de la palabra "if" seguida de una expresin entre parntesis,

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.

1.5. Traduccin del lenguaje


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:

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.

Longinos Recuero Bustos (http://longinox.blogspot.com)

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.

1.6. Diseo 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.

Longinos Recuero Bustos (http://longinox.blogspot.com)