Está en la página 1de 7

Unidad 1 / Escenario 1

Lectura Fundamental

Introducción a los Paradigmas de


Programación

Contenido

1 ¿Qué son paradigmas de programación? 1

2 Principales paradigmas de programación 1

Palabras Claves: lenguajes de programación, imperativo, orientado a objetos, programación funcional, progra-
mación lógica.
En este módulo se extenderá el conocimiento de los estudiantes en cuanto a programación de computadores ası́
como también se incrementarán las destrezas y herramientas teóricas, prácticas y tecnológicas que tienen en cuanto
a fundamentos de programación como base indispensable para la formación de un tecnólogo o profesional en
tecnologı́a. Este módulo es de vital importancia como fundamentos básicos de módulos relacionados con ingenierı́a
de software, puesto que aquı́ se afianzan conocimientos dados en el módulo de programación de computadores y se
forman lo que serán los cimientos de los conocimientos teóricos y prácticos de todo profesional en ingenierı́a de
software, tecnologı́as de la información y en general de cualquier profesional en tecnologı́a.

1. ¿Qué son paradigmas de programación?

El nombre del módulo paradigmas de programación debe su nombre al hecho de que en su contenido se presentan
fundamentos de tres paradigmas diferentes de programación, extendiendo el conocimiento del paradigma imperativo
de programación dado en el módulo Programación de computadores. Antes de describir brevemente estos tres
paradigmas, se explicará brevemente la etimologı́a del nombre del módulo.

En diferentes áreas del conocimiento se conoce como un paradigma (del griego paradeigma) a un conjunto distinguible
de conceptos, patrones, teorı́as, postulados, estándares que constituyen un referente bien conocido y respetado. En
este sentido, una clasificación natural de los diferentes lenguajes de programación es en cuanto al paradigma del
conocimiento lógico/matemático/de-modelamiento en el que están basados. Siendo la computación moderna una
creación basada en conocimientos matemáticos ha evolucionado (y lo sigue haciendo) a partir de diferentes ideas,
cada lenguaje está suscrito a uno o varios paradigmas matemáticos.

2. Principales paradigmas de programación

Entre los principales paradigmas de programación se encuentran los siguientes:

2.1. Programación imperativa

Al hablar de programación de computadores, hablamos inicialmente de solucionar un problema de comunicación


entre seres humanos y máquinas, teniendo en cuenta la gran capacidad de procesamiento y almacenamiento de
información de estas. Tal brecha natural de comunicación se rompe a través de la definición de lenguajes de
programación que representan un punto intermedio entre nuestro idioma y el que hablan los computadores. Estos
lenguajes no son difı́ciles de aprender, ya que se basan en elementos de nuestro lenguaje y son fáciles de traducir al
lenguaje que entienden los computadores.

Las anteriores definiciones se basan en un paradigma de programación imperativo. Hablamos en este caso de
la necesidad de dar órdenes, en otras palabras, de decirle a un computador qué queremos que haga por nosotros.
Los paradigmas de programación estructurada y programación orientada a objetos se basan en programación

POLITÉCNICO GRANCOLOMBIANO 1
imperativa, dado que, el sentido de escribir programas es utilizar los recursos de un computador para solucionar un
problema o para representar una situación particular.

La diferencia que define la programación orientada a objetos es que parte de un proceso de modelado del mundo
real, que permite establecer la lógica de los programas que escribimos de una forma más natural y orientada
directamente a la solución del problema. De acuerdo con esa situación, es el paradigma más usado actualmente y,
por lo tanto, dedicaremos la mayor parte del tiempo a conocerlo.

2.2. Programación funcional

No todo es imperativo. Es posible detallar un programa a partir de definiciones de funciones como lo propone la
programación funcional. Este paradigma ofrece la posibilidad, más que pensar en la solución del problema, de
presentar estrategias para hacerlo de forma clara, elegante y fiel a definiciones matemáticas concretas, puesto que
se basa en la definición de funciones y de conjuntos de datos que cumplen criterios estrictos, los cuales presentan
un formalismo atractivo para representar situaciones basadas en definiciones matemáticas.

La utilización de este paradigma es aplicable a problemas que se definen con base en funciones, que pueden ser
muchas veces recursivas como es el caso de la función factorial, la cual cuenta con una definición que encaja
perfectamente en este paradigma. En la programación funcional no existen ciclos; por lo tanto, las iteraciones
deberán ser representadas como funciones recursivas que se definen usando un caso base y una relación de recurrencia.
Dado que la definición de este tipo de estructuras en algunos casos es más clara y más sencilla en programación
imperativa, es necesario contar con un buen criterio al definir qué tipo de problemas o situaciones deseamos resolver
o representar con este paradigma.

2.3. Programación lógica

También es posible resolver situaciones basadas en la toma de decisiones a partir de un conjunto de predicados
lógicos. Esta situación se ve en muchos casos relacionados con toma de decisiones o en inteligencia artificial, donde
se alimenta una base de conocimiento a partir de la cual posteriormente es posible generar nueva información,
tomar decisiones o emitir algún juicio concreto.

2.4. Programación por restricciones

Este paradigma se basa en la definición ya no de una serie de pasos para hallar una solución, sino de un conjunto
de condiciones que debe cumplir la solución de un problema. Su aplicación es similar a la de la programación lógica,
ya que se basa en la generación de nueva información a partir de una basa de conocimiento. Por ejemplo, se quieren
hallar las soluciones de la siguiente ecuación:

3x4 + 8y 2 + 2z 3 = 54

Teniendo en cuenta que(restricciones):

• x debe ser par.

POLITÉCNICO GRANCOLOMBIANO 2
• y debe estar en el rango [10,20].
• z debe ser mayor que 4.

La programación por restricciones permite establecer soluciones (si existen) a este tipo de situaciones. Es muy útil
para la búsqueda de información o para problemas de optimización que se basan en este tipo de información.

2.5. Programación orientada por eventos

Se puede considerar a la programación orientada por eventos un paradigma que se basa en programación imperativa,
pero que parte ya no de un conjunto de tareas, sino de un conjunto de eventos que pueden suceder en el mundo
real. Este paradigma se usa al trabajar con dispositivos que generan eventos con base en el uso de sensores. El
trabajo entonces se enfoca en reaccionar a esos eventos de forma adecuada. Por ejemplo, si un robot cuenta con
tres sensores que le permiten ver marcas negras, la lógica diseñada deberı́a definir qué hacer en casos en los que un
sensor o un conjunto de sensores tengan un estado particular. ¿Qué hacer si los tres sensores encuentran marcas
negras?, ¿qué hacer si solo el sensor del medio lo hace?

2.6. Programación orientada a agentes

En este caso hablamos de la definición de estrategias para la solución de problemas con base en la identificación y
definición de agentes, que son entidades independientes que con capacidad de percibir cosas sencillas del ambiente
y tomar decisiones de acuerdo con dichas percepciones. Cada agente cuenta entonces con un rol determinado para
lograr un objetivo relacionadas con el desarrollo de una serie de actividades o instrucciones de acuerdo con su
estado, determinado por lo que conoce del ambiente.

Este paradigma es interesante, ya que fomenta la división de tareas a través de la definición de roles y actividades
que debe cumplir un equipo de forma colaborativa para lograr un objetivo común. Es útil además porque se basa
en la definición de roles como sucede en el mundo real.

2.7. Programación orientada a aspectos

Este paradigma de programación es uno de los más recientes que se han propuesto en modelos orientados a objetos
aplicados al diseño a gran escala, que responden a la articulación de procesos de gestión de información del mundo
real, con el objetivo de lograr mejores resultados en términos de modularidad y claridad conceptual.

La implementación de programas basados en este paradigma se fundamenta en mejorar modelos de programación


orientada a objetos, aislando la lógica del negocio 1 de la funcionalidad, orientada a proveer otras caracterı́sticas
secundarias como seguridad, confiabilidad o verificación de condiciones que debe cumplir la información manejada.
Esto permite que los modelos diseñados sean más claros, modulares, más flexibles y permitan plasmar de mejor
forma caracterı́sticas deseables de un sistema de información.

En particular en este módulo se hará énfasis en el paradigma de programación orientado a objetos. Se escoge este
paradigma como principal objetivo de estudio debido a su extensivo uso tanto en la industria como en la academia,
además de que a través de la gran mayorı́a de lenguajes basado en este paradigma se puede incluir/desarrollar
de manera implı́cita o explı́cita usando conceptos de otros paradigmas. Esta situación de tanta aceptación de

POLITÉCNICO GRANCOLOMBIANO 3
lenguajes basados parcial o totalmente en el paradigma orientado a objetos, tanto en la industria como en la
academia, se debe principalmente a que generalmente como parte de su diseño, se consideran posibilidades de
extensión y usabilidad como lenguajes de propósito general, es decir, lenguajes sin un objetivo especı́fico o campo
de aplicación especı́fica o limitada. Esto hace que generalmente estos lenguajes hagan parte de grandes colecciones
de herramientas tecnológicas, como por ejemplo C# lo es de la tecnologı́a .NET.

La relevancia de cada lenguaje de programación se puede estimar conociendo con la herramienta spectrum de la
IEEE :

https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2017

Una buena referencia conceptual sobre lenguajes de programación y paradigmas de programación es: http://dl.acm.org/
citation.

2.8. En resumen
Como vemos, diversos paradigmas de programación se han resultado al abordar de formas distintas los problemas o
situaciones que queremos analizar. Lo interesante es poder identificar la utilidad que tiene cada paradigma, saber
cuándo es adecuado, cuándo es más sencillo y cuándo es más claro representar problemas que se presentan en
nuestro mundo a partir de las reglas, mecanismos y lenguajes. A lo largo de este curso hablaremos de los paradigmas
más importantes y que tienen mayor aplicación en la actualidad, teniendo en cuenta otros menos conocidos, que sin
embargo muestran grandes ventajas a la hora de resolver problemas particulares.

2.9. Para tener en cuenta

• En general, los paradigmas definen estrategias y mecanismos para ayudar a solucionar un problema. Teniendo
esto en cuenta, es posible trabajar con base en un paradigma, pero usando recursos o lenguajes definidos por
otro. Un ejemplo de esto puede ser la solución de problemas lógicos que cuentan con una representación
basada en restricciones. Otro ejemplo es trabajar bajo un esquema orientado a aspectos o a eventos
en un lenguaje orientado a objetos.
• Teniendo en cuenta lo anterior, se han hecho implementaciones de componentes que facilitan la solución
de problemas bajo un paradigma determinado y que pueden ser incorporados en programación orientada a
objetos, teniendo en cuenta que este es el paradigma más usado por sus grandes ventajas.
• No hay una estrategia única para solucionar un problema; la idea es conocer cuáles existen y cuál es la más
adecuada para llegar a la solución o a la representación adecuada de una situación. Si conocemos claramente
las caracterı́sticas de los paradigmas más importantes, podremos verlos entonces como herramientas que nos
ayudan en nuestro trabajo al enfrentarnos a situaciones especı́ficas.
• Dado que los paradigmas de la programación han partido de la identificación y formalización de estrategias,
y formas de representación de problemas y situaciones, estos representan un campo de la Ingenierı́a de
Sistemas en constante cambio, que demanda de nosotros como profesionales un trabajo de lectura, revisión
y actualización constante en términos de poder conocer nuevas formas para abordar las situaciones que
queremos resolver.

POLITÉCNICO GRANCOLOMBIANO 4
Referencias

Gabbrielli, M. & Martini, S. (2010). Programming Languages: Principles and Paradigms. Springer Science &
Business Media.
Hillar, G. C. (2015). Learning Object-Oriented Programming (3rd). Packt Publishing.
Louden, K. C. y col. (2011). Programming languages: principles and practices. Cengage Learning.
Sebesta, R. W. (2012). Concepts of Programming Languages (10th). Pearson.
Van Roy, P. & Haridi, S. (2004). Concepts, Techniques, and Models of Computer Programming (1st). The MIT
Press.
Watt, D. A. (2004). Programming language design concepts. John Wiley & Sons.
Weisfeld, M. (2008). The Object-Oriented Thought Process (3rd). Addison-Wesley Professional.

POLITÉCNICO GRANCOLOMBIANO 5
INFORMACIÓN TÉCNICA

Módulo: Paradigmas de Programación


Unidad 1: Paradigmas de Programación
Escenario 1: Introducción a los Paradigmas
de Programación

Autor: Diego Satoba

Asesor Pedagógico: Manuel Fernando Guevara


Diseñador Gráfico: Yinet Rodrı́guez
Asistente: Angie Laiton

Este material pertenece al Politécnico Grancolombiano.


Por ende, es de uso exclusivo de las Instituciones
adscritas a la Red Ilumno. Prohibida su reproducción
total o parcial.

POLITÉCNICO GRANCOLOMBIANO 6

También podría gustarte