Paradigmas de Programación - RoySolano/fp-utpl-18-clases GitHub Wiki

Imagen de código binario

Imagen de Código Binario


*Definición de paradigma de programación

Empecemos con unas definiciones de lo que es un paradigma: ejemplo, modelo a seguir o marco de referencia que están definidos por un conjunto de creencias. Ahora, llevando este concepto a la programación, un paradigma de programación es un ejemplo de cómo programar, bueno, eso en términos sencillos. Con un poco más de vocabulario podemos manifestar que esta clase de paradigmas son una propuesta, adoptada por la comunidad de desarrolladores, que provee de visión y métodos específicos que guían al individuo, al momento de construir su programa o brindar soluciones a problemas delimitados en el software.

Listo. Con las definiciones claras, pasemos a enlistar los paradigmas de la programación:

*Programación Imperativa

Describe la programación como una secuencia de instrucciones o comandos que alteran el estado del programa. La memoria principal es la encargada de almacenar datos que son referenciados mediante variables. También se definen procedimientos, tipos de datos y los pasos de ejecución del proceso. Ejemplo de lenguajes que utilizan este paradigma: Pascal, Ada, Cobol, C. Modula-2, Basic y Fortran.


*Programación Estructurada

Puede ser considerada como la primera tendencia en la programación de la era moderna. Esta programación se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre sí. Es caracterizado por: mantener orden en las líneas de código, ser de comprensión sencilla con operaciones sencillas, etc. Además, la programación se controla con secuencia, selección e iteración. Como ventajas, podemos decir: es de fácil entendimiento, reduce los tiempos de prueba del programa y que todas sus instrucciones pueden ser ejecutables en cualquier momento.


*Programación Orientada a objetos

Caracterizado por su manejo de información basado en tres conceptos: clase, objeto y herencia. ¿Qué significan estos conceptos? Primero, clase es el tipo de dato con determinadas propiedades y funcionalidades, por ejemplo: clase “animal”. Segundo, objeto es una estructura de datos, perteneciente a una clase, que abarca propiedades y métodos y es capaz de interactuar con otros objetos. Tercero, herencia es la propiedad que posibilita construir nuevas clases a partir de clases ya existentes, por ejemplo: la clase “animal” podría provenir de clase “ser vivo”. Bien, estos conceptos son los que llevan a cabo el comportamiento de nuestro programa basado en esta programación.

No está demás mencionar que, como ventaja principal, la programación Orientada a Objetos tiene la reutilización de códigos y su facilidad para pensar soluciones a determinados problemas.


*Programación Declarativa

Contraponiéndose a la programación imperativa, la programación declarativa no se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso), sino que describe (declara) cómo es algo. En otras palabras, se enfoca en describir las propiedades de la solución buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solución, ya que la alcanza a través de mecanismos internos de control.


*Programación Funcional

Basado en el cálculo lambda, este paradigma comprende programas que se estructuran componiendo expresiones que serán evaluadas como funciones, es decir, como implementaciones de comportamiento que reciben un conjunto de datos de entrada y devuelven un valor de salida. Tiene como principios la conversión y la reducción. Permite resolver ciertos problemas de forma elegante, pues no usa ciclos repetitivos como For, While o Do While. Cabe recalcar que en la programación funcional las variables son inmutables. Ejemplo de lenguajes que utilizan este paradigma: Lisp, Scheme, Haskell, Scala y Erlang.


*Programación Lógica

El problema se modela con enunciados de lógica de primer orden para responder interrogantes planteadas al sistema, a través de la inferencia lógica, y así resolver los problemas. Ejemplo de lenguajes que utilizan este paradigma: Prolog, Mercury y Oz.


*Programación Reactiva

Basada en la teoría de grafos. Consiste en la especificación del flujo de datos entre operaciones. Las variables se encuentran ligadas a las operaciones que proporcionan sus valores. Un cambio de valor de una variable se propaga a todas las operaciones en que participa. Un dato, las hojas de cálculo se basan en este modelo.


*Programación Dinámica

La Programación Dinámica resuelve un problema global, descomponiéndolo en etapas que se enlazan mediante cálculos recursivos de manera que se genere una relación óptima factible a todo el problema.


*Programación Dinámica por eventos

El flujo del programa está determinado por sucesos externos (por ejemplo, una acción del usuario).


*Programación Orientada a Aspectos

Apunta a dividir el programa en módulos independientes, cada uno con un comportamiento bien definido.


*Programación de Procedimientos

La característica fundamental de este paradigma es la secuencia computacional realizada etapa a etapa para resolver el problema. Su mayor dificultad reside en determinar si el valor computado es una solución correcta del problema, por lo que se han desarrollado multitud de técnicas de depuración y verificación para probar la corrección de los problemas desarrollados basándose en este tipo de paradigmas.

Finalmente, existen otros paradigmas como: Programación Específico del dominio, Programación Restricciones, etc.


Fuentes de consulta

4R Soluciones. (22 de Mayo de 2013). 4R Productora Digital+Software Factory. Obtenido de 4R Productora Digital+Software Factory: http://www.4rsoluciones.com/blog/que-son-los-paradigmas-de-programacion-2/

Bedoya, J. C., & Barrera, M. (11 de Octubre de 2005). UAEM redalyc. Obtenido de UAEM redalyc: http://www.redalyc.org/html/849/84911707011/

Campos, O. (26 de Septiembre de 2011). GenBeta. Obtenido de GenBeta: https://www.genbetadev.com/paradigmas-de-programacion/diferencias-entre-paradigmas-de-programacion

Delgado, E. (19 de Octubre de 2017). ¿Qué es un paradigma? Importancia de los paradigmas.

Departamento de Ciencia de la Computación e Inteligencia Artificial. (9 de Febrero de 2011). Universidad de Alicante. Obtenido de Universidad de Alicante: http://www.dccia.ua.es/dccia/inf/asignaturas/LPP/2010-2011/clases-cristina/s2.pdf

Departamento de Ingeniería en Sistemas de Información. (25 de Junio de 2009). Laboratorio Sistemas. Universidad Tecnológica Nacional-Facultad Regional Córdoba. Obtenido de Laboratorio Sistemas. Universidad Tecnológica Nacional-Facultad Regional Córdoba: https://labsys.frc.utn.edu.ar/ppr-2009/Unidad%20I%20-%20POO%20Avanzada/Apunte/Unidad%20I%20-%20POO%20Avanzada.pdf

Joven Club de Computación y Electrónica. (11 de Abril de 2018). EcuRed. Obtenido de EcuRed: https://www.ecured.cu/Paradigmas_de_programaci%C3%B3n

Medrano, D. L. (31 de Julio de 2013). ¿Qué es un paradigma y cómo nace?

Rodríguez, J., Santamaría, L., Rabasa, A., & Oscar, M. (Septiembre de 26 de 2010). Introducción a la Programación. Teoría y Práctica. España: Club Universitario. Universidad Miguel Hernández. Obtenido de Amazon S3.

Universidad de Murcia. (10 de Mayo de 2007). Universidad de Murcia. Obtenido de Universidad de Murcia.

Vaca, C. (11 de Febrero de 2011). Paradigmas de Programación. Departamento de Informática de la Universidad de Valladolid.