En este curso exploraremos el paradigma funcional en JavaScript así como varios patrones, técnicas y convenciones asociadas a este paradigma, haciendo uso de los nuevos features 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 - FP) 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()
, 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 en React.
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
- Recursión
- High Order Functions
- Funciones puras
- Inmutabilidad
- Composición de funciones
- Composición de objetos
- Refactorización
- Automated tests
- Trabajo en equipo
- Peer-review
- Github issues, branches, pull requests, ...
- Self-paced: 5 hrs (aprox.)
- Presencial: 10 hrs (aprox.)
- Total horas: 15 (apox.)
- Refactorizar juego usado en lección 9 usando principios de programación funcional, ES6 y añadiendo test suite.
- El "proyecto" está basado en iterar una aplicación existente y llevar a cabo su siguiente release usando metodología agile.
Lesson 1: Presentación del curso
15min (presencial)
Antes de empezar con la teoría o la práctica, en esta "pre-lección" se hará una presentación sobre el curso en sí, los objetivos de aprendizaje, el proyecto, la metodología de aprendizaje, requisitos previos y metodología de evaluación.
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | charla | 15min | xxx |
Lesson 2: Funciones puras
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Lesson 3: Inmutabilidad
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Lesson 4: Recursión
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Lesson 5: HOF
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Lesson 6: Aplicación parcial, bind, call
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Lesson 7: Ejercicios guiados
1h (presencial)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | solucionario | 30min | ... |
2 | challenge | 30min | ... |
2h (presencial)
Lesson 8: Asicronía
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Lesson 9: Currying
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Workshop 2: Hacking: refactoring
3h (presencial)
Lesson 10: Espías
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Lesson 11: Testing
30min (self-paced)
Orden | Tipo | Duración | Descripción |
---|---|---|---|
1 | video | 10min | ... |
2 | code | 20min | ... |
Workshop 4: Hacking: refactoring y testing
1h (presencial)
Workshop 5: Code review
1h (presencial)
Workshop 6: Demos de proyectos FP
1h (presencial)
Cada equipo (dos alumnas) tendrá 5 minutos para presentar su demo.
30min (presencial)
- Lupo Montero (autor)
- Mariano Crowe (technical review)
- ...
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:
- 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.