Functional Programming: JavaScript
10105
Avanzado
Técnicas de programación
30 horas
480 €
Convocatorias
Inicio - Fin
Horario  
14 enero - 24 enero Lun, Mar, Mie y Jue de 09:45 a 13:30 Sin definir
18 febrero - 28 febrero Lun, Mar, Mie y Jue de 16:15 a 20:00 Sin definir
Descripción

JavaScript es un lenguaje que por diseño, coloca a las funciones como el ente de primer nivel: la propia construcción de objetos parte de una función.

¿Hay alternativa a la programación orientada a objetos? ¿Se puede lograr un conjunto más robusto, escalable y mantenible con otro enfoque distinto con menos líneas de código?

Descubre con nosotros el potencial de la programación funcional (FP) en un lenguaje moderno, de tipado dinámico y listo para ser usado en millones de dispositivos cambiando el enfoque, no la herramienta.

Objetivos

Adquiere los conceptos y habilidades necesarias para llevar a la práctica profesional el enfoque de la programación funcional a tus proyectos desarrollados en JavaScript, tanto en el navegador, móviles, como NodeJS.

Método

Todos los conceptos los aprenderemos mediante un ciclo de presentación de un problema con un solución con programación imperativa y orientada a objetos, para luego convertirlo con un enfoque funcional:

  1. Presentación de un código fuente.
  2. Discusión grupal para orientar la solución funcional.
  3. Implementación de la solución.
  4. Turno de ruegos y preguntas.


Como parte de la práctica contínua nos propondremos implementar una API HTTP REST en NodeJS con ExpressJS, mediante programación funcional.

Contenido
  • Puesta a punto en conocimientos para dominar ECMA-Script 2015, 2016, 2017 y ESNext
  • Currying manual o con librerías.
  • Inmutabilidad y su importancia.
  • Funciones puras e impuras.
  • Funciones de orden superior.
  • Composición de funciones. Composiing y piping
  • Especificación FantasyLand
  • Functors, Applicatives.
  • Librerías como Ramda, Sanctuary, Folktale y Fluture
  • Mónadas y flujos monádicos: Either, Maybe y Future, entre otros
  • Control de errores en una base de código funcional
  • Programación asíncrona funcional
  • Integración con librerías y frameworks no funcionales
  • Implementación de pruebas unitarias mediante Jasmine