En este curso exploraremos el paradigma funcional en JavaScript así como varios patrones, técnicas y convenciones asociadas a este paradigma, haciendo uso de las nuevas características de ES2015.
La programación funcional es un paradigma de programación de suma relevancia hoy
en día, ya que se presta a resolver problemas de paralelización, asincronía y
programación reactiva entre otros. La programación funcional (Functional
Programming o FP por sus siglas en inglés) no es realmente un paradigma nuevo,
existe desde hace medio siglo, pero recientemente, y en particular en el mundo
de JavaScript, se ha convertido en tanto una moda como una necesidad. Poco a
poco, desde la proliferación de librerías como underscore y lodash,
después la adición de map()
, filter()
, reduce()
y compañía, y ahora con
frameworks como React y Redux, conocer el paradigma funcional y estilo
declarativo se han convertido en una necesidad para cualquier desarrollador de
JavaScript.
Familiarizarnos con la programción funcional en JavaScript y ES2015 nos permitirá más adelante desenvolvernos con naturalidad con herramientas como React o Redux.
Tags: functional
, es6
, ...
Este curso está dirigido a desarrolladoras tanto front-end como back-end. JavaScript es un lenguaje de naturaleza funcional. En este curso aprenderás sobre los principios de la programación funcional y cómo se reflejan en JavaScript moderno.
Para poder llevar adelante este curso sin frustración, es recomendable los siguientes conocimientos previos:
- Manejo de línea de comandos (*nix) y
git
- Manejo básico de
npm
- Debes haber completado el curso de paradigmas de programación.
- ES2015
- Funciones puras
- Inmutabilidad
- Recursión
- Higher Order Functions
- Composición de funciones
Unidad 01: Evitando el estado compartido y cambiante
En esta unidad veremos dos de los principios fundamentales de la programación funcional: cómo evitar el estado compartido usando funciones puras y el concepto de inmutabilidad.
# | Tipo | Formato | Duración | Descripción |
---|---|---|---|---|
00 | lectura | self-paced | 5min | Apertura |
01 | lectura | self-paced | 30min | Funciones puras |
02 | practice | self-paced | 10min | Ejercicios de funciones puras |
03 | lectura | self-paced | 30min | Inmutabilidad |
04 | practice | self-paced | 10min | Ejercicios de inmutabilidad |
05 | quiz | self-paced | 20min | Cuestionario |
08 | lectura | self-paced | 5min | Cierre |
Unidad 02: Higher Order Functions
Las funciones de orden superior (Higher Order Functions en inglés), no son más que funciones que reciben otras funciones como argumentos o que retornan una función. En esta unidad veremos este tipo de funciones en acción, incluyendo usos más avanzados como aplicación parcial y currying.
# | Tipo | Formato | Duración | Descripción |
---|---|---|---|---|
00 | lectura | self-paced | 5min | Apertura |
01 | lectura | self-paced | 30min | Higher Order Functions |
02 | practice | self-paced | 10min | Ejercicios de HOF |
03 | lectura | self-paced | 10min | Aplicación parcial |
04 | practice | self-paced | 10min | Ejercicios de aplicación parcial |
05 | lectura | self-paced | 30min | Currying |
06 | practice | self-paced | 10min | Ejercicios de currying |
07 | quiz | self-paced | 20min | Cuestionario |
10 | lectura | self-paced | 5min | Cierre |
Unidad 03: Control de flujo
Como paradigma declarativo, la programación funcional se caracteriza, entre otras cosas, por expresar "repetición" usando recursión en vez de iteración. En esta unidad veremos cómo reemplazar iteración con recursión o higher order functions, así como las ventajas que ofrece el enfoque funcional para manejar asincronía, que es una característica fundamental de JavaScript.
# | Tipo | Formato | Duración | Descripción |
---|---|---|---|---|
00 | lectura | self-paced | 5min | Apertura |
01 | lectura | self-paced | 50min | Recursión |
02 | practice | self-paced | 10min | Ejercicios de recursión |
03 | lectura | self-paced | 30min | Asincronía |
04 | practice | self-paced | 10min | Ejercicios de asincronía |
05 | quiz | self-paced | 20min | Cuestionario |
08 | lectura | self-paced | 5min | Cierre |
- Milton Mazzarri (autor)
- Lupo Montero (coordinador)
- Ana Rangel (colaboradora)
- Functional JavaScript de Michael Fogus
- Eloquent JavaScript
Cursos similares que sirven como referencia:
- Introduction to Functional Programming, How to Think Functionally in (Almost) Any Language, Barry Burd, November 2016, O'Reilly Media
Capítulos de libros:
Blog posts:
- Why Learn Functional Programming in JavaScript? (Composing Software), Eric Elliott en Medium, Feb 20 2017
- Master the JavaScript Interview: What is Functional Programming?, Eric Elliott en Medium, Jan 3 2017
- Functional Programming In JavaScript — With Practical Examples (Part 1), Free Code Camp, @rajaraodv, Nov 14 2016
- JavaScript and Functional Programming, Beth Allchurch, 29 of June, 2016
- An introduction to functional programming, Mary Rose Cook
- Functional Programming in Javascript (Part 2) @yyyk, Apr 16 2017 (needs review)
- One webpack config to rule them all — environments that is, Ryan Johnson, Feb 12 2017
- What are NPM, Yarn, Babel, and Webpack; and how to properly use them?, Gasim Gasimzada, May 9 2017 (needs review)
Videos:
- Functional programming in JavaScript, Mattias Petter Johansson.
- Learning Functional Programming with JavaScript, Anjana Vakil, JSUnconf 2016
- Functional programming and curry cooking in JS, Stefanie Schirmer, JSConf EU 2015
- Practical functional programming: pick two, James Coglan, JSConf EU 2014
- Pure JavaScript, Christian Johansen (@cjno), Sep 13 2012
Otros recursos:
- Glosario de términos de programación funcional, @hemanth en GitHub.