Saltar al contenido
Logotipo de Trainontech Trainontech

Lenguajes y Fundamentos de Programación · LNG-303

Programación funcional: conceptos transversales

Inmutabilidad, orden superior y composición aplicadas a Python, Scala y JavaScript en proyectos reales.

Próximamente Avanzado 7 módulos · 35 clases

Formato asíncrono Desarrollo Python, Scala, JavaScript

Lo que aprenderás

  • Escribir funciones puras y aislar los efectos secundarios en los bordes del programa.
  • Sustituir bucles con estado por map, filter y reduce sin perder legibilidad.
  • Componer funciones y aplicar currificación y aplicación parcial en los tres lenguajes.
  • Trabajar con estructuras inmutables y copias eficientes en Python, Scala y JavaScript.
  • Modelar ausencia y error con Option y Either en lugar de nulos y excepciones.
  • Reconocer funtores y mónadas por su comportamiento en código cotidiano, sin formalismo innecesario.
  • Decidir cuándo el estilo funcional aclara el código y cuándo lo vuelve críptico para el equipo.

Contenido del curso

7 módulos · 35 clases en vídeo · práctica guiada en cada módulo

Módulo 1 · Punto de partida 5 clases
  • Qué problema real ataca el estilo funcional
  • Función pura, transparencia referencial y efectos
  • Los tres lenguajes: qué ofrece cada uno de serie
  • Entorno de trabajo y ejemplos comparados
  • Un error clásico de estado compartido, diagnosticado
Módulo 2 · Funciones como valores 5 clases
  • Funciones de orden superior en los tres lenguajes
  • Cierres y captura de variables: trampas habituales
  • Currificación y aplicación parcial
  • Composición de funciones y tuberías de datos
  • Funciones anónimas legibles frente a ilegibles
Módulo 3 · Colecciones sin bucles 5 clases
  • map y filter frente al bucle equivalente
  • reduce y fold: cuándo aclaran y cuándo confunden
  • Evaluación perezosa con generadores y streams
  • Agrupar, particionar y aplanar colecciones
  • Rendimiento: qué cuesta cada cadena de operaciones
Módulo 4 · Inmutabilidad 5 clases
  • Copias, congelación y estructuras persistentes
  • Registros y clases de datos inmutables
  • Actualizar estructuras anidadas sin mutar
  • Coste en memoria y cómo medirlo
  • Fronteras mutables controladas dentro de una función
Módulo 5 · Errores sin excepciones 5 clases
  • El problema del nulo y sus consecuencias
  • Option y Maybe: ausencia explícita en el tipo
  • Either y Result para errores con información
  • Encadenar operaciones que pueden fallar
  • Convivir con bibliotecas que sí lanzan excepciones
Módulo 6 · Abstracciones recurrentes 5 clases
  • Funtores reconocidos en código que ya escribes
  • Mónadas explicadas por su comportamiento observable
  • Semigrupos y monoides para combinar resultados
  • Cuándo nombrar la abstracción y cuándo callarla
  • Coste de legibilidad para el resto del equipo
Módulo 7 · Proyecto de cierre 5 clases
  • Punto de partida: un procesador de datos con estado
  • Reescritura funcional por etapas con pruebas
  • Comparar la versión Scala y la versión JavaScript
  • Medir claridad y rendimiento antes y después
  • Guía de estilo funcional acordada para un equipo

Requisitos

  • Experiencia programando en al menos uno de los tres lenguajes del curso.
  • Comodidad con funciones como valores, cierres y expresiones lambda.
  • Haber mantenido código de alguien más, para reconocer los problemas de estado compartido.

Descripción

Buena parte de los errores difíciles de reproducir vienen del estado mutable compartido: una lista que alguien modifica desde otro punto, un objeto que cambia mientras se recorre, una función que devuelve resultados distintos según el orden de llamada. La programación funcional ofrece disciplina frente a esto, pero se explica casi siempre en lenguajes puros que poca gente usa a diario.

Este curso aplica esos conceptos a Python, Scala y JavaScript, que no son funcionales puros y donde las decisiones tienen matices. Se practica con transformaciones de datos, tratamiento de errores sin excepciones y composición de operaciones sobre colecciones. Cada idea se muestra en los tres lenguajes, señalando dónde la sintaxis ayuda, dónde estorba y qué coste tiene la inmutabilidad en cada uno.

Al terminar se dispone de un repertorio aplicable de inmediato a código existente: menos estado compartido, errores explícitos en la firma y transformaciones encadenadas fáciles de probar. Conecta directamente con el curso de concurrencia y paralelismo, donde la ausencia de estado mutable deja de ser una preferencia de estilo para convertirse en requisito de corrección.

¿Para quién es este curso?

  • Desarrolladores que mantienen código con estado compartido y errores intermitentes difíciles de reproducir.
  • Perfiles de backend que trabajan con transformaciones de datos y quieren cadenas comprobables.
  • Equipos que están adoptando Scala o TypeScript y necesitan criterios de estilo compartidos.
Próximamente

Curso en hoja de ruta. Se prioriza según la demanda recogida y los proyectos en cartera.

Código
LNG-303
Nivel
Avanzado
Público
Desarrollo
Entorno
Python, Scala, JavaScript

Este curso incluye

  • 35 clases en vídeo bajo demanda
  • Práctica en entornos web y simuladores, sin instalar nada
  • Tutorización en el campus
  • Acceso desde móvil, tableta y ordenador
  • Actualizaciones cuando cambia la versión de la herramienta
  • Certificado de finalización

Sigue aprendiendo

Cursos relacionados

PY-106Lenguajes y Fundamentos de Programación

Concurrencia: multihilo y multiproceso

Paralelizar adquisición de datos y tareas de E/S sin introducir errores difíciles de reproducir.

Python

Avanzado 33 clases

PY-107Lenguajes y Fundamentos de Programación

Testing y TDD en Python

Pruebas unitarias, fixtures y desarrollo dirigido por pruebas en proyectos técnicos reales.

Python

Avanzado 34 clases

PY-131Lenguajes y Fundamentos de Programación

Webscraping con agentes de IA en local

Agentes que navegan y extraen datos sin depender de servicios en la nube.

PythonOllama

Avanzado 34 clases