Programación funcional: qué es

2/23

Lectura

¡Un saludo, Platzinauta!👋🏻

¡Ups! De momento, esta clase no está disponible en nuestra plataforma, pero sí la tenemos en YouTube.

Para no interrumpir tu aprendizaje te dejamos el video y link para que puedas verla en YouTube.

Link a YouTube

Pronto estará disponible en Platzi como el resto de clases.

Gracias por tu comprensión y nunca pares de aprender💚

Aportes 29

Preguntas 2

Ordenar por:

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

Notas de la clase:

  • 🌄 La programación funcional es una nueva forma de pensar y entender nuestro código.
  • 👨‍👩‍👧‍👦 El objetivo es crear código más conciso, legible y fácil de probar.
  • 🔀 Existen otros paradigmas como la Programación Orientada a Objetos (POO) y la Programación por Procedimientos.
  • 🤓 Buscamos resolver el “qué hay que hacer” en vez del “cómo lo debemos hacer” (código declarativo).

POO 🆚 Programación Funcional:

// POO
class Person {
        constructor(name, age) {
                this.name = name
                this.age = age
        }
        getOld() {
                this.age += 1
        }
}

let person = new Person('JuanDC', 15)
person.getOld() // 16

// Functional
const juandc = {
        name: 'JuanDC',
        age: 15
}

const getOld = person => Object.assign(
    {},
    person,
    { age: person.age + 1}
)
getOld(juandc) // 16

P. Imperativa 🆚 P. Declarativa

// Imperative
let array = [1,2,3]
let array2 = []

for (let i = 0; i<array.length;i++) {
        array2.push(array[i]*2) // [2,4,6]
}

// Declarative
let array = [1,2,3]
let array2 = array.map(item => item*2) // [2,4,6]

🤔 ¿Qué es la programación funcional?

<h4>Ideas/conceptos claves</h4>

Paradigma de programación.- Es una forma distinta de ver el código cuando estamos creando aplicaciones. Creando un código mas conciso, legible y mas fácil de testear

<h4>Apuntes</h4>
  • Es un paradigma de programación
    • Existen diferentes como ser la programación orientada a objetos o la procedural
<h3>Programación Funcional vs P.O.O.</h3>

P.O.O

  • Se crea una clase ⇒ primera letra en mayuscula
    • Dentro el constructor que inicializa las propiedades iniciales de nuestro objeto
    • Se maneja generalmente getters y setters dentro de ellas
  • Luego creamos variables usando la clase
  • Para modificar estos objetos se usan los getters y setters mencionados anteriormente

Funcional

  • No se necesita ninguna clase solo se declara el objeto
  • Si deseamos modificar estos objetos creamos funciones que manipulen las propiedades de los objetos
// POO
class Person {
	constructor(name, age) {
	  this.name = name
    this.age = age
  }
  getOld() {
	  this.age += 1
  }
}

let person = new Person('Fer', 18)
person.getOld() // 19

// Funcional
const fer = {
	name: 'Fernando',
  age: 18
}

const getOld = person => Object.assign(
  {},
	person,
  { age: person.age + 1}
)

getOld(fer) // 19
  • Programación funcional Es de manera declarativa ⇒ Enfocarte en que hay que hacer en vez de como hacerlo
<h3>Imperativo vs Declarativo</h3>

Imperativo

  • Cada parte es lo que debemos hacer, en este caso en el ciclo for
let array = [1,2,3]
let array2 = []

for (let i = 0; i< array.length; i++) {
  array2.push(array[i]*2) // [2,4,6]
}

Declarativo

  • El mismo arreglo usamos el método map pero en este caso el map es declarativo por que no estamos siendo específicos que hacer en cada iteración como en el ciclo for
let array = [1,2,3]
let array2 = array.map(item => item*2) // [2,4,6]

RESUMEN: La programación funcional permite escribir código de manera concisa, legible y fácil de testear.

¿por qué el titulo dice “por Bedu”?

Programación funcional (pros):

Menos código
Más legible
Más fácil de mantener y testear

Para qué sirve la Programación Funcional

Programación funcional significa que cuando estés desarrollando tu código tienes que enfocarte en que hay que hacer en lugar de como hay que harcelo

Gran explicacion!

Excelente clase!! creo que va a estar muy chingon este curso!

Les invito a mi charla sobre cómo manejar efectos secundarios en programación funcional con efectos algebraicos =)
https://www.meetup.com/es/Quito-Lambda-Meetup/events/mscxlpybchbkc/?fbclid=IwAR3bDlxMG-_9vIFtMwdOTnNVmFC7AgGarNEOKj73-E6galZ0D5cavXWj8WU

pronto…

se ve increible

good!

Genial, super practica, al ritmo que vamos es muy necesario. BTW en Flutter también utilizamos código declarativo con Dart.

En ejemplo de Imperativo vs declarativo, utilizar en esté caso funciones como map genera una menor la carga en el procesador que utilizar un for ?

muy buenos ejemplos.

Interesante se ve el curso!

Muy bien explicado.

Excelente explicacion comparativa

👍

genial, vamos con este curso!

La programación funcional permite desarrollar de manera concisa, más fácil de leer e incluso más testeable lo que al final se ve reflejado en clientes o usuarios finales mucho más felices lo cual debería ser nuestro objetivo como desarrollador ❤️

Antes de comenzar:

<h3>En el mundo de la Programación existen muchos paradigmas, dentro de los cuales se encuentran:</h3>
  • Programación Imperativa o procedimental: Se basa en dar instrucciones de como hacer las cosas (receta de cocina).
  • Programación Orientada a Objectos: Está basada en el imperativo, pero encapsula elementos denominados objetos.
  • Programación dirigida por eventos: La ejecución de los programas van determinados por los sucesos que ocurran en el sistema.
  • Programación declarativa: está basada en describir el problema declarando propiedades y reglas que deben cumplirse.
    • Programación funcional: basada en la definición los predicados y es de corte más matemático.
    • Programación lógica: basado en la definición de relaciones lógicas, está representado por Prolog.
  • Programación multiparadigma: es el uso de dos o más paradigmas dentro de un programa.
  • Programación reactiva: se basa en la declaración de objetos emisores de eventos asíncronos y objetos que se “suscriben” a los primeros.

Ya estaba haciendo programación funcional sin darme cuenta jaja, ya me hacía falta entender por fin lo que es.

Interesante, conocía la programación oriemtada a objetos y la estructurada, pero esto… en nuevo, veamos qué tal