Ir al contenido principal

✅ Fundamentos de Programación: Paradigmas de Programación

Bien el día de hoy hablaremos de un concepto muy importante y estoy hablando de los paradigmas de programación.

Antes que nada es necesario definir que es un paradigma.

Paradigma: Puede definirse como sinónimo de ejemplo o para hacer de referencia a algo que sirve como modelo base de algo.

Un paradigma de programación es por tanto un modelo o forma de programar que se expone con el motivo de ser adoptado y usado a la hora de programar. Es un modelo básico de diseño y desarrollo de programas, que permite producir software con un conjunto de normas específicas, tales como: estructura modular, fuerte cohesión, alta rentabilidad, etc. es básicamente la manera en que se deben estructurar y organizar las tareas que debe llevar a cabo un programa.

En pocas palabras es una base sobre como debes escribir tu código.

Esta claro que todos tenemos nuestras formas únicas de hacer las cosas, sin embargo todos terminamos copiando o imitando a otros y agregando nuestro toque para hacerlo nuestro. Esto lo menciono por un conocido mio al cual le di las bases para programar, a medida que lo dejaba por su cuenta veía como este poco a poco programaba en un estilo similar al mio, es por eso que lo menciono.

Con lo anterior, los paradigmas de programación son modelos, o formas en las que se sugiere programar para la resolución de problemas en el arte de la programación, básicamente sirven como una especie de estándar y no lo digo yo lo dice una de sus definiciones en la red:

"Paradigma de programación es una propuesta tecnológica que es adoptada por una Comunidad de Programadores cuyo núcleo central es incuestionable en cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados."



Bien como podemos ver en la imagen los paradigmas de programación pueden dividirse básicamente en 2 rubros:

Imperativa: La cual corresponde a el tipo de programación mas usual. Describe cómo debe realizarse el cálculo, no el porqué. En otras palabras es aquel tipo de programación donde se debe detallar paso a paso toda instrucción escrita desde una simple mensaje hasta un calculo matemático para obtener un valor. La programación de este tipo tiende a modificar el valor de las variables y los estados de memoria del programa. Este tipo de paradigma puede dividirse en:
  • Paradigma Estructurado: O secuencial según yo lo conocí en su tiempo, es el mas usado al enseñar a principiantes. En este el programa se lee secuencialmente, una instrucción tras otra según sea el caso, como si estuvieras leyendo un instructivo normal para digamos programar un control remoto universal. Este tiene una serie de reglas:
  1. El inicio del archivo es el inicio de la programación y el final del archivo es el final de la programación; en otras palabras es secuencial.
  2. Se pueden utilizar instrucciones de control como las condicionales (if)
  3. Se pueden utilizar instrucciones de iteración (Bucles)
  • Paradigma Procedimental o Funcional: consiste en escribir una serie de instrucciones que serán requeridas repetidamente en el programa y englobarlas todas en un procedimiento o función y llamarlo cada vez que tenga que ejecutarse. En otras palabras es escribir un código y representarlo por una palabra clave, la cual al ser escrita o invocada en alguna parte del código ejecutara esas mismas instrucciones una y otra vez según la mandemos llamar.
  • Paradigma Orientada a Objetos:similar a la programación funcional pero algo mas compleja (igual no te espantes), aquí el comportamiento del programa es llevado a cabo por objetos, entidades que representan elementos del problema a resolver y tienen atributos y comportamiento.
Declarativo: Describe que se debe calcular, sin explicitar el cómo. Los lenguajes de programación que aplican este paradigma están llenos de funciones y operaciones recursivas puramente matemáticas que se ejecutan para resolver una tarea.

//Funcion escrita en Earling lenguaje declarativo para calcular la serie fibonacci
-module(fibonacci).
-export([fibonacci/1]).

-spec fibonacci(non_neg_integer()) -> non_neg_integer().
fibonacci(0) -> 0;
fibonacci(1) -> 1;
fibonacci(N) -> fibonacci(N - 1) + fibonacci(N - 2).
Este a su vez se divide en:
  • Programación Lógica: El problema se modela con enunciados de lógica de primer orden. En pocas palabras esta conformado por puras comparaciones logicas.
  • Paradigma Funcional: Es el mismo que en programacion imperativa con la única diferencia que un lenguaje basado en este es puramente manejado haciendo uso de funciones, las cuales tienen la ventaja en este caso de ser inmutables en resultado. Implica crear un programa como un conjunto de funciones que se deben ejecutar. Es necesario definir con cuidado la entrada a cada función y qué devuelve cada función. Te recomiendo leer mis fuentes para que entiendas un poco mas la diferencia.
Otros son de aparición relativamente reciente y no forman parte del grupo principal:

Dirigido por eventos. El flujo del programa está determinado por sucesos externos (por ejemplo, una acción del usuario).
Orientado a aspectos. Apunta a dividir el programa en módulos independientes, cada uno con un comportamiento bien definido.

Cada paradigma es ideal para la resolución de un conjunto de problemas particular, por lo que no puede decirse que uno sea necesariamente mejor que otro. Es mas existen varios lenguajes de programación que son conocidos como multiparadigma ya que permiten la implementación y conbinación de varias de estas estructuras en el desarrollo de programas.
Y así mis amigos, la programación engloba muchas cosas mas que solo tipear código sin sentido.




Fuentes:
https://es.wikipedia.org/wiki/Paradigma
https://www.ecured.cu/Paradigmas_de_programaci%C3%B3n
http://www.4rsoluciones.com/blog/que-son-los-paradigmas-de-programacion-2/
https://www.monografias.com/trabajos107/paradigmas-programacion/paradigmas-programacion.shtml
https://www.infor.uva.es/~cvaca/asigs/docpar/intro.pdf
https://ed.team/blog/paradigmas-de-programacion
https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

Diferencias entre Paradigma funcional en los paradigmas Imperativo y Declarativo:
https://medium.com/@Loopa/paradigmas-de-programaci%C3%B3n-programaci%C3%B3n-imperativa-y-programaci%C3%B3n-declarativa-4c4a4182fd87
https://es.wikipedia.org/wiki/Programaci%C3%B3n_funcional
https://docs.microsoft.com/es-es/previous-versions/bb669144(v=vs.120)

Comentarios