SlideShare una empresa de Scribd logo
4 www.coiicv.org
Bit@cora Febrero 2016
La programación funcional es un paradigma
de programación que trata la computación
como la evaluación de funciones donde las
variables no tienen estado y son inmuta-
bles. Básicamente, consiste en programar
con funciones puras, es decir funciones que
reciben valores de entrada, devuelven valo-
res de salida y no tienen efectos colaterales.
A diferencia de otros paradigmas, la progra-
mación funcional elige prescindir de datos
de estado o mutables para centrarse en la
resolución de problemas mediante mecanis-
mos puramente matemáticos. Este concepto
choca principalmente con las bases de los
paradigmas imperativos, ya que éstos se
basan en la aplicación de dichos estados y
de sus cambios para la automatización a la
hora de resolver una operación.
El paradigma funcional enfatiza la utilización
de funciones puras o de orden superior, es
decir, funciones que no tengan efectos se-
cundarios que no manejan datos mutables o
de estado. Una de las buenas prácticas que
hace al estilo funcional es siempre tratar de
evitar los efectos secundarios, es decir, evi-
tar que las funciones modifiquen los valores
de sus parámetros.
Lenguajes funcionales
Entre los lenguajes que implementan la
programación funcional podemos destacar:
Java 8, Groovy, Swift, Scala, Clojure.
Uno de los nuevos componentes más im-
portantes de la versión 8 de Java es el so-
porte para el uso de expresiones lambda
mediante funciones anónimas o closures. El
objetivo de estas expresiones es hacer que
Java como lenguaje orientado a objetos ad-
quiera también capacidades funcionales.
Una de las características más importantes
de las expresiones lambda es que permite
pasar funciones como parámetros de otras
funciones. Algunas de las mejoras más in-
teresantes son la posibilidad de dejar de
escribir clases anónimas y la simplificación
de iteraciones y operaciones sobre listas y
colecciones de datos.
En Java 8 podemos destacar también el
Stream API, que presenta algunas carac-
terísticas novedosas como la creación de
streams que permiten el procesamiento de
datos en paralelo mejorando la performan-
ce de una manera simple y transparente.
Groovy es un lenguaje orientado a objetos,
dinámico y 100% interoperable con Java.
Programación funcional, una nueva forma
de resolver problemas.
José Manuel Ortega Candel
Centers Technician de Everis.
@jmortegac
www.linkedin.com/in/jmortega1
5www.coiicv.org
Bit@cora Enero 2016
elementos de primer nivel o de orden supe-
rior y se enfatiza la iteración recursiva en
lugar de los bucles con variables que cam-
bian de estado.
Existen otros lenguajes que no son pura-
mente funcionales, pero con los cuales se
pueden experimentar técnicas de progra-
mación funcional como JavaScript o Python.
Ambos son lenguajes interpretados multi-
paradigma, con tipos dinámicos, que per-
miten pasar funciones como parámetro.
Ventajas que aporta la programación
funcional:
•	 Los programas escritos en un estilo fun-
cional son más fáciles de testear y de-
purar.
•	 Al utilizar programación funcional las
líneas de código se reducen y nues-
tro programa es mucho más simple de
comprender.
•	 Por su característica modular, facilita
la computación concurrente y paralela;
permitiéndonos obtener muchas de las
ventajas de los procesadores multihilo.
•	 El estilo funcional trabaja muy bien con
grande colecciones de datos, permitién-
donos crear algoritmos y programas
más expresivos.
•	 Ofrece también una serie de ventajas
productivas a la hora del mantenimien-
to del código, entre ellas encontramos
que éste suele ser más sencillo de com-
prender y por lo tanto, puede extender-
se y/o modificarse con mayor facilidad.
•	 Favorece pequeños bloques de ejecución
•	 Reusabilidad y extensibilidad
Las ventajas de Groovy es que simplifica
mucho la sintaxis y verbosidad de Java has-
ta lo realmente necesario para expresar lo
que queremos hacer.
Swift, es un lenguaje creado por Apple con el
objetivo de sustituir a Objective-C como len-
guaje principal para el desarrollo de aplicacio-
nes, tanto para iOS como para Mac OS X.
Uno de los lenguajes que mayor empujón
le ha dado a la programación funcional es
Scala. Se puede considerar hoy en día que
es el más potente para programación fun-
cional por varios motivos:
•	 Trata de combinar lo mejor de la pro-
gramación funcional con lo mejor de la
orientación a objetos.
•	 Es un lenguaje de programación mul-
ti-paradigma que se ejecuta sobre la
JVM, e incorpora características de pro-
gramación orientada a objetos, funcio-
nal y concurrente. Soporta tanto plata-
formas Java como CLR para .NET.
•	 Es completamente interoperable con
sus plataformas: por ejemplo, puedes
llamar a código Java desde Scala y vi-
ceversa.
•	 Ofrece soporte para programación con-
currente a través de la librería Akka
•	 Los programas en Scala son más cortos
y mantenibles si los comparamos con
sus homólogos en Java. En muchos as-
pectos Scala se parece a otros lengua-
jes como Python aunque incluye una
mayor cantidad de características fun-
cionales de serie, sin recurrir a librerías
de terceros.
Clojure es un lenguaje puro de programa-
ción funcional orientado a la programación
multi-hilo. Proporciona un conjunto de ele-
mentos inmutables como listas, vectores,
conjuntos y mapas donde las funciones son
6 www.coiicv.org
Bit@cora Febrero 2016
Conclusiones
La programación funcional es un paradig-
ma de programación cuyo objetivo es crear
programas más cortos, fáciles de entender
y eficientes sobre hardware multihilo, en
el que se incide especialmente en el uso
de funciones y de estructuras de datos in-
mutables. En principio, podría parecer que
esto no aporta mucho en comparación con
el actual modelo de programación imperati-
va, pero cuando tenemos que trabajar con
procesos y tareas en paralelo que tienen
que interactuar entre sí, esto es una venta-
ja muy notable.
Personalmente creo que es importante
aprender algo de programación funcional
porque de alguna forma cambia la pers-
pectiva que uno tiene de los programas
y sobretodo da una nueva visión de pen-
sar y resolver los problemas. Al fin y al
cabo, la programación funcional es más
una forma de pensamiento y de resolver
problemas que un conjunto particular de
herramientas y lenguajes.

Más contenido relacionado

La actualidad más candente

Lógica De La Programación Y Lenguaje de Pascal
Lógica De La Programación Y Lenguaje de PascalLógica De La Programación Y Lenguaje de Pascal
Lógica De La Programación Y Lenguaje de Pascal
Fernando Galvez
 
Int a la computacion
Int a la computacionInt a la computacion
Int a la computacion
José Leonardo Cámara G.
 
Pascal
PascalPascal
Pascal
Paola Blanco
 
1.14 Abap
1.14 Abap1.14 Abap
1.14 Abapive79
 
Programacion Orientada Objetos
Programacion Orientada ObjetosProgramacion Orientada Objetos
Programacion Orientada Objetosliliandrade
 
Lenguaje de programacion de c++
Lenguaje de programacion de c++Lenguaje de programacion de c++
Lenguaje de programacion de c++
zoymar graterol
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructuradoAgapito26
 
Qué es un api
Qué es un apiQué es un api
Qué es un api
lourdes_rocio
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
kcarbache
 
PROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADAPROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADATeDy j Sanchez
 
Visual net
Visual netVisual net
Visual net
SaraRamrez29
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
Rubixita12
 
Alejandra gomez
Alejandra gomezAlejandra gomez
Alejandra gomezalejitaacg
 
APIs para gente normal
APIs para gente normalAPIs para gente normal
APIs para gente normal
Javier Lafora Rey
 
Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2
GeovannyYungan
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
Santiago Andrade
 
Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y cLeonardo Lopez
 
Un vistazo a java 8
Un vistazo a java 8Un vistazo a java 8
Un vistazo a java 8
Germán González
 

La actualidad más candente (18)

Lógica De La Programación Y Lenguaje de Pascal
Lógica De La Programación Y Lenguaje de PascalLógica De La Programación Y Lenguaje de Pascal
Lógica De La Programación Y Lenguaje de Pascal
 
Int a la computacion
Int a la computacionInt a la computacion
Int a la computacion
 
Pascal
PascalPascal
Pascal
 
1.14 Abap
1.14 Abap1.14 Abap
1.14 Abap
 
Programacion Orientada Objetos
Programacion Orientada ObjetosProgramacion Orientada Objetos
Programacion Orientada Objetos
 
Lenguaje de programacion de c++
Lenguaje de programacion de c++Lenguaje de programacion de c++
Lenguaje de programacion de c++
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructurado
 
Qué es un api
Qué es un apiQué es un api
Qué es un api
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
PROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADAPROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADA
 
Visual net
Visual netVisual net
Visual net
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
 
Alejandra gomez
Alejandra gomezAlejandra gomez
Alejandra gomez
 
APIs para gente normal
APIs para gente normalAPIs para gente normal
APIs para gente normal
 
Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y c
 
Un vistazo a java 8
Un vistazo a java 8Un vistazo a java 8
Un vistazo a java 8
 

Destacado

Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.
Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.
Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.
Jose Manuel Ortega Candel
 
Herramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareHerramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos software
Jose Manuel Ortega Candel
 
Red MAN
Red MANRed MAN
Atos 2 - Gabriela Rocha
Atos 2 - Gabriela RochaAtos 2 - Gabriela Rocha
Atos 2 - Gabriela Rocha
Emerson Barbosa
 
Un passeig pel mon
Un passeig pel mon Un passeig pel mon
Un passeig pel mon
jcarbo24
 
Herramientas para computación distribuida. De Hadoop a Spark
Herramientas para computación distribuida. De Hadoop a SparkHerramientas para computación distribuida. De Hadoop a Spark
Herramientas para computación distribuida. De Hadoop a Spark
Jose Manuel Ortega Candel
 
Radiología Evitable
Radiología EvitableRadiología Evitable
Radiología Evitable
Docència Zbs7
 
Wed. March 22nd Pine River Announcements
Wed. March 22nd Pine River Announcements  Wed. March 22nd Pine River Announcements
Wed. March 22nd Pine River Announcements
Pine River
 
Pwr91syllabus
Pwr91syllabusPwr91syllabus
Pwr91syllabus
PWR91
 
Remedio casero
Remedio caseroRemedio casero
Remedio casero
Luis Figueroa
 
Resumen analitico de access
Resumen analitico de accessResumen analitico de access
Resumen analitico de access
sofia gonzalez medina
 
Como se educa sem violencia
Como se educa sem violenciaComo se educa sem violencia
Como se educa sem violencia
Mô...Moema Anita Conceição
 
Bellos lugares del mundo
Bellos lugares del mundoBellos lugares del mundo
Bellos lugares del mundo
Joan Ruiz
 
Salud y medio ambiente
Salud y medio ambiente Salud y medio ambiente
Salud y medio ambiente
dennis martinez
 
Caos nas relações internacionais contemporâneas
Caos nas relações internacionais contemporâneasCaos nas relações internacionais contemporâneas
Caos nas relações internacionais contemporâneas
Fernando Alcoforado
 
Telling Stories with Data: Class Notes 2
Telling Stories with Data:  Class Notes 2Telling Stories with Data:  Class Notes 2
Telling Stories with Data: Class Notes 2
David Newbury
 
TA Info Lit Workshop 7 22 09
TA Info Lit Workshop 7 22 09TA Info Lit Workshop 7 22 09
TA Info Lit Workshop 7 22 09
Esther Grassian
 
Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)
Anya Stettler
 
How to come up with great startup ideas today.
How to come up with great startup ideas today. How to come up with great startup ideas today.
How to come up with great startup ideas today.
Teboho Khauoe
 
Az email marketing reneszánsza - Tartalommarketing Konferencia 2017
Az email marketing reneszánsza - Tartalommarketing Konferencia 2017Az email marketing reneszánsza - Tartalommarketing Konferencia 2017
Az email marketing reneszánsza - Tartalommarketing Konferencia 2017
Tamás KISS
 

Destacado (20)

Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.
Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.
Microservicios, un nuevo enfoque para arquitecturas orientas a servicios.
 
Herramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos softwareHerramientas de integración continua en proyectos software
Herramientas de integración continua en proyectos software
 
Red MAN
Red MANRed MAN
Red MAN
 
Atos 2 - Gabriela Rocha
Atos 2 - Gabriela RochaAtos 2 - Gabriela Rocha
Atos 2 - Gabriela Rocha
 
Un passeig pel mon
Un passeig pel mon Un passeig pel mon
Un passeig pel mon
 
Herramientas para computación distribuida. De Hadoop a Spark
Herramientas para computación distribuida. De Hadoop a SparkHerramientas para computación distribuida. De Hadoop a Spark
Herramientas para computación distribuida. De Hadoop a Spark
 
Radiología Evitable
Radiología EvitableRadiología Evitable
Radiología Evitable
 
Wed. March 22nd Pine River Announcements
Wed. March 22nd Pine River Announcements  Wed. March 22nd Pine River Announcements
Wed. March 22nd Pine River Announcements
 
Pwr91syllabus
Pwr91syllabusPwr91syllabus
Pwr91syllabus
 
Remedio casero
Remedio caseroRemedio casero
Remedio casero
 
Resumen analitico de access
Resumen analitico de accessResumen analitico de access
Resumen analitico de access
 
Como se educa sem violencia
Como se educa sem violenciaComo se educa sem violencia
Como se educa sem violencia
 
Bellos lugares del mundo
Bellos lugares del mundoBellos lugares del mundo
Bellos lugares del mundo
 
Salud y medio ambiente
Salud y medio ambiente Salud y medio ambiente
Salud y medio ambiente
 
Caos nas relações internacionais contemporâneas
Caos nas relações internacionais contemporâneasCaos nas relações internacionais contemporâneas
Caos nas relações internacionais contemporâneas
 
Telling Stories with Data: Class Notes 2
Telling Stories with Data:  Class Notes 2Telling Stories with Data:  Class Notes 2
Telling Stories with Data: Class Notes 2
 
TA Info Lit Workshop 7 22 09
TA Info Lit Workshop 7 22 09TA Info Lit Workshop 7 22 09
TA Info Lit Workshop 7 22 09
 
Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)Documenting APIs: Sample Code and More (with many pictures of cats)
Documenting APIs: Sample Code and More (with many pictures of cats)
 
How to come up with great startup ideas today.
How to come up with great startup ideas today. How to come up with great startup ideas today.
How to come up with great startup ideas today.
 
Az email marketing reneszánsza - Tartalommarketing Konferencia 2017
Az email marketing reneszánsza - Tartalommarketing Konferencia 2017Az email marketing reneszánsza - Tartalommarketing Konferencia 2017
Az email marketing reneszánsza - Tartalommarketing Konferencia 2017
 

Similar a Programación funcional, una nueva forma de resolver problemas.

Programacion Funcional
Programacion FuncionalProgramacion Funcional
Programacion Funcional
Facultad de Ciencias y Sistemas
 
Paper programacion funcional bondades
Paper programacion funcional  bondadesPaper programacion funcional  bondades
Paper programacion funcional bondades
Santiago Casallas
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prologPedro Vera
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Marco Antonio Ordoñez Valverde
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaglfloresgilberto
 
Colegio particular san juan oracle y php
Colegio particular san juan oracle y phpColegio particular san juan oracle y php
Colegio particular san juan oracle y php
MAGGEYPEREZ
 
Paradigma orientado a objetos,
Paradigma orientado a objetos,Paradigma orientado a objetos,
Paradigma orientado a objetos,iestpaht
 
POOI- Unidad 1.pdf
POOI- Unidad 1.pdfPOOI- Unidad 1.pdf
POOI- Unidad 1.pdf
WillGuzman3
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
Rafael Lobo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosFabricio Macias
 
Sanchez pamela y su trabajo escolar final
Sanchez pamela y su trabajo escolar finalSanchez pamela y su trabajo escolar final
Sanchez pamela y su trabajo escolar final
ManuelDeJesusRodrigu6
 
Paradigmas de Programación
Paradigmas de ProgramaciónParadigmas de Programación
Paradigmas de Programación
Jose Sanchez
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructuradawinny_arias
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructuradaKurt_williams
 
Diferencias entre php y oracle
Diferencias entre php y oracleDiferencias entre php y oracle
Diferencias entre php y oracle
Erick Mancero
 
Tutorial basico prolog
Tutorial basico prologTutorial basico prolog
Tutorial basico prologAnderipe Pinto
 
Principales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacionPrincipales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacion
Marco Muñoz
 
Poa programacion orientada_a_aspectos
Poa programacion orientada_a_aspectosPoa programacion orientada_a_aspectos
Poa programacion orientada_a_aspectos
Paulo Galarza
 
Programación
ProgramaciónProgramación
Programación
Tensor
 
Introducción a JAVA
Introducción a JAVAIntroducción a JAVA
Introducción a JAVAjohitafresh
 

Similar a Programación funcional, una nueva forma de resolver problemas. (20)

Programacion Funcional
Programacion FuncionalProgramacion Funcional
Programacion Funcional
 
Paper programacion funcional bondades
Paper programacion funcional  bondadesPaper programacion funcional  bondades
Paper programacion funcional bondades
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prolog
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Colegio particular san juan oracle y php
Colegio particular san juan oracle y phpColegio particular san juan oracle y php
Colegio particular san juan oracle y php
 
Paradigma orientado a objetos,
Paradigma orientado a objetos,Paradigma orientado a objetos,
Paradigma orientado a objetos,
 
POOI- Unidad 1.pdf
POOI- Unidad 1.pdfPOOI- Unidad 1.pdf
POOI- Unidad 1.pdf
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Sanchez pamela y su trabajo escolar final
Sanchez pamela y su trabajo escolar finalSanchez pamela y su trabajo escolar final
Sanchez pamela y su trabajo escolar final
 
Paradigmas de Programación
Paradigmas de ProgramaciónParadigmas de Programación
Paradigmas de Programación
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructurada
 
Diferencias entre php y oracle
Diferencias entre php y oracleDiferencias entre php y oracle
Diferencias entre php y oracle
 
Tutorial basico prolog
Tutorial basico prologTutorial basico prolog
Tutorial basico prolog
 
Principales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacionPrincipales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacion
 
Poa programacion orientada_a_aspectos
Poa programacion orientada_a_aspectosPoa programacion orientada_a_aspectos
Poa programacion orientada_a_aspectos
 
Programación
ProgramaciónProgramación
Programación
 
Introducción a JAVA
Introducción a JAVAIntroducción a JAVA
Introducción a JAVA
 

Más de Jose Manuel Ortega Candel

Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
Jose Manuel Ortega Candel
 
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfAsegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Jose Manuel Ortega Candel
 
PyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdfPyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdf
Jose Manuel Ortega Candel
 
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
Jose Manuel Ortega Candel
 
Evolution of security strategies in K8s environments- All day devops
Evolution of security strategies in K8s environments- All day devops Evolution of security strategies in K8s environments- All day devops
Evolution of security strategies in K8s environments- All day devops
Jose Manuel Ortega Candel
 
Evolution of security strategies in K8s environments.pdf
Evolution of security strategies in K8s environments.pdfEvolution of security strategies in K8s environments.pdf
Evolution of security strategies in K8s environments.pdf
Jose Manuel Ortega Candel
 
Implementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfImplementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdf
Jose Manuel Ortega Candel
 
Computación distribuida usando Python
Computación distribuida usando PythonComputación distribuida usando Python
Computación distribuida usando Python
Jose Manuel Ortega Candel
 
Seguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloudSeguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloud
Jose Manuel Ortega Candel
 
Construyendo arquitecturas zero trust sobre entornos cloud
Construyendo arquitecturas zero trust sobre entornos cloud Construyendo arquitecturas zero trust sobre entornos cloud
Construyendo arquitecturas zero trust sobre entornos cloud
Jose Manuel Ortega Candel
 
Tips and tricks for data science projects with Python
Tips and tricks for data science projects with Python Tips and tricks for data science projects with Python
Tips and tricks for data science projects with Python
Jose Manuel Ortega Candel
 
Sharing secret keys in Docker containers and K8s
Sharing secret keys in Docker containers and K8sSharing secret keys in Docker containers and K8s
Sharing secret keys in Docker containers and K8s
Jose Manuel Ortega Candel
 
Implementing cert-manager in K8s
Implementing cert-manager in K8sImplementing cert-manager in K8s
Implementing cert-manager in K8s
Jose Manuel Ortega Candel
 
Python para equipos de ciberseguridad(pycones)
Python para equipos de ciberseguridad(pycones)Python para equipos de ciberseguridad(pycones)
Python para equipos de ciberseguridad(pycones)
Jose Manuel Ortega Candel
 
Python para equipos de ciberseguridad
Python para equipos de ciberseguridad Python para equipos de ciberseguridad
Python para equipos de ciberseguridad
Jose Manuel Ortega Candel
 
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodanShodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Jose Manuel Ortega Candel
 
ELK para analistas de seguridad y equipos Blue Team
ELK para analistas de seguridad y equipos Blue TeamELK para analistas de seguridad y equipos Blue Team
ELK para analistas de seguridad y equipos Blue Team
Jose Manuel Ortega Candel
 
Monitoring and managing Containers using Open Source tools
Monitoring and managing Containers using Open Source toolsMonitoring and managing Containers using Open Source tools
Monitoring and managing Containers using Open Source tools
Jose Manuel Ortega Candel
 
Python Memory Management 101(Europython)
Python Memory Management 101(Europython)Python Memory Management 101(Europython)
Python Memory Management 101(Europython)
Jose Manuel Ortega Candel
 
SecDevOps containers
SecDevOps containersSecDevOps containers
SecDevOps containers
Jose Manuel Ortega Candel
 

Más de Jose Manuel Ortega Candel (20)

Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
Herramientas de benchmarks para evaluar el rendimiento en máquinas y aplicaci...
 
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdfAsegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
Asegurando tus APIs Explorando el OWASP Top 10 de Seguridad en APIs.pdf
 
PyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdfPyGoat Analizando la seguridad en aplicaciones Django.pdf
PyGoat Analizando la seguridad en aplicaciones Django.pdf
 
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
Ciberseguridad en Blockchain y Smart Contracts: Explorando los Desafíos y Sol...
 
Evolution of security strategies in K8s environments- All day devops
Evolution of security strategies in K8s environments- All day devops Evolution of security strategies in K8s environments- All day devops
Evolution of security strategies in K8s environments- All day devops
 
Evolution of security strategies in K8s environments.pdf
Evolution of security strategies in K8s environments.pdfEvolution of security strategies in K8s environments.pdf
Evolution of security strategies in K8s environments.pdf
 
Implementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfImplementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdf
 
Computación distribuida usando Python
Computación distribuida usando PythonComputación distribuida usando Python
Computación distribuida usando Python
 
Seguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloudSeguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloud
 
Construyendo arquitecturas zero trust sobre entornos cloud
Construyendo arquitecturas zero trust sobre entornos cloud Construyendo arquitecturas zero trust sobre entornos cloud
Construyendo arquitecturas zero trust sobre entornos cloud
 
Tips and tricks for data science projects with Python
Tips and tricks for data science projects with Python Tips and tricks for data science projects with Python
Tips and tricks for data science projects with Python
 
Sharing secret keys in Docker containers and K8s
Sharing secret keys in Docker containers and K8sSharing secret keys in Docker containers and K8s
Sharing secret keys in Docker containers and K8s
 
Implementing cert-manager in K8s
Implementing cert-manager in K8sImplementing cert-manager in K8s
Implementing cert-manager in K8s
 
Python para equipos de ciberseguridad(pycones)
Python para equipos de ciberseguridad(pycones)Python para equipos de ciberseguridad(pycones)
Python para equipos de ciberseguridad(pycones)
 
Python para equipos de ciberseguridad
Python para equipos de ciberseguridad Python para equipos de ciberseguridad
Python para equipos de ciberseguridad
 
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodanShodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
 
ELK para analistas de seguridad y equipos Blue Team
ELK para analistas de seguridad y equipos Blue TeamELK para analistas de seguridad y equipos Blue Team
ELK para analistas de seguridad y equipos Blue Team
 
Monitoring and managing Containers using Open Source tools
Monitoring and managing Containers using Open Source toolsMonitoring and managing Containers using Open Source tools
Monitoring and managing Containers using Open Source tools
 
Python Memory Management 101(Europython)
Python Memory Management 101(Europython)Python Memory Management 101(Europython)
Python Memory Management 101(Europython)
 
SecDevOps containers
SecDevOps containersSecDevOps containers
SecDevOps containers
 

Último

trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
evelinglilibethpeafi
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
aljitagallego
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
tamarita881
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
CesarPazosQuispe
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
durangense277
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
arriagaanggie50
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
julio05042006
 

Último (20)

trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
actividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañerosactividad 2 tecnologia (3).pdf junto con mis compañeros
actividad 2 tecnologia (3).pdf junto con mis compañeros
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
SISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsxSISTESIS RETO4 Grupo4 co-creadores .ppsx
SISTESIS RETO4 Grupo4 co-creadores .ppsx
 
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
Semana 10_MATRIZ IPER_UPN_ADM_03.06.2024
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGATAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
TAREA #6 - RECURSOS INCLUSIVOS POR ANGGIE ARRIAGA
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
 

Programación funcional, una nueva forma de resolver problemas.

  • 1. 4 www.coiicv.org Bit@cora Febrero 2016 La programación funcional es un paradigma de programación que trata la computación como la evaluación de funciones donde las variables no tienen estado y son inmuta- bles. Básicamente, consiste en programar con funciones puras, es decir funciones que reciben valores de entrada, devuelven valo- res de salida y no tienen efectos colaterales. A diferencia de otros paradigmas, la progra- mación funcional elige prescindir de datos de estado o mutables para centrarse en la resolución de problemas mediante mecanis- mos puramente matemáticos. Este concepto choca principalmente con las bases de los paradigmas imperativos, ya que éstos se basan en la aplicación de dichos estados y de sus cambios para la automatización a la hora de resolver una operación. El paradigma funcional enfatiza la utilización de funciones puras o de orden superior, es decir, funciones que no tengan efectos se- cundarios que no manejan datos mutables o de estado. Una de las buenas prácticas que hace al estilo funcional es siempre tratar de evitar los efectos secundarios, es decir, evi- tar que las funciones modifiquen los valores de sus parámetros. Lenguajes funcionales Entre los lenguajes que implementan la programación funcional podemos destacar: Java 8, Groovy, Swift, Scala, Clojure. Uno de los nuevos componentes más im- portantes de la versión 8 de Java es el so- porte para el uso de expresiones lambda mediante funciones anónimas o closures. El objetivo de estas expresiones es hacer que Java como lenguaje orientado a objetos ad- quiera también capacidades funcionales. Una de las características más importantes de las expresiones lambda es que permite pasar funciones como parámetros de otras funciones. Algunas de las mejoras más in- teresantes son la posibilidad de dejar de escribir clases anónimas y la simplificación de iteraciones y operaciones sobre listas y colecciones de datos. En Java 8 podemos destacar también el Stream API, que presenta algunas carac- terísticas novedosas como la creación de streams que permiten el procesamiento de datos en paralelo mejorando la performan- ce de una manera simple y transparente. Groovy es un lenguaje orientado a objetos, dinámico y 100% interoperable con Java. Programación funcional, una nueva forma de resolver problemas. José Manuel Ortega Candel Centers Technician de Everis. @jmortegac www.linkedin.com/in/jmortega1
  • 2. 5www.coiicv.org Bit@cora Enero 2016 elementos de primer nivel o de orden supe- rior y se enfatiza la iteración recursiva en lugar de los bucles con variables que cam- bian de estado. Existen otros lenguajes que no son pura- mente funcionales, pero con los cuales se pueden experimentar técnicas de progra- mación funcional como JavaScript o Python. Ambos son lenguajes interpretados multi- paradigma, con tipos dinámicos, que per- miten pasar funciones como parámetro. Ventajas que aporta la programación funcional: • Los programas escritos en un estilo fun- cional son más fáciles de testear y de- purar. • Al utilizar programación funcional las líneas de código se reducen y nues- tro programa es mucho más simple de comprender. • Por su característica modular, facilita la computación concurrente y paralela; permitiéndonos obtener muchas de las ventajas de los procesadores multihilo. • El estilo funcional trabaja muy bien con grande colecciones de datos, permitién- donos crear algoritmos y programas más expresivos. • Ofrece también una serie de ventajas productivas a la hora del mantenimien- to del código, entre ellas encontramos que éste suele ser más sencillo de com- prender y por lo tanto, puede extender- se y/o modificarse con mayor facilidad. • Favorece pequeños bloques de ejecución • Reusabilidad y extensibilidad Las ventajas de Groovy es que simplifica mucho la sintaxis y verbosidad de Java has- ta lo realmente necesario para expresar lo que queremos hacer. Swift, es un lenguaje creado por Apple con el objetivo de sustituir a Objective-C como len- guaje principal para el desarrollo de aplicacio- nes, tanto para iOS como para Mac OS X. Uno de los lenguajes que mayor empujón le ha dado a la programación funcional es Scala. Se puede considerar hoy en día que es el más potente para programación fun- cional por varios motivos: • Trata de combinar lo mejor de la pro- gramación funcional con lo mejor de la orientación a objetos. • Es un lenguaje de programación mul- ti-paradigma que se ejecuta sobre la JVM, e incorpora características de pro- gramación orientada a objetos, funcio- nal y concurrente. Soporta tanto plata- formas Java como CLR para .NET. • Es completamente interoperable con sus plataformas: por ejemplo, puedes llamar a código Java desde Scala y vi- ceversa. • Ofrece soporte para programación con- currente a través de la librería Akka • Los programas en Scala son más cortos y mantenibles si los comparamos con sus homólogos en Java. En muchos as- pectos Scala se parece a otros lengua- jes como Python aunque incluye una mayor cantidad de características fun- cionales de serie, sin recurrir a librerías de terceros. Clojure es un lenguaje puro de programa- ción funcional orientado a la programación multi-hilo. Proporciona un conjunto de ele- mentos inmutables como listas, vectores, conjuntos y mapas donde las funciones son
  • 3. 6 www.coiicv.org Bit@cora Febrero 2016 Conclusiones La programación funcional es un paradig- ma de programación cuyo objetivo es crear programas más cortos, fáciles de entender y eficientes sobre hardware multihilo, en el que se incide especialmente en el uso de funciones y de estructuras de datos in- mutables. En principio, podría parecer que esto no aporta mucho en comparación con el actual modelo de programación imperati- va, pero cuando tenemos que trabajar con procesos y tareas en paralelo que tienen que interactuar entre sí, esto es una venta- ja muy notable. Personalmente creo que es importante aprender algo de programación funcional porque de alguna forma cambia la pers- pectiva que uno tiene de los programas y sobretodo da una nueva visión de pen- sar y resolver los problemas. Al fin y al cabo, la programación funcional es más una forma de pensamiento y de resolver problemas que un conjunto particular de herramientas y lenguajes.