Paradigmas de programación

Programación funcional y reactiva - Computación

Profesor: Ing. Santiago Quiñones

Docente Investigador

Departamento de Ingeniería Civil

Contenidos

Presentación de plan

Plan de estudios

Horarios

Clase, prácticas y experimentación y tutoría

Paralelo B

  • Clases: Jueves 15:00 - 17:00
  • Prácticas: Viernes 15:00 - 17:00
  • Tutoría: Viernes 17:00 - 18:00

 

Paralelo C

  • Clases: Jueves 11:00 - 13:00
  • Prácticas: Viernes 07:00 - 09:00
  • Tutoría: Viernes 09:00 - 10:00

Plan de estudios: contenidos

Primer bimestre, resumen de actividades calificadas

Plan de estudios: contenidos

Segundo bimestre, resumen de actividades calificadas

Calificación

Talleres

 

  • Tanto para talleres individuales y grupales
  • 10 puntos si presenta en horario de prácticas y experimentación
  • 7 puntos si presenta en horario de tutoría

Plan de estudios

Resumen de contenidos

Bibliografía

Básica

Winitzki, S. (2021). The Science of Functional Programming. Disponible para descarga en: Bibliografía (Canvas).

Herramientas a utilizar

Herramientas

Algunas

 

Herramientas

Introducción a la programación funcional

Semana 1

Dado el siguiente conjunto de datos: 45, 47, 30, 40, 41, 38, 44, 48, 51, 60, 59, elabore métodos que permitan:

 

  • Calcular el valor promedio
  • Contar cuántos números son menores que el promedio
  • Contar cuántos números son mayores o iguales al promedio

Ejercicio resuelto

Calcular promedio

Ejercicio resuelto

Contar mayores o iguales

Ejercicio resuelto

Contar menores

Ejercicio resuelto

Funcionamiento

Dado el siguiente conjunto de datos: 45, 47, 30, 40, 41, 38, 44, 48, 51, 60, 59, elabore métodos que permitan:

 

  • Calcular el valor promedio
  • Contar cuántos números son menores que el promedio
  • Contar cuántos números son mayores o iguales al promedio

pero ahora, sin usar variables ni ciclos repetitivos

¿Porqué se nos hace difícil?

¿Porqué se nos hace difícil?

Una razón

Nos limita nuestros conocimientos y nos exige cambios en nuestra forma de pensar.

Cambio de paradigma.

¿Cuántos paradigmas de programación conoces?

Imperativa vs Declarativa

Imagine un método que calcule una puntuación de un juego de palabras. El jugador envía una palabra y se le otorga una puntuación. Suponga que por cada carácter, de la palabra, se asigna un punto.

Imperativa

Imagine un método que calcule una puntuación de un juego de palabras. El jugador envía una palabra y se le otorga una puntuación. Suponga que por cada carácter, de la palabra, se asigna un punto.

Declarativa

Imagine un método que calcule una puntuación de un juego de palabras. El jugador envía una palabra y se le otorga una puntuación. Suponga que por cada carácter, de la palabra, se asigna un punto.

Declarativa vs Imperativa

Imagine un método que calcule una puntuación de un juego de palabras. El jugador envía una palabra y se le otorga una puntuación. Suponga que por cada carácter, de la palabra, se asigna un punto.

Imperativa vs Declarativa

  • Cómo se calcula el resultado
  • Pasos específicos en un orden
  • Algoritmo paso a paso
  • Qué necesito, no el cómo

En busca del computador de programa almacenado

  • Las primeras computadoras eran de propósito específico
  • No eran programables como hoy lo entendemos
  • Re-programar era un trabajo eléctrico/mecánico

Breve descripción histórica

¿Cómo cambiar esto?

En busca del computador de programa almacenado

Breve historia

Arquitectura von Neumann

Consecuencias

  • Tradicionalmente un programa de von Neumann trabaja así
    • Declara variables
    • Ejecutar sentencias que cambia valores a variables

Arquitectura von Neumann

Consecuencias

¿Existe otra alternativa?

En busca del computador de programa almacenado

Programación funcional

Definición

La programación funcional es un enfoque de programación basado en llamadas a funciones.

          

  • Las funciones constituyen la principal construcción.
  • Las funciones son los ciudadanos de primera clase.

Programación funcional

Paradigma de programación

PF es una paradigma de programación

Caracteriza por:

  No usar ciclos repetitivos

  Emplea datos inmutables

  Funciones puras de orden superior

  El código también es un dato/valor

Un ejercicio relativamente simple:

 

Necesita contar cuántos números que se encuentran en una lista son pares.

 

pero,

sin usar variables ni ciclos repetitivos

 

Programación funcional

Introducción

Necesita contar cuántos números que se encuentran en una lista son pares

Scala

Python

Imperativa

Declarativa

Programación funcional

Datos inmutables

Inmutable == que no puede cambiar

Los valores literales simples en los lenguajes de programación ya son inmutables.

Todo es una función pura

Creación de valores nuevos

Puedes confiar en que nadie se puede meter con tus datos

 

Programación funcional

Lenguajes funcionales

Actualmente contamos con una gran cantidad de lenguajes en donde podemos hacer uso de la programación funcional, por ejemplo :

  • Java
  • PHP
  • Ruby
  • Python
  • Scala
  • Kotling
  • Haskell
  • Erlang

Taller

Taller Individual

Abrir repositorio virtual en gitpod.io y trabajar en el archivo b1s1.md.