Está en la página 1de 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)

También podría gustarte