SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
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 PascalFernando Galvez
 
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
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructuradakcarbache
 
PROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADAPROGRAMACION ESTRUCTURADA
PROGRAMACION ESTRUCTURADATeDy j Sanchez
 
Programacin estructurada
Programacin estructuradaProgramacin estructurada
Programacin estructuradaRubixita12
 
Alejandra gomez
Alejandra gomezAlejandra gomez
Alejandra gomezalejitaacg
 
Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2Yungan geovanny 6_s_ti_2
Yungan geovanny 6_s_ti_2GeovannyYungan
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintácticoSantiago 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
 

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 softwareJose Manuel Ortega Candel
 
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 SparkJose Manuel Ortega Candel
 
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
Pwr91syllabusPWR91
 
Bellos lugares del mundo
Bellos lugares del mundoBellos lugares del mundo
Bellos lugares del mundoJoan Ruiz
 
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âneasFernando 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 2David 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 09Esther 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 2017Tamá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.

Paper programacion funcional bondades
Paper programacion funcional  bondadesPaper programacion funcional  bondades
Paper programacion funcional bondadesSantiago 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 phpMAGGEYPEREZ
 
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.pdfWillGuzman3
 
Framework Laravel
Framework LaravelFramework Laravel
Framework LaravelRafael Lobo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetosFabricio Macias
 
Paradigmas de Programación
Paradigmas de ProgramaciónParadigmas de Programación
Paradigmas de ProgramaciónJose 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 oracleErick 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 programacionMarco Muñoz
 
Poa programacion orientada_a_aspectos
Poa programacion orientada_a_aspectosPoa programacion orientada_a_aspectos
Poa programacion orientada_a_aspectosPaulo Galarza
 
Programación
ProgramaciónProgramación
ProgramaciónTensor
 
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
 
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
 
Programacion orientada a objetos Java
Programacion orientada a objetos JavaProgramacion orientada a objetos Java
Programacion orientada a objetos Java
 

Más de 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.pdfJose 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.pdfJose 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.pdfJose Manuel Ortega Candel
 
Implementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfImplementing Observability for Kubernetes.pdf
Implementing Observability for Kubernetes.pdfJose 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 cloudJose 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 K8sJose 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
 
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 shodanJose 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 TeamJose 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 toolsJose Manuel Ortega Candel
 
Python memory managment. Deeping in Garbage collector
Python memory managment. Deeping in Garbage collectorPython memory managment. Deeping in Garbage collector
Python memory managment. Deeping in Garbage collectorJose Manuel Ortega Candel
 

Más de Jose Manuel Ortega Candel (20)

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
 
Python memory managment. Deeping in Garbage collector
Python memory managment. Deeping in Garbage collectorPython memory managment. Deeping in Garbage collector
Python memory managment. Deeping in Garbage collector
 

Último

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 

Último (20)

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 

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.