Skip to content

Latest commit

 

History

History

01-overview

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
type duration
read
5min

¿Qué son los paradigmas de programación?

Paradigmas - intro

Los Paradigmas de Programación (Programming Paradigms) son formas diferentes de pensar en cómo se organiza un programa basado en una serie de principios, los cuales resultan en estilos muy distintos y lenguajes muy diversos.

Consideremos la siguiente función:

function sum(array) {
  let total = 0;
  for (let i = 0; i < array.length; i++) {
    total += array[i];
  }
  return total;
}

La función sum(array) recibe un array de números y retorna la suma de todos los elementos del array. Para llevar a cabo la suma, usamos la variable total, la cual vamos a ir actualizando (mutando) mientras vamos recorriendo el arreglo con un bucle (for en este caso). Estas características son típicas del estilo imperativo.

Ahora, podemos implementar exactamente la misma funcionalidad usando un enfoque completamente distinto.

function sum(array) {
  if (!array.length) {
    return 0;
  }
  return array[0] + sum(array.slice(1));
};

En esta segunda implementación, la función sum(array) sigue teniendo la misma interfaz (recibe los mismos argumentos y retorna lo mismo), pero claramente podemos ver que la lógica se expresa de una manera muy diferente. En la versión recursiva hemos reemplazado el bucle for por recursión, y además podemos ver que no hay asignación ni mutación de variables, el "cómputo" se hace por aplicación de argumentos a funciones. Este tipo de características son propias del paradigma funcional.


PRO TIP:

Haciendo uso de ES2015 podemos refactorizar la versión funcional de sum de esta manera:

const sum = array => !array.length ? 0 : array[0] + sum(array.slice(1));

Cuando hablamos de Paradigmas de Programación inevitablemente tenemos que hablar de lenguajes de programación. Algunos lenguajes, como JavaScript, son multi-paradigma, lo que quiere decir que nos permiten programar en diferentes paradigmas, mientras que otros se enfocan específicamente en uno.

JavaScript es un leguage híbrido, por decirlo de alguna forma, y contiene elementos propios de lenguajes funcionales (por ejemplo funciones como objetos de primera clase, lambdas, ...) pero no estamos limitados al paradigma funcional. JavaScript nos permite programar de forma funcional, orientado a objetos, orientado a eventos, por procedimientos, ...

También veremos que los "paradigmas" son "estilos" de programación que no son necesariamente exclusivos. De hecho, algunos son complementarios o evoluciones de paradigmas más antiguos o con un nivel de abstracción más bajo. Así, la programación procedural y orientada a objetos, por ejemplo, ambas son imperativas, ya que comparten una raíz común.


Referencias

Blog posts:

Videos:

Otros recursos: