Вы находитесь на странице: 1из 20

Desarrollo de aplicaciones I

Paradigmas de Programacin

Agenda
Introduccin Lenguajes de programacin Definicin de paradigma Paradigmas de programacin Clasificacin general de los paradigmas de programacin

1. Introduccin
Edward Sapir, defini el lenguaje como un mtodo humano y no instintivo de comunicar ideas, emociones y deseos mediante un sistema de smbolos producidos voluntariamente. Esta definicin en principio se refiere a un lenguaje natural, que es aquel lenguaje hablado o escrito que usamos para la comunicacin ms cotidiana y general. No obstante, en este trabajo nos es de inters otro tipo de lenguajes llamados lenguajes formales. Un lenguaje formal es un lenguaje donde existe una gramtica que implementa el conjunto de concatenaciones (cadenas) posibles de un alfabeto finito particular. Esta gramtica provee al lenguaje de 3 elementos importantes:
1.
2. 3.

Un vocabulario de smbolos;
Reglas sintcticas para combinar estos smbolos en cadenas y frmulas gramaticalmente correctas, y Reglas semnticas para darle significado e interpretacin a esas frmulas.

1.1 Lenguajes de Programacin


Los lenguajes de programacin forman un

subconjunto de los lenguajes formales. Mediante


ellos el ser humano puede comunicarse con una

computadora y decirle qu es lo que tiene que hacer


y, al mismo tiempo, sirven para comunicarse con otros seres humanos y expresarles qu es lo que se quiere que haga una computadora.

1.1 Lenguajes de Programacin

Bryan Higman, quien lo describi como: (...) un conjunto de objetos llamados vocabulario que pueden ser combinados en cadenas lineales de acuerdo a ciertas reglas llamadas gramtica.

Esto, con el propsito de comunicarse con un receptor e inducir en l la realizacin de ciertas

actividades..

Ahora,

entindase

receptor

por

cualquier tipo de computadora y nuestra definicin de lenguaje de programacin esta lista.

1.1 Lenguajes de Programacin


Con esto, se obtiene un lenguaje en el que a

diferencia de un lenguaje natural, sus sentencias


no significan nada en particular, ya que su significado aparece cuando les es dado un

significado a sus smbolos, que no da cabida a


ambigedades y que carece del poder de crecer y evolucionar autnomamente.

1.2 Definicin de Paradigma


Diccionario de Mara Moliner (vase el recuadro amarillo) es cierta y suficiente, para esta discusin necesitaremos de una ms amplia. paradigma (del lat. "paradigma", del gr. "pardeigma") 1 m. *Modelo o *ejemplo.

paradigma. (Del lat. paradigma, y este del gr. ). 1. m. Ejemplo o ejemplar. 2. m. Ling. Cada uno de los esquemas formales en que se organizan las palabras nominales y verbales para sus respectivas flexiones. 3. m. Ling. Conjunto cuyos elementos pueden aparecer alternativamente en algn contexto especificado; p. ej., nio, hombre, perro, pueden figurar en El -- se queja.
Real Academia Espaola Todos los derechos reservados

1.2 Definicin de Paradigma


Thomas Kuhn, en su libro publicado en 1962, The Structure of Scientific Revolutions, ampli la concepcin del trmino paradigma. Para Kuhn, el trmino se refiere a la forma en que un cientfico percibe al mundo y a la estructura de teoras y

suposiciones que modifican esta percepcin.


Otro punto importante para nuestro inters es el sealamiento que hace Kuhn acerca de cmo el xito de un paradigma es

consecuencia de su efectividad para resolver algn problema.


En breve, un paradigma es el resultado de un proceso social en el cual un grupo de personas desarrolla nuevas ideas y

crea principios y prcticas alrededor de estas ideas, y no


solamente un conjunto de prcticas y conocimientos

1.2 Definicin de Paradigma


Ms especficamente para la ciencia de la computacin, probablemente fue Robert Floyd quien habl por primera vez del trmino Paradigmas de Programacin y quien los defini:

como un proceso de diseo que va ms all de

una gramtica, reglas semnticas y algoritmos,


sino que es un conjunto de mtodos sistemticos aplicables en todos los niveles del diseo de programas.

2. Paradigmas de Programacin
Hoy en da, el uso de la computacin es extremadamente diverso. Todas estas distintas aplicaciones del cmputo han requerido del desarrollo de un sinnmero de lenguajes de programacin, cada uno con propsitos y formas distintas. No obstante, todos estos lenguajes pueden ser clasificados en una jerarqua de familias a partir del modelo

que siguen para definir y operar informacin (Figura 1), es decir, que
pueden ser jerarquizados segn el paradigma que siguen. En una primera clasificacin, se encuentran dos grandes grupos en

donde es posible englobar casi todos los paradigmas de programacin


conocidos hasta ahora. Aunque existe un gran nmero de paradigmas, voy a enfocarme solamente a los ms

Clasificacin general de los paradigmas de programacin


FUNCIONAL DECLARATIV A LGICA PARADIGMAS DE PROGRAMACIN ORIENTADA A OBJETOS

IMPERATIVA

ORIENTADA AEVENTOS, VISUAL, ORIENTADA A ASPECTOS

Programacin Imperativa

El trmino imperativo en este caso, no difiere esencialmente del modo

gramtico imperativo del espaol, donde una oracin como: Martnez,


cierre el messenger y pngase a trabajar en lo que le ped! le esta indicando a un sujeto, presumiblemente flojo, que deje de perder el tiempo y, en lugar de eso, realice el trabajo para el cual se le esta pagando.

Es decir, es una orden para realizar una accin especfica. De forma similar, la programacin imperativa consiste en una serie de comandos que una computadora ejecutar. Estos comandos detallan de forma clara y especfica el cmo hacer las cosas y llevarn al programa a travs de distintos estados.

Los elementos ms importantes de este paradigma son:


Variables Tipos

de datos

Expresiones Estructuras

de Control

Programacin Funcional
El paradigma funcional esta basado en el concepto matemtico de funcin:

Una funcin f asigna a cada miembro de un conjunto X, exactamente un miembro de un conjunto Y. Donde: El conjunto X y Y pueden o no ser el mismo y donde X es llamado dominio de f y Y es llamado codominio o rango de f.

Programacin Funcional
El paradigma funcional considera al programa como una funcin matemtica, donde el dominio representara el conjunto de todas las entradas posibles (inputs) y el rango sera el conjunto de todas las salidas posibles (outputs). La forma en que funciona puede ser entendida como una caja negra:
Se pudiera pensar que cualquier tipo de programacin podra ser clasificada como programacin funcional y esto es relativamente cierto a excepcin de unos puntos claves: Primero, que en los lenguajes funcionales no existe el concepto de variables y consecuentemente tampoco existen operaciones de asignacin. Aunque podra parecer que los parmetros de una funcin se comportan como una variable (puesto que pueden llevar un nombre y su uso es de hecho parecido al de las variables), esto es incorrecto: El valor de los parmetros es dado como fijo al inicio de la funcin. Segundo, la existencia de una propiedad llamada transparencia referencial (Referential transparency), la cual indica que una funcin slo depende de sus parmetros y que tendr efecto nicamente en su resultado, por lo que podramos llamar a una funcin arbitrariamente sin tener efectos colaterales en el resto de las computaciones. Por ltimo, que una funcin puede ser utilizada como parmetros y resultados de cualquier otra funcin. Los lenguajes ms utilizados dentro de este paradigma son Standard ML, Haskell y

Programacin Lgica
El paradigma lgico difiere de forma importante de otros paradigmas. No slo en su sintaxis o semntica, sino que en l la lgica representa conocimiento, el cual es manipulado mediante inferencias. A diferencia de los dems paradigmas, trabajar en este significa especificar qu hacer y no cmo hacerlo, por ello son llamados lenguajes declarativos.

El proceso general de la programacin lgica es que a partir de un conjunto de reglas


(axiomas) e inferencias podamos comprobar nuevas proposiciones que nos sean relevantes. Este proceso est basado en reglas de lgica de primer orden.

Al ser un paradigma bastante abstracto vale la pena esclarecerlo a travs de algunos


ejemplos. Structured Query Language (SQL), un lenguaje para operar bases de datos y el cual representa otra de las aplicaciones de la programacin lgica.

Programacin Orientado a Objetos

Programar bajo este paradigma es como tratar de simular o

modelar los objetos del mundo real

Un objeto est compuesto por estados y mtodos. Los estados son propiedades del objeto y estn representados por variables con valores nicos para cada objeto y que son llamadas variables de instancia

Los

mtodos

son

representaciones

de

los

comportamientos que el objeto es capaz de hacer

Propiedades generales y formales de este paradigma oo

Encapsulamiento: Significa que el cdigo o datos de un objeto pueden estar ocultos para cualquier entidad externa a l. Herencia: Es la propiedad de crear nuevos objetos a partir de la definicin de otros. Un objeto nuevo ser idntico al modelo que seguimos para crearlo, excepto por algunos cambios incrementales o redefiniciones de sus estados o mtodos. Polimorfismo: Esencialmente, es la propiedad que le permite a un mtodo aceptar o devolver valores de ms de un tipo Invocacin Dinmica de Mtodos (Dynamic Method Binding): Se traduce en que cuando llamamos algn mtodo de un objeto estaremos ejecutando la operacin especfica de ese objeto y no alguna implementacin de alguno de sus padres

Caractersticas
Este paradigma hace posible el desarrollo modular de un software, porque, hasta cierto grado, cada componente es independiente de los dems, lo que permite que estos componentes puedan ser reutilizados y reciclados, incluso, a lo largo de distintos proyectos.

Gran parte de los lenguajes ms utilizados hoy en da estn orientados a objetos, entre ellos se encuentran: Java, C++, PHP, Python, C#, Delphi, Ruby, D y Actionscript, entre otros.

3. Conclusin

Actualmente no existe una definicin de las fronteras para cada paradigma. Los lenguajes actuales, como Ruby, Actionscript o C# pueden ser mejor definidos como multiparadigmas

Importante: Estos cuatro paradigmas no son los nicos que existen y hay muchos otros que parecen relevantes, como la programacin a aspectos, o que han sido ampliamente usados, como la programacin a eventos.

No dudo que existan muchas preguntas al respecto, sin

embargo una de las mejores maneras de despejarlas es


programando.