lenguajes de programación

Programar javascript: formas de pensar

En esta ocasión hablaremos de cuatro formas de pensar para programar Javascript, con los enfoques o paradigmas de programación iterativo, recursivo, funcional y declarativo. Cada uno de ellos es tan distinto del otro que se les considera como paradigmas de programación separados, aunque esto no quiere decir que un experto no pueda usarlos unos con otros. Siempre es bueno conocer distintas formas de pensar y de resolver problemas.

Definición del problema

Para mostrar las distintas formas de pensar, plantearemos el siguiente problema:

Dado un número n que es un entero positivo obtener todas las potencias de 2 desde el cero hasta el valor n y enlistarlas en un vector de resultados.

Programar Javascript con Pensamiento Iterativo

Este es el enfoque tradicional para programar en Javascript. Para el enfoque iterativo deberemos de desglosar el problema para realizarlo paso por paso. Las personas que resuelven el problema mediante este paradigma normalmente primero resuelven el problema con un planteamiento lógico-matemático y luego lo codifican. Este tipo de código es demasiado explícito, pero puede modelarse fácilmente con diagramas de flujo. Conceptos que puedes incluir estos programas de manera implícita podrían ser indices, máquinas de estados, condicionales, repetitivas, etc.

Pseudocódigo

  1. Definimos que deberemos de regresar un arreglo.
  2. Para cada número i con valores que van desde 0 hasta n agregamos al arreglo 2 elevado a la i-ésima potencia
  3. Regresamos el arreglo con los valores

Implementación en código

function powersOfTwo(n){
  var result = [];
  for (var i = 0; i <= n; i  ) {
    result.push(Math.pow(2, i));
  }
  return result;
}

Programar Javascript con Pensamiento Recursivo

El enfoque recursivo es un enfoque que se centra en una mentalidad de que a veces es más fácil comprender una tarea repetitiva con mínimas variaciones que desglosarla en muchos pasos. Este tipo de programas suele ser bastante compacto pero muy poderoso si se tiene mucha RAM.

Este enfoque requiere un enfoque puramente algorítmico, las matemáticas usadas tienden a ser minimalistas y se basan mucho en el principio de inducción de las matemáticas discretas. Conceptos que podrían venir implícitos en este tipo de programas podrían ser, condición de paro, recursividad de dos pasos, inducción matemática, subrutinas, cortes, etc.

Pseudocódigo

  1. Para el caso más sencillo si n vale cero deberemos regresar el valor 1 dentro de un arreglo.
  2. En los demás casos, regresaremos el valor de la potencia de 2 a la n al final de un arreglo que nos cree la llamada a este procedimiento realizado para el valor n quitándole uno.

Implementación

function powersOfTwo(n){
  if(n==0){
    return [1];
  }else{
    return powersOfTwo(n-1).concat(Math.pow(2,n));
  }
}

Programar Javascript con Pensamiento Funcional

Este enfoque para programar en Javascript surge principalmente en EcmasCript 6 (¡Y lo aman todos los hipsters del código!). Para el enfoque funcional se necesita una mentalidad estrictamente matemática, y un razonamiento causal. Es un enfoque cada vez menos común debido a que se necesita una muy amplia capacidad de abstracción. Conceptos típicamente funcionales que normalmente vienen implícitos en este tipo de programas podrían ser generadores, iteradores, lambdas, etc.

Pseudocódigo

  1. Regresaremos un arreglo de tamaño n 1 con los valores individuales creados por la siguiente función
  2. Cada elemento e con indice i nos regresará un valor de 2 elevado a la potencia i

Implementación

powersOfTwo = n => [...Array(n - 1)].map((e, i) => Math.pow(2, i));

Programar Javascript con Pensamiento Declarativo

Este es el nuevo enfoque que se busca en la nueva versión EcmaScript 7 para programar en Javascript. Para este enfoque se necesita saber expresar que es lo que se quiere sin decir como se quiere que se haga. Este enfoque contiene al belleza de que es fácilmente entendible para quien lo lee, pero su implementación puede ocultar detalles como procesamiento asíncrono y optimizaciones. Algunos conceptos que podrían venir implícitos en este tipo de programas podrían ser backtracking, unificación, evaluación perezosa, modelo de datos, etc.

Pseudocódigo

  1. Regresaremos un arreglo a partir de los siguientes elementos: función 2 elevado al indice de un elemento y un arreglo de tamaño n-1.

Implementación

function powersOfTwo(n) {
  return Array.from({length: n-1}, (e, i) => Math.pow(2,i));
}

javatlacati

Entradas recientes

Cursos de Código Facilito

Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual…

2 meses hace

Cursos de LinkedIn Learning

Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma…

4 meses hace

Mockito: Snippets de código

Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad.…

4 meses hace

Expresiones regulares en Java: analizar un String

En este tutorial aprenderá a usar expresiones regulares en Java de manera práctica para contar…

4 meses hace

Preguntas para entrevista de programación Java full-stack

¿Entrevista de programación Java fullstack? No te preocupes, te tengo un compendio de preguntas de…

5 meses hace

SoftSkills: cursos de Udemy

Te recomiendo algunos cursos de Udemy para mejorar tus softskills y así mejorar en tu…

5 meses hace