SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Prohibiendo los bucles.
Hacia la programación del
siglo XXI.
Francisco Fernández de Vega
University of Extremadura
Spain
Programar en el siglo XXI
- La era del “Big Data”
- Aplicaciones intensivas en datos..
- Muchos modelos y librerías para programación
paralela/distribuida..
- Infraestructura hardware disponible.:
- Clusters.
- Blades.
- Clouds.
- Grids.
- GPUs.
- Multicores.
- Maycores...
Programar en el siglo XXI
Programar en el siglo XXI
Programar en el siglo XXI
Programar en el siglo XXI
Metodologías de programación:
- Programación Estructurada.
- Programación Funcional.
- Programación Orientada a Objetos.
El punto de partida:
¿Estamos enseñando a nuestros estudiantes la programación adecuada para el siglo XXI?
Una observación: OOP es la única metodología enseñada en Extremadura.
El problema de la programación secuencial.
En los primeros cursos del Grado
se enseñan programación
secuencial (Metodologías OO y
lenguaje java).
Programación secuencial basada
en bucles para aplicaciones
intensivas en datos (SIMD).
Programación
Concurrente/paralela/distribuida
sólo en los últimos años del grado
¿Es esto lo ideal?
Analicemos la situación
Existen estudios que cuestionan los modelos:
- ¿Qué metodología deberíamos enseñar primero?
Bruce, K. B. (2005). Controversy on how to teach CS 1: a discussion on the SIGCSE-members mailing list.ACM SIGCSE
Bulletin,37(2), 111-117.
- Recursividad antes que bucles si el profesor es competente..
Turbak, F., Royden, C., Stephan, J., & Herbst, J. (1999). Teaching recursion before loops in CS1. Journal of Computing in Small
Colleges,14(4),86-101.
La importancia de la recursividad.
Filtros recursivos: La salida del circuito retroalimenta la entrada.
Role of the filter phase in
phase sampling
interferometry. J.A. Quiroga
et al, Optics Express 2011.
La importancia de la recursividad
La recursividad más allá de la programación
Fractales: Objetos autosimilares a cualquier escala. Producidos de forma iterativa.
Koch Curve.
Si los fractales son recursivos...
Fractales en:
- Música: Bach 4 suites para chelo.
Si los fractales son recursivos...
Fractales en:
- Música: Bach 4 suites para chelo.
El “peine” de Cantor. The mathematical tourist.
Fractales en la naturaleza
¿Recursividad antes que bucles?
Razones pedagógicas: Divide y vencerás.
Cualquier problema repetitivo puede resolverse mediante recursividad, pero en algunos casos se
requiere si no se usa ésta, y en su lugar se utilizan bucles, es necesario utilizar una estructura de pila
adicional (problemas en que se requiere memoria).
La recursividad de “cola” evita los desbordamientos......
Pero, ¿qué prefieren nuestros estudiantes y los programadores
profesionales?
Analizando la situación en Extremadura
Lanzamos una encuesta sobre técnicas de programación:
- Una factoría software.
- Estudiantes del último año del Grado en Informática.
Las principales preguntas versaban sobre:
- Metodologías de programación.
- Recursividad..
- Utilización de programación paralela.
¿Cuánto tiempo hace que usaste por última vez
una función recursiva?
Programadores profesionales Estudiantes de último curso
¿Porqué nunca utilizas recursividad?
Programadores profesionales Estudiantes de último curso.
¿Cuánto hace que utilizaste por última vez
programación paralela?
Programadores profesionales Estudiantes de último curso.
¿Porqué nunca utilizas la programación
paralela?
Programadores profesionales Estudiantes de último curso.
¿Qué metodología de programación utilizas?
Programadores profesionales Estudiantes de último curso.
La programación del siglo XXI, resumiendo:
- Estudiantes y profesionales evitan la
recursividad….
- ...y rechazan la programación paralela..
- Les cuesta aprender y aplicar ambos
conceptos..
¿Habrá alguna relación entre esta situación y la forma
en que aprendieron a programar?
¿Alguna conexión entre estas dos cuestiones:
programación paralela y evitar la recursividad?
¿Qué podemos hacer?
Podemos aprender del pasado para mejorar el futuro.
Back to the future
Back to the future
Back to the future
¿Qué podemos hacer?
En los años setenta, las metodologías que disponíamos:
- Programación basada en saltos “go-to” (Código
Espagueti).
- Programación estructurada..
¿Qué podemos hacer?
- Este trabajo (1974) se fijaba en dos cuestiones:
- Mejorar la sintaxis de las iteracciones.
- Diseñar una metodología para el desarrollo de programas..
Donald E. Knuth
Premio BBVA Fronteras del conocimiento 2010,
Wikipedia
¿Qué podemos hacer?
- Se refiere a una conferencia de Dijkstra “El programador humilde” y al libro “Programación
estructurada” (Dahl, Dijkstra, Hoare).
- Discute si las sentencias go-to tienen una estructura sintáctica fácil de ver en el código; Pero en
cualquier caso no culpabiliza a los programadores que la utilicen.
- No obstante, reconoce que “go-to es casi nunca la mejor alternativa disponible en los lenguajes de
programación actuales”.
Lo que se enseña en la actualidad
Prog. Orientada a Objetos (y estructurada):
- Modelos basados en los bucles para que los niños
aprendan programación (scratch, por ejemplo).
- Modelos de programación secuenciales (iterativos)..
- Una vez el modelo se asume, el programador tiene a
aplicarlo por defecto, aunque se ofrezcan otras
alternativas.
- El programador no tiene en cuenta las características
del hardware disponible ni las posibles dependencias
de datos.
Pero existen otros mundos
El problema del bucle.
¿Qué sucede cuando pedimos a nuestros estudiantes OOP que resuelvan los problemas siguientes?…
1.- Sumar uno a cada posición de un array. a[i]=a[i]+1.
2.- Acumular secuencialmente todas las posiciones de un array. a[i+1]=a[i+1]+[ai].
Tienden a producir soluciones como éstas:
El problema del bucle.
Intentemos ahora resolver los mismos problemas en paralelo, utilizando cualquier librería de
programación paralela que paralelice los bucles:
1.- Sumar uno a cada posición del array. a[i]=a[i]+1.
2.- Acumular secuencialmente las posiciones del array. a[i+1]=a[i+1]+[ai].
Lanzamos en paralelo los bucles for:
¿Dónde está el problema?
Los estudiantes no tienen práctica en apreciar las dependencias de datos.
La razón es que han aprendido programación SECUENCIAL para resolver ambos problemas:
FOR lanzados
en paralelo.
Funcional vs Metodologías Orientadas a Objeto.
Programación Funcional:
- Programación declarativa.
- Basada en la recursividad.
- Funciones Puras.
- Funciones de alto orden (map).
- Macros: transformaciones
código-datos..
- Cálculo Lambda ( A. Church).
To be or not to be, that is the question
SPANISH ENGLISH
SER Yo soy Español TO BE I’m Spanish.
ESTAR Yo estoy en Dubai TO BE (in a place) I’m in Dubai.
To be or not to be, that is the question
Problem to be solved Data involved Nature of the problem
a[i]=a[i]+1. No dependencies Parallel.
a[i+1]=a[i+1]+[ai] Data dependencies. Sequential.
To be or not to be, that is the question
Data involved Loop based programming (OOP, Structured) Nature of the problem.
No dependencies Parallel (solved sequentially).
Data dependencies. Sequential.
Propuesta: Prohibir los bucles.
¿Cómo resolvemos tareas repetitivas sin bucles?
- Funciones recursivas.
- Funciones de alto orden- MAP: se aplica a
todos los elementos a la vez.
To be or not to be, that is the question
Datos Programación basada en Bucles (OOP, Structured) Functional + Prohibición de bucles
Independientes. MAP
Con dependencias. Recursividad
Funcional + prohibición de bucles
Dos opciones para sumar uno a cada elemento de una lista:
SOLUCIÓN RECURSIVA SOLUCIÓN MAP
Funcional + prohibición de bucles
Para el segundo problema
SOLUCIÓN RECURSIVA SOLUCIÓN MAP
Aplicando la metodología
Jóvenes estudiantes de las Escuelas Municipales de Jóvenes Científicos. 400 estudiantes en 20
localidades.
http://www.uexfundacion.es/jovenescientificos/
Aplicando la metodología
Jóvenes estudiantes de las Escuelas Municipales de Jóvenes Científicos. 400 estudiantes en 20
localidades.
http://www.uexfundacion.es/jovenescientificos/
Aplicando la metodología
Después de 40 horas de clase de COMMMON LISP, en que han aprendido los principios de la
recursividad y las funciones de alto orden, les planteamos los siguientes problemas:
- Calcular el volumen de una serie de cilindros. Los radios y alturas de los mismos suministrados en
dos listas..
- El camino del borracho: Un borracho camina por una calle estrecha con riesgo de chocar con
alguna de las paredes de la misma. Cada paso al azar que da, a derecha o izquierda, se acerca a una
de las dos paredes y se aleja de la contraria. Después de un número de pasos al azar, se trata de
saber si habrá chocado con alguna pared. Se suministra una lista de pasos, 0-derecha, 1-izquierda,
por ejemplo (1 0 0 1 0 1 1 1 0 0 1).
http://www.uexfundacion.es/jovenescientificos/
Aplicando la metodología
Los estudiantes fueron capaces de generar estas dos soluciones::
http://www.uexfundacion.es/jovenescientificos/
¿Puedo hoy día aplicar LISP en paralelo?
Conclusiones
Modelo Funcional más apropiado para el siglo XXI.
Los bucles deberían prohibirse: las funciones MAP se usarán en tareas paralelas con datos sin
dependencias, y la recursividad en tareas repetitivas que requieran un orden.
El código producido, es paralelo“per se”.
Gracias.
Preguntas.

Más contenido relacionado

Similar a Programación XXI Recursividad Funcional

Leonardo soto
Leonardo sotoLeonardo soto
Leonardo sotoleo_97_29
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
OVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILA
OVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILAOVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILA
OVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILAdcpe2014
 
Proyecto metodos-definitivo
Proyecto metodos-definitivoProyecto metodos-definitivo
Proyecto metodos-definitivorubhendesiderio
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)Jordi Cabot
 
Act9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individual
Act9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individualAct9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individual
Act9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individualsayda socha
 
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...JAVIER SOLIS NOYOLA
 
06. analisis matematico
06. analisis matematico06. analisis matematico
06. analisis matematicoMauro
 
06. analisis matematico
06. analisis matematico06. analisis matematico
06. analisis matematicoCesar
 
Syllabus algoritmos y_est_datos_i_2010_i
Syllabus algoritmos y_est_datos_i_2010_iSyllabus algoritmos y_est_datos_i_2010_i
Syllabus algoritmos y_est_datos_i_2010_isupito01
 
Leonardo soto trabajo practico n°1
Leonardo soto trabajo practico n°1Leonardo soto trabajo practico n°1
Leonardo soto trabajo practico n°1leo_97_29
 
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...José Albert
 
Matematicas1 en EVEA
Matematicas1 en EVEAMatematicas1 en EVEA
Matematicas1 en EVEASEP
 
Morales carlos act2
Morales carlos act2Morales carlos act2
Morales carlos act2SEP
 

Similar a Programación XXI Recursividad Funcional (20)

Leonardo soto
Leonardo sotoLeonardo soto
Leonardo soto
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
OVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILA
OVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILAOVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILA
OVA - Proyecto Geometics - LUZ MARIELA MARTIN AVILA
 
Proyecto de-metodos
Proyecto de-metodosProyecto de-metodos
Proyecto de-metodos
 
Proyecto metodos-definitivo
Proyecto metodos-definitivoProyecto metodos-definitivo
Proyecto metodos-definitivo
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programadores)
 
Act9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individual
Act9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individualAct9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individual
Act9 sayda socha piv21013_a1_201710_n_i1_c2_ii aporte individual
 
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
Rúbrica para Evaluar una Aplicación Multimedia (actividad de aprendizaje inde...
 
06. analisis matematico
06. analisis matematico06. analisis matematico
06. analisis matematico
 
06. analisis matematico
06. analisis matematico06. analisis matematico
06. analisis matematico
 
Syllabus algoritmos y_est_datos_i_2010_i
Syllabus algoritmos y_est_datos_i_2010_iSyllabus algoritmos y_est_datos_i_2010_i
Syllabus algoritmos y_est_datos_i_2010_i
 
Leonardo soto trabajo practico n°1
Leonardo soto trabajo practico n°1Leonardo soto trabajo practico n°1
Leonardo soto trabajo practico n°1
 
Programación Funcional en Scala
Programación Funcional en ScalaProgramación Funcional en Scala
Programación Funcional en Scala
 
Manual 2 mwinqsb
Manual 2 mwinqsbManual 2 mwinqsb
Manual 2 mwinqsb
 
Manual winqsb
Manual winqsbManual winqsb
Manual winqsb
 
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...
Ambiente virtual y Lenguaje de Domino Específico para la enseñanza de la prog...
 
Matematicas1 en EVEA
Matematicas1 en EVEAMatematicas1 en EVEA
Matematicas1 en EVEA
 
Morales carlos act2
Morales carlos act2Morales carlos act2
Morales carlos act2
 

Más de Facultad de Informática UCM

¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?Facultad de Informática UCM
 
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...Facultad de Informática UCM
 
DRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersDRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersFacultad de Informática UCM
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmFacultad de Informática UCM
 
Introduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingIntroduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingFacultad de Informática UCM
 
Inteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroInteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroFacultad de Informática UCM
 
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 Design Automation Approaches for Real-Time Edge Computing for Science Applic... Design Automation Approaches for Real-Time Edge Computing for Science Applic...
Design Automation Approaches for Real-Time Edge Computing for Science Applic...Facultad de Informática UCM
 
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Facultad de Informática UCM
 
Fault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFacultad de Informática UCM
 
Cómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoCómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoFacultad de Informática UCM
 
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCAutomatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCFacultad de Informática UCM
 
Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Facultad de Informática UCM
 
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Facultad de Informática UCM
 
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Facultad de Informática UCM
 
Challenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windChallenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windFacultad de Informática UCM
 

Más de Facultad de Informática UCM (20)

¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?
 
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
 
DRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersDRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation Computers
 
uElectronics ongoing activities at ESA
uElectronics ongoing activities at ESAuElectronics ongoing activities at ESA
uElectronics ongoing activities at ESA
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura Arm
 
Formalizing Mathematics in Lean
Formalizing Mathematics in LeanFormalizing Mathematics in Lean
Formalizing Mathematics in Lean
 
Introduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingIntroduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented Computing
 
Computer Design Concepts for Machine Learning
Computer Design Concepts for Machine LearningComputer Design Concepts for Machine Learning
Computer Design Concepts for Machine Learning
 
Inteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroInteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuro
 
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 Design Automation Approaches for Real-Time Edge Computing for Science Applic... Design Automation Approaches for Real-Time Edge Computing for Science Applic...
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
 
Fault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error Correction
 
Cómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoCómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intento
 
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCAutomatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPC
 
Type and proof structures for concurrency
Type and proof structures for concurrencyType and proof structures for concurrency
Type and proof structures for concurrency
 
Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...
 
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
 
Do you trust your artificial intelligence system?
Do you trust your artificial intelligence system?Do you trust your artificial intelligence system?
Do you trust your artificial intelligence system?
 
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
 
Challenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windChallenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore wind
 

Último

SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasLeonardoMendozaDvila
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...Arquitecto Alejandro Gomez cornejo muñoz
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana5extraviado
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónAlexisHernandez885688
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaSebastianQP1
 
lean manufacturing and its definition for industries
lean manufacturing and its definition for industrieslean manufacturing and its definition for industries
lean manufacturing and its definition for industriesbarom
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosJeanCarlosLorenzo1
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOCamiloSaavedra30
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRyanimarca23
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxEtse9
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 
Espontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosEspontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosOscarGonzalez231938
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxJairReyna1
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1victorrodrigues972054
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosfranchescamassielmor
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRASESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRASenriquezerly87
 

Último (20)

SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidasSOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
SOLIDOS DE REVOLUCION, aplicaciones de integrales definidas
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
 
Trabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruanaTrabajo en altura de acuerdo a la normativa peruana
Trabajo en altura de acuerdo a la normativa peruana
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieria
 
lean manufacturing and its definition for industries
lean manufacturing and its definition for industrieslean manufacturing and its definition for industries
lean manufacturing and its definition for industries
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
 
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBRQUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
QUIMICA ORGANICA I ENOLES Y ENAMINAS LIBR
 
produccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptxproduccion de cerdos. 2024 abril 20..pptx
produccion de cerdos. 2024 abril 20..pptx
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
Espontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneosEspontaneidad de las reacciones y procesos espontáneos
Espontaneidad de las reacciones y procesos espontáneos
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptx
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negocios
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRASESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
ESTRUCTURAS EN LA SUPERVISIÓN Y RESIDENCIA DE OBRAS
 

Programación XXI Recursividad Funcional

  • 1. Prohibiendo los bucles. Hacia la programación del siglo XXI. Francisco Fernández de Vega University of Extremadura Spain
  • 2. Programar en el siglo XXI - La era del “Big Data” - Aplicaciones intensivas en datos.. - Muchos modelos y librerías para programación paralela/distribuida.. - Infraestructura hardware disponible.: - Clusters. - Blades. - Clouds. - Grids. - GPUs. - Multicores. - Maycores...
  • 3. Programar en el siglo XXI
  • 4. Programar en el siglo XXI
  • 5. Programar en el siglo XXI
  • 6. Programar en el siglo XXI Metodologías de programación: - Programación Estructurada. - Programación Funcional. - Programación Orientada a Objetos.
  • 7. El punto de partida: ¿Estamos enseñando a nuestros estudiantes la programación adecuada para el siglo XXI? Una observación: OOP es la única metodología enseñada en Extremadura.
  • 8. El problema de la programación secuencial. En los primeros cursos del Grado se enseñan programación secuencial (Metodologías OO y lenguaje java). Programación secuencial basada en bucles para aplicaciones intensivas en datos (SIMD). Programación Concurrente/paralela/distribuida sólo en los últimos años del grado ¿Es esto lo ideal?
  • 9. Analicemos la situación Existen estudios que cuestionan los modelos: - ¿Qué metodología deberíamos enseñar primero? Bruce, K. B. (2005). Controversy on how to teach CS 1: a discussion on the SIGCSE-members mailing list.ACM SIGCSE Bulletin,37(2), 111-117. - Recursividad antes que bucles si el profesor es competente.. Turbak, F., Royden, C., Stephan, J., & Herbst, J. (1999). Teaching recursion before loops in CS1. Journal of Computing in Small Colleges,14(4),86-101.
  • 10. La importancia de la recursividad. Filtros recursivos: La salida del circuito retroalimenta la entrada. Role of the filter phase in phase sampling interferometry. J.A. Quiroga et al, Optics Express 2011.
  • 11. La importancia de la recursividad La recursividad más allá de la programación Fractales: Objetos autosimilares a cualquier escala. Producidos de forma iterativa. Koch Curve.
  • 12. Si los fractales son recursivos... Fractales en: - Música: Bach 4 suites para chelo.
  • 13. Si los fractales son recursivos... Fractales en: - Música: Bach 4 suites para chelo. El “peine” de Cantor. The mathematical tourist.
  • 14. Fractales en la naturaleza
  • 15. ¿Recursividad antes que bucles? Razones pedagógicas: Divide y vencerás. Cualquier problema repetitivo puede resolverse mediante recursividad, pero en algunos casos se requiere si no se usa ésta, y en su lugar se utilizan bucles, es necesario utilizar una estructura de pila adicional (problemas en que se requiere memoria). La recursividad de “cola” evita los desbordamientos...... Pero, ¿qué prefieren nuestros estudiantes y los programadores profesionales?
  • 16. Analizando la situación en Extremadura Lanzamos una encuesta sobre técnicas de programación: - Una factoría software. - Estudiantes del último año del Grado en Informática. Las principales preguntas versaban sobre: - Metodologías de programación. - Recursividad.. - Utilización de programación paralela.
  • 17. ¿Cuánto tiempo hace que usaste por última vez una función recursiva? Programadores profesionales Estudiantes de último curso
  • 18. ¿Porqué nunca utilizas recursividad? Programadores profesionales Estudiantes de último curso.
  • 19. ¿Cuánto hace que utilizaste por última vez programación paralela? Programadores profesionales Estudiantes de último curso.
  • 20. ¿Porqué nunca utilizas la programación paralela? Programadores profesionales Estudiantes de último curso.
  • 21. ¿Qué metodología de programación utilizas? Programadores profesionales Estudiantes de último curso.
  • 22. La programación del siglo XXI, resumiendo: - Estudiantes y profesionales evitan la recursividad…. - ...y rechazan la programación paralela.. - Les cuesta aprender y aplicar ambos conceptos.. ¿Habrá alguna relación entre esta situación y la forma en que aprendieron a programar? ¿Alguna conexión entre estas dos cuestiones: programación paralela y evitar la recursividad?
  • 23. ¿Qué podemos hacer? Podemos aprender del pasado para mejorar el futuro.
  • 24. Back to the future
  • 25. Back to the future
  • 26. Back to the future
  • 27. ¿Qué podemos hacer? En los años setenta, las metodologías que disponíamos: - Programación basada en saltos “go-to” (Código Espagueti). - Programación estructurada..
  • 28. ¿Qué podemos hacer? - Este trabajo (1974) se fijaba en dos cuestiones: - Mejorar la sintaxis de las iteracciones. - Diseñar una metodología para el desarrollo de programas..
  • 29. Donald E. Knuth Premio BBVA Fronteras del conocimiento 2010, Wikipedia
  • 30. ¿Qué podemos hacer? - Se refiere a una conferencia de Dijkstra “El programador humilde” y al libro “Programación estructurada” (Dahl, Dijkstra, Hoare). - Discute si las sentencias go-to tienen una estructura sintáctica fácil de ver en el código; Pero en cualquier caso no culpabiliza a los programadores que la utilicen. - No obstante, reconoce que “go-to es casi nunca la mejor alternativa disponible en los lenguajes de programación actuales”.
  • 31. Lo que se enseña en la actualidad Prog. Orientada a Objetos (y estructurada): - Modelos basados en los bucles para que los niños aprendan programación (scratch, por ejemplo). - Modelos de programación secuenciales (iterativos).. - Una vez el modelo se asume, el programador tiene a aplicarlo por defecto, aunque se ofrezcan otras alternativas. - El programador no tiene en cuenta las características del hardware disponible ni las posibles dependencias de datos.
  • 33. El problema del bucle. ¿Qué sucede cuando pedimos a nuestros estudiantes OOP que resuelvan los problemas siguientes?… 1.- Sumar uno a cada posición de un array. a[i]=a[i]+1. 2.- Acumular secuencialmente todas las posiciones de un array. a[i+1]=a[i+1]+[ai]. Tienden a producir soluciones como éstas:
  • 34. El problema del bucle. Intentemos ahora resolver los mismos problemas en paralelo, utilizando cualquier librería de programación paralela que paralelice los bucles: 1.- Sumar uno a cada posición del array. a[i]=a[i]+1. 2.- Acumular secuencialmente las posiciones del array. a[i+1]=a[i+1]+[ai]. Lanzamos en paralelo los bucles for:
  • 35. ¿Dónde está el problema? Los estudiantes no tienen práctica en apreciar las dependencias de datos. La razón es que han aprendido programación SECUENCIAL para resolver ambos problemas: FOR lanzados en paralelo.
  • 36. Funcional vs Metodologías Orientadas a Objeto. Programación Funcional: - Programación declarativa. - Basada en la recursividad. - Funciones Puras. - Funciones de alto orden (map). - Macros: transformaciones código-datos.. - Cálculo Lambda ( A. Church).
  • 37. To be or not to be, that is the question SPANISH ENGLISH SER Yo soy Español TO BE I’m Spanish. ESTAR Yo estoy en Dubai TO BE (in a place) I’m in Dubai.
  • 38. To be or not to be, that is the question Problem to be solved Data involved Nature of the problem a[i]=a[i]+1. No dependencies Parallel. a[i+1]=a[i+1]+[ai] Data dependencies. Sequential.
  • 39. To be or not to be, that is the question Data involved Loop based programming (OOP, Structured) Nature of the problem. No dependencies Parallel (solved sequentially). Data dependencies. Sequential.
  • 40. Propuesta: Prohibir los bucles. ¿Cómo resolvemos tareas repetitivas sin bucles? - Funciones recursivas. - Funciones de alto orden- MAP: se aplica a todos los elementos a la vez.
  • 41. To be or not to be, that is the question Datos Programación basada en Bucles (OOP, Structured) Functional + Prohibición de bucles Independientes. MAP Con dependencias. Recursividad
  • 42. Funcional + prohibición de bucles Dos opciones para sumar uno a cada elemento de una lista: SOLUCIÓN RECURSIVA SOLUCIÓN MAP
  • 43. Funcional + prohibición de bucles Para el segundo problema SOLUCIÓN RECURSIVA SOLUCIÓN MAP
  • 44. Aplicando la metodología Jóvenes estudiantes de las Escuelas Municipales de Jóvenes Científicos. 400 estudiantes en 20 localidades. http://www.uexfundacion.es/jovenescientificos/
  • 45. Aplicando la metodología Jóvenes estudiantes de las Escuelas Municipales de Jóvenes Científicos. 400 estudiantes en 20 localidades. http://www.uexfundacion.es/jovenescientificos/
  • 46. Aplicando la metodología Después de 40 horas de clase de COMMMON LISP, en que han aprendido los principios de la recursividad y las funciones de alto orden, les planteamos los siguientes problemas: - Calcular el volumen de una serie de cilindros. Los radios y alturas de los mismos suministrados en dos listas.. - El camino del borracho: Un borracho camina por una calle estrecha con riesgo de chocar con alguna de las paredes de la misma. Cada paso al azar que da, a derecha o izquierda, se acerca a una de las dos paredes y se aleja de la contraria. Después de un número de pasos al azar, se trata de saber si habrá chocado con alguna pared. Se suministra una lista de pasos, 0-derecha, 1-izquierda, por ejemplo (1 0 0 1 0 1 1 1 0 0 1). http://www.uexfundacion.es/jovenescientificos/
  • 47. Aplicando la metodología Los estudiantes fueron capaces de generar estas dos soluciones:: http://www.uexfundacion.es/jovenescientificos/
  • 48. ¿Puedo hoy día aplicar LISP en paralelo?
  • 49. Conclusiones Modelo Funcional más apropiado para el siglo XXI. Los bucles deberían prohibirse: las funciones MAP se usarán en tareas paralelas con datos sin dependencias, y la recursividad en tareas repetitivas que requieran un orden. El código producido, es paralelo“per se”.