Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Programación Declarativa

22/23
Recursos

La programación imperativa consiste en explicar paso a paso cómo conseguir un resultado, en cambio, la programación declarativa se centra en qué hay que hacer.

Podemos utilizar programación declarativa trabajando con funciones especiales de JavaScript. Por ejemplo, en vez de utilizar un ciclo for, podemos utilizar la función .map para ejecutar alguna función en cada elemento de una array, el resultado es el mismo pero, cuando utilizamos métodos declarativos es mucho más fácil de leer y entender nuestro código a primera vista.

Aportes 19

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Estos conceptos también se pueden aplicar a la estructura de carpetas de nuestras aplicaciones:

// Traditional MVC:
- Controllers/{auth, blog, search, ...}
- Models/{...}
- Views/{...}

// Qué en vez de cómo:
- Auth/{model,controller,view}
- Blog/{...}
- Pay/{...}
- Search/{...}
...

Otro muy buen ejemplo de programación declarativa es el método .filter de JavaScript (ni siquiera debo explicar qué es lo que hace porque es más que claro) 😛:

// Imperative
const arr = [1, 2, 3, 4]
const arr2 = []

for (let i = 0; i < arr.length; i++) {
        if (arr[i] % 2) {
                arr2.push(arr[i])
        }
}

console.log(arr2) // [1, 3]

// Declarative
const numbers = [1, 2, 3, 4]
const oddNumbers = numbers.filter(number => number % 2)

console.log(oddNumbers) // [1, 3]

Avanzando con el proyecto, agregué la opción de modificar los valores la lista de items.

Todo consejo y PR es bienvenido:

ñ.ñ/

Entonces, según el concepto simplificado de lo que es la Programación Declarativa y en particular la Programación Funcional, ¿sería posible concluir que es contra-intuitiva en relación a los enfoques de algoritmos más tradicionales como los diagramas de flujo y el pseudocódigo de la programación estructurada?

Y, si este es el paradigma de la programación ideal, ¿lo que estamos aprendiendo en la mayoría de las escuelas tradicionales será tarde o temprano completamente inútil? 🤔 Quizás solo sirva un poco para incentivar la formación del pensamiento lógico / algorítmico y nada más …

¿opiniones?

esta clase se llama. La paciencia es una Virtud

// IF imperativo
let var // --- genera un estado mutable ... no funcional
if( condicion ){
  var = hacerAlgo()
} else {
  var = hacerOtraCosa()
}

// IF declarativo (ternario) - Programación Funcional
const var = condicion ? hacerAlgo() : hacerOtraCosa

La manera declarativa en la Programación Funcional es más corta, más clara, más mantenible y no requiere de un estado mutable

Como comenta el profe en esta clase, la programación declarativa se trata más de describir qué se evalua vs el cómo se evalúa(imperativa)

Sin embargo creo que los ejemplos que pone el profe se refieren a un estilo de programar que da preferencia a las expressions que a los statements, pues los statements pueden crear efectos laterales y mutabilidad.
¿Qué opinan?

Soy yo o el código que implementó el profesor está bastante confuso, complejo y difícil de mantener. ):

Al inicio del curso se hablo de las funciones puras y que no dependen de variables externas, en este proyecto veo exactamente lo contrario, veo funciones que dependen por ejemplo de variables que contienen htmlelements…

Alguno le ha dado un vistazo a los Pipeline Operators ? Opinan a que nos ayudaría a tener un código mas declarativo y atendible ? (Pipeline Operators | MDN )

😃

Lo hermoso de JS es que es multiparadigma y así podemos usar los mejor de cada mundo, ya sea a nuestro gusto o cuando trabajemos con un equipo.
Team JS.

El paradigma declarativo trata de explicar que hay que hacer en lugar de como hacerlo!!!

Esta clase me pareció muy interesante.

Funciones imperativas:

 const attrsToString = (obj = {}) => {
  const keys = Object.keys(obj)
  const attrs = []

  for (let i = 0; i < keys.length; i++) {
    let attr = keys[i] 
    attrs.push(`${attr}="${obj[attr]}"`)
  }

  const string = attrs.join(' ')

  return string

Declarativa:

const attrsToString = (obj = {}) => Object.keys(obj).map(attr => `${attr}="${obj[attr]}"`).join(' ')

Imperativa

const tag = t => {
  if (typeof t === 'string') {
    tagAtrrs({tag: t})
  } else {
    tagAtrrs(t)
  }
}

Declarativa

const tag = t => typeof t === 'string' ? tagAtrrs({tag: t}) : tagAtrrs(t)

En coste de performance, declarativa no es más costosa que la imperativa?

sin duda alguna, es el profesor más malo que he conocido en los cursos de platzi.

Comprendo, esto es algo que aprendí hace tiempo (No sabía que se llamaba programación funcional), pero prácticamente es dividir en funciones que digan qué hacer en lugar de escribir el cómo hacerlo directamente