Professional Documents
Culture Documents
Paradigmas de Programación
Paradigmas de Programación
No pretende ser una guía profunda y extensiva acerca de cada uno de estos paradigmas
pero sí tiene el propósito de que para sus lectores sea un primer acercamiento al tema
que pueda ser fehaciente, claro, divertido y fácil de entender.
Tabla de Contenidos
1. Introducción
1.1 Lenguajes de Programación
2
2. Paradigmas de Programación
Programación Imperativa
5
Programación Funcional 6
Programación Lógica 8
3. Conclusión
4. Recomendaciones
5. Bibliografía
6. Ilustraciones
1. Introducción
Me parece imposible hablar de paradigmas de programación sin antes saber qué signifi-
ca el término paradigma, qué es un lenguaje de programación, y entender exactamente
qué es el lenguaje. Así que me parece prudente empezar desde aquí.
1. Un vocabulario de símbolos;
Con esto, se obtiene un lenguaje en el que a diferencia de un lenguaje natural, sus sen-
tencias no significan nada en particular2 , ya que su significado aparece cuando les es
dado un significado a sus símbolos, que no da cabida a ambigüedades y que carece del
poder de crecer y evolucionar autónomamente.
2. Paradigmas de Programación
Paradigmas de Programación
Programación Imperativa
• Variables: Son objetos cuyo valor depende de una localidad de memoria y que puede
cambiar a lo largo de la ejecución del programa. La definición de este paradigma sería
imposible sin estos elementos fundamentales, ya que los estados de un programa son
representados y diferenciados por su conjunto de variables y sus contenidos.
• Tipos de datos: Son abstracciones que representan un conjunto de valores junto con
las operaciones y relaciones que son aplicables a ellos. Algunos tipos comunes en va-
rios lenguajes son: integer, que define parcialmente el conjunto de los números ente-
ros, float, que representa números reales y boolean, que generalmente especifica al pe-
queño conjunto conformado por true y false. Es importante recalcar que estos no son
los únicos tipos de datos y que muchos lenguajes permiten la implementación de mu-
chos otros.
Una sentencia de selección provee al programa de medios para elegir entre dos o
más “caminos” de ejecución. Su forma más sencilla es el condicional if que seleccio-
na entre dos opciones y puede extenderse a una selección prácticamente infinita me-
diante constructores múltiples (como switch o case) o la anidación5 de condicionales
if.
En esta categoría también estarían incluidas sentencias como goto, sin embargo,
estas han caído en desuso y que, como señalo Dijkstra 7, representan más desventajas
que ventajas.
Excepto por los paradigmas lógico y funcional, todos los demás heredan muchas carac-
terísticas de la programación imperativa.
Programación Funcional
El paradigma funcional esta basado en el concepto matemático de función8:
6Rojas Raul y Ulf Hashagen. The First Computers: History and Architectures. Estados Unidos:
MIT Press, 2002. Página 277.
7Dijkstra, Edsger W. Go To Statement Considered Harmful. Communications of the ACM. Vol. 11,
No. 3, Páginas 147 y 148.
Disponible en: <http://www.ifi.uzh.ch/req/courses/kvse/uebungen/Dijkstra_Goto.pdf>
8 Johnsonbaugh, Richard. Discrete Mathematics. Estados Unidos: Prentice Hall, 2008. Pagina 117.
Héctor Zárate | www.mieldemaple.com
6
Paradigmas de Programación
Parámetros Resultado
Figura 2: Las entradas, llamadas parámetros, se operan mediante una definición y se obtiene una
salida llamada resultado.
• Por último, que una función puede ser utilizada como parámetros y resultados de
cualquier otra función.
Los lenguajes más utilizados dentro de este paradigma son Standard ML,
Haskell y Scheme9 aunque al hoy por hoy LOGO10 figuraría junto con otros dialectos de
LISP.
9Goldberg, Benjamin. Functional Programming Languages. ACM Computing Surveys, Vol. 28, No.
1, Marzo 1996. Disponible en: <http://cs.nyu.edu/goldberg/pubs/gold96.pdf>.
10"TIOBE Programming Community Index for November 2008". TIOBE Software: The Coding
Standards Industry. 13 de Noviembre de 2008.
<http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html>.
Héctor Zárate | www.mieldemaple.com
7
Paradigmas de Programación
Programación Lógica
El paradigma lógico difiere de forma importante de otros paradigmas 11. No sólo en su
sintaxis o semántica, sino que en él la lógica representa conocimiento, el cual es mani-
pulado mediante inferencias. A diferencia de los demás paradigmas, trabajar en este
significa especificar qué hacer y no cómo hacerlo, por ello son llamados lenguajes de-
clarativos.
Ahora, suponiendo este conjunto, vamos a realizar algunas operaciones sobre él. Prime-
ro, voy a realizar una consulta que devolvería el conjunto ordenado de forma descen-
dente por su fecha de estreno:
SELECT *
FROM peliculas
ORDER BY estreno DESC
11 Véase: Mitchell, John. Concepts in Programming Languages, Reino Unido: Cambridge Univer-
sity Press, 2003.
12 Desde el punto de vista de quien suscribe, la Magnum opus de Mario Moreno Cantinflas.
Héctor Zárate | www.mieldemaple.com
8
Paradigmas de Programación
SELECT *
FROM peliculas
WHERE genero <> ‘Drama’
ORDER BY estreno DESC
Lo que resultaría en este subconjunto de elementos que esta ordenado por fecha de
estreno y los cuales satisfacen una clausula específica: que su genero sea distinto a
“Drama”.
que queríamos hacer con nuestro conjunto, pero no definimos cosas como, cuantas ve-
ces iterar alguna instrucción, especificaciones para hacer cada comparación, etc.
Programar bajo este paradigma es como tratar de simular o modelar los objetos
del mundo real. Una mascota como un perro podría servir para un ejemplo introducto-
rio:
Un objeto está compuesto por estados y métodos. Los estados son pro-
piedades del objeto y están representados por variables con valores úni-
cos para cada objeto y que son llamadas variables de instancia. En este
ejemplo, podríamos pensar en cosas como: edad, color, tener hambre,
tener ganas de salir al parque, etc., propiedades todas
que son intrínsecas a cada perro pero cuyos valores son
únicos en cada uno.
Ahora que tenemos una noción de lo que es un objeto, quiero mencionar las
propiedades más generales y formales de este paradigma:
tiene dientes y garras para cazar a otros animales, ojos que apuntan hacia el frente y,
claro, un menú donde la mayoría de los platillos son carne. Y así ad nauseam...
De la misma manera una función puede ser definida como polimórfica si al llamarla
mediante dos parámetros distintos, arroja un retorno de tipos diferentes.
Gran parte de los lenguajes más utilizados hoy en día están orientados a objetos,
entre ellos se encuentran: Java, C++, PHP, Python, C#, Delphi, Ruby, D y Actionscript,
entre otros.
3. Conclusión
Como conclusión, sólo quiero recalcar que en la actualidad no existe una frontera bien
definida para cada paradigma. Los lenguajes actuales, como Ruby, Actionscript o
C# pueden ser mejor definidos como multi-paradigmas. Involucran características de
más de uno solo.
También quiero mencionar que estos cuatro paradigmas no son los únicos que
existen y hay muchos otros que parecen relevantes, como la programación a aspectos, o
que han sido ampliamente usados, como la programación a eventos. De cualquier for-
ma, cualquier tipo de programación involucra los elementos mencionados en este traba-
jo.
4. Recomendaciones
• Floyd, Robert. The Paradigms of Programming. 1978 ACM Turing Award Lecture.
<https://eprints.kfupm.edu.sa/70764/1/70764.pdf>
5. Bibliografía
• Scott, Michael Lee. Programming Languages Pragmatics. Estados Unidos: Morgan
Kauffmann Publishers, 2000.
• Linz, Peter. An Introduction to Formal Languages and Automata. Estados Unidos: Jo-
nes and Bartlett Publishers, 2001.
6. Ilustraciones
• Bwrah bwrah. Shouting in the city... 21 de Mayo de 2008.
<http://flickr.com/photos/rrrr030/2512299748/>