Sei sulla pagina 1di 8

Paradigma de

programación: un
estilo o forma de
desarrollar software

Paradigmas de
Programación

1
Paradigmas de programación
En esta lectura, veremos el concepto de paradigma de programación y
cuáles son los diferentes tipos de paradigmas más conocidos.

¿Qué es un paradigma de programación?


Sabemos que, de manera amplia, el concepto de paradigma se corresponde
con un marco que va a servir como modelo o ejemplo para que sea seguido
por aquellos que se encuentren inmersos dentro de ese paradigma, en una
situación determinada. Es decir, incluye las directrices que establecen
límites y que determinan cómo una persona debe y puede actuar dentro de
dichos límites. Entonces, para el caso de las ciencias informáticas, podemos
pensar a paradigma de programación como una manera de crear un sistema
de software. Por lo tanto distintos paradigmas de programación nos proveen
de diferentes enfoques para lograr la solución de un problema de software
(Spigariol, 2005).

Paradigma de programación: es un estilo o “forma” de desarrollar


software.

Clasificación de los paradigmas programación

A continuación, daremos una lista amplia (pero no única) de los diferentes


estilos o formas (paradigmas) de desarrollar un programa o software
informático. Luego, se presentará un breve ejemplo de estos y se hará
hincapié en el paradigma orientado a objetos.

 Paradigma imperativo.
 Paradigma declarativo.
 Paradigma estructurado.
 Paradigma orientado a objetos.
 Paradigma funcional.
 Paradigma lógico.

2
Paradigma imperativo
Este paradigma se encuentra dentro del grupo de los paradigmas
procedimentales (Spigariol, 2005).
Cuando se escribe un programa de computador utilizando este tipo de
paradigma, se describe el cómo realizar un cálculo y no el porqué de
realizarlo. Es decir que se le indica al computador, por medio de sentencias
repetitivas de programa, como resolver paso a paso un problema (Spigariol,
2005).
Por ejemplo, el hardware de muchos computadores es imperativo. Esto se
debe a que está basado en la máquina de Turing. Tomando este concepto,
podemos decir que, si se escribe un programa con un lenguaje de alto nivel,
luego tendrá que ser transformado a código máquina imperativo para poder
ejecutarse en un computador con hardware imperativo.

Figura 1: Máquina de Turing definida sobre el alfabeto

Fuente: Martínez, 11 de julio de 2010, https://goo.gl/zU4Jje

Paradigma declarativo

En este tipo de paradigma cuando se desarrolla un programa lo que se hace


es describir la solución al problema, conjuntamente con afirmaciones,
restricciones y ecuaciones, y luego algún mecanismo interno de control se
encarga de evaluar todo lo anterior para alcanzar el objetivo buscado por el
programa. En este paradigma no es necesario realizar instrucciones paso a
paso que indiquen como llegar a la solución buscada (Spigariol, 2005).
Un ejemplo clásico de este tipo de paradigmas es el lenguaje SQL (structured
query language), que permite el acceso y la manipulación de una típica base

3
de datos relacional. Si bien SQL es un lenguaje declarativo, se debe tener en
cuenta que también tiene una parte de lenguaje procesal.

Paradigma estructurado

Este paradigma es similar al imperativo pero en la programación


estructurada, no se admite la utilización de la sentencia goto, ya que esta
produce (al utilizarlo) un código spaghetti. Al respecto, E. Dijkstra (1968)
enunció lo siguiente: “Goto statement considered harmful” (pp. 147-148),
es decir, el uso y abuso de secuencias go to crea un código difícil de entender
y de mantener; para evitarlo, se deben emplear únicamente estructuras de
control privilegiadas como: if, for, while, switch y do while.

Figura 2: Código spaghetti

Fuente: [Imagen sin título sobre código spaghetti]. (s. f.). Recuperado de https://goo.gl/ehz6N8

Paradigma orientado a objetos

Este tipo de paradigma pertenece al tipo de paradigma procedimental


(Spigariol, 2005).
Este paradigma se concentra en la realización de abstracciones del mundo
real para luego representarlas como clases en un programa. Cada clase
posee una descripción de sus atributos por medio de un tipo, nombre y
visibilidad, y un conjunto operaciones, llamadas métodos, que permiten
realizar acciones sobre sus atributos. Una clase, además y por lo general,
posee relaciones con otras clases. Por otro lado, es posible crear instancias
de dichas clases y estas instancias son los objetos en sí mismos. Cuando se

4
aplica este tipo de paradigma lo que hace realmente un programador es
instanciar objetos y comunicarlos a través del paso de mensajes al ejecutar
o llamar a los métodos de cada objeto (Spigariol, 2005).
Los lenguajes más conocidos que implementan este paradigma son:
Smalltalk, C++, Java, VB.NET, C#, entre otros.

Los conceptos fundamentales de este paradigma son los siguientes:


 Clase: son las abstracciones del mundo real que realiza el ingeniero o el
programador al diseñar un programa para poder encarar la solución de
un problema. Una clase es un tipo especializado de dato definido por el
ingeniero o el programador. Cada clase posee atributos y métodos que
permiten operar sobre esos atributos. También se suele denominar
instanciación al proceso de creación de objetos a partir de una clase
(Booch, 1996).
 Herencia: como su nombre lo indica es la capacidad de una clase, llamada
clase hija o subclase, de heredar los atributos y métodos de otra clase
comúnmente llamada superclase o clase padre (Booch, 1996).
 Objeto: es el resultado que se obtiene al utilizar el constructor de una
clase determinada o, en otras palabras, es la instancia de una clase
(Booch, 1996).
 Método: son las funciones y responsabilidades que un objeto posee. La
llamada o ejecución de un método de un objeto puede provocar un
cambio en su estado interno o bien, desencadenar un evento en otro
objeto con el paso de mensaje a este otro objeto al llamar a uno de sus
métodos (Booch, 1996).
 Evento: puede ser entendido como el paso de mensaje de un objeto a
otro (Booch, 1996).
 Atributos: son los rasgos o características que describen una clase
(Booch, 1996).
 Mensaje: es la comunicación de un objeto a otro que ordena la ejecución
de uno de sus métodos (Booch, 1996).

Las características fundamentales de este paradigma son las siguientes:


 Abstracción: son las características esenciales de un objeto del mundo
real. Cuando se está realizando una abstracción de algo, lo que se está
haciendo, realmente, es quedarse con los conceptos fundamentales o
principales de ese algo y dejando de lado los menos relevantes (Booch,
1996).
 Encapsulamiento: es el proceso mediante el cual se agrupan todos los
conceptos relacionados en una misma entidad (Booch, 1996).
 Modularidad: es el proceso de dividir un programa en partes más
pequeñas llamadas módulos (Booch, 1996).
 Ocultación: se refiere a que solo se puede acceder a modificar el estado
interno de un objeto a través de sus métodos. Para ello, cada objeto

5
expone una interfaz que determina cómo los demás objetos pueden
interactuar con él (Booch, 1996).
 Polimorfismo: es la capacidad en la que objetos diferentes, y
relacionados por la herencia o una interfaz, reaccionan de manera
diferente ante la llamada de un método con el mismo nombre (Booch,
1996).
 Herencia: mediante la herencia logramos que una clase pueda ser
definida a partir de otra ya existente. El polimorfismo y el
encapsulamiento se logran por medio de la herencia (Booch, 1996).

Figura 3: Caso de herencia

Fuente: elaboración propia.

Como puede observarse en la Figura 3, las clases concretas DVD, DC y BluRay


heredan de la clase abstracta Disco la propiedad capas y el comportamiento
o método “leer()”.

Paradigma funcional

Por medio de este paradigma podremos construir un programa utilizando


evaluación de funciones matemáticas y pertenece al tipo de tipo de
paradigma declarativo (Spigariol, 2005).
Alguno de los lenguajes que usan este paradigma son: Scheme, Erlang, Rust,
Objective Caml, Scala, F#, Haskell y Java desde su versión 8. Además los
lenguajes de base de datos como SQL utilizan algunos conceptos de la
programación funcional sobre todo al realizar funciones de agregación y
calculo (Spigariol, 2005).

6
Paradigma lógico
Este es un tipo de paradigma declarativo (Spigariol, 2005).
Este paradigma aplica reglas lógicas para poder inferir conclusiones
partiendo de premisas en forma de datos. Un programa busca un objetivo o
Goal dentro de las declaraciones construidas, de manera que dicho
programa puede ser capaz de responder o inferir una solución por medio de
la deducción a pesar de no tener dicha solución en su base de conocimientos
(Spigariol, 2005).

7
Referencias
Booch, G. (1996). Análisis y diseño orientado a objetos, con aplicaciones.
Estados Unidos: Addison-Wesley.

Dikstra, E. W. (1968). Communications of the ACM, Vol. 11, No. 3. Estados


Unidos: Association for Computing Machinery, Inc.

CCM Benchmark Group. (Octubre de 2016). Patrones de diseño [publicación


en línea]. Recuperado de http://es.ccm.net/contents/224-patrones-de-
diseno

Martínez, A. (11 de julio de 2010). Diagrama Máquina Turing [imagen].


Recuperada de
https://upload.wikimedia.org/wikipedia/commons/e/ea/Diagrama_M%C3
%A1quina_Turing.JPG

Spigariol, L. (2005). Fundamentos teóricos de los Paradigmas de


Programación [publicación en línea]. Recuperado de https://edumin-pdp-
fb6.wikispaces.com/file/view/NT5-Programacion+logica-1.pdf

Tymoschuk, J. (2000). Apunte de la cátedra de Paradigmas de Programación.


Córdoba: Centro de Estudiantes Tecnológicos, Universidad Tecnológica
Nacional – Facultad Regional Córdoba.

Potrebbero piacerti anche