We are specialised in Scala, its functional programming ecosystem and functionally-enhanced digital transformation processes.
No matter how hard you try with IoT, Mobile, Cloud and Big data technologies, if the functional requirements of your business processes are not properly handled, you'll end up with a big digital transformation... mess. Boost your digital transformation processes through functional programming! We can guide you through:
Functional programming is not self-contained: if we want our applications to do something useful, they must contain something more besides pure functions! We can show you to:
Functional programming is not so far away from conventional object-oriented programming: Just replace your plain interfaces with type classes! We have tried successfully this strategy many times already in our functional programming courses.
We founded and organize the Madrid Scala Meetup (affectionately known as #ScalaMAD) and regularly contribute to the Scala community with blog posts, meetup and conference talks, and open source projects. Check out our github account!
We are experts in process analysis, language design, functional programming, and Scala. A great mix of expertise at your fingertips!
Do you want agile, efficient and optimised business processes? Think of publishing them in a digital format as a software package, i.e. not as a PDF document, but as a program! To do this properly, these business programs must be completely decoupled from IT infrastructure details. We can help you to achieve this using functional programming techniques!
Contact us and tell us about the business process you deal with »
The advantages of functional programming (FP) make it an appealing approach to software development. But when setting up a team of functional programmers, they need with them an expert to guide them in the transition from conventional object-oriented programming to FP, and explain them the major techniques and design patterns involved. In sum, we can show you how to make the most of Play framework, Akka, Spark, and any other library or framework of the Scala ecosystem, using sound and proven functional programming techniques.
We have a solid expertise in Scala, its ecosystem of libraries and tools, and functional programming. You can benefit from our expertise in any of the courses we offer:
Contact us for prices and calendar »
We will not argue that the Scala programming language is an easy one to delve into. Therefore, we want to provide you with the fundamental means to start this journey. This one-day course offers you an introduction to Scala: where it comes from, which programming paradigms it supports, and which are its major technical features. We do not guarantee that this language is for you, but we are absolutely sure that you will become a better programmer by learning it.
You have heard of Scala, and the myriads of frameworks and tools based on Scala which are all the rage these days (Spark, Akka, Play, and so forth), but do not have the time to delve into the Scala jungle yourself. This course will give you a gentle and smooth introduction to it. Familiarity with conventional object-oriented languages is assumed.
The course is structured around the major programming paradigms that the Scala language supports, namely the object-oriented, functional and generic paradigms. Besides, we will take a look at the syntactic sugar tricks that make reading Scala encodings a tough task for newcomers. The Scala collection library will be used throughout the course as a source of inspiring examples.
Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup.
Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.
El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.
Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cinco años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde es ponente habitual.
The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. Last, note that this is a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).
The course is divided into four major blocks. The first one introduces Scala and functional programming, and why they really matter. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, monadic structures for different purposes in the second one, and type classes in the third one.
The course is coordinated by Juan Manuel Serrano, and taught by Alfonso Roa Redondo an Habla Computing specialists.
Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last eight years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scalaz, Cats, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Alfonso Roa is a Functional Arquitect in Habla Computing. He has been using Scala for the last five years in real-world applications for the retail sector, and has extensive experience in consultancy projects with spark, akka and other frameworks of the Scala ecosystem. He is a co-organizer of the Madrid Scala Meetup group.
Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).
El curso está dividido en cuatro bloques principales. En el primero se introduce el lenguaje Scala, qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el segundo bloque se estudiará en profundidad las funciones de orden superior, estructuras monadicas para distintos usos en el tercero y en el cuarto las type classes.
El curso será coordinado por Juan Manuel Serano e impartido por Alfonso Roa Redondo.
Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace más de ocho años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
Alfonso Roa es aqruitecto funcinal en Habla Computing. Lleva usando Scala los últimos 5 años en aplicaciones en dominios variados como retal, paquetería, y obras publicas. Tiene amplica experiencia en consultoría con proyectos con Spark, Akka y más frameworks del ecosistema de Scala. También es co-organizador del Meetup de Scala de Madrid (ScalaMAD)
This course provides a comprehensive introduction to three programming styles endorsed by functional programming: datatype generic, applicative and monadic programming. We also delve into the concept of algebra and compare the two major ways of representing algebras in functional programming: either as object-algebras, using type classes, or as F-algebras, using algebraic data types, natural transformations, and so forth. Throughout the course, we use Scala and its awesome ecosystem of frameworks and libraries for functional programming. In particular, we built upon the generic programming library shapeless, and the type class libraries scalaz and cats. We also make ocassional reference to property-based testing and the Scalacheck library. For each programming style, we describe the kinds of problems they are intended to solve, their constituent software abstractions and their implementation by different libraries.
The course is coordinated by Juan Manuel Serrano. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last six years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scalaz, Cats, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Este curso ofrece una introducción avanzada a tres estilos de programación soportados y promovidos por la programación funcional: la programación genérica, la programación aplicativa y la programación monádica. El curso también introduce el papel que juegan las álgebras en la programación funcional, y los dos estilos de programación algebraica principales: basados en type classes y basados en F-algebras, transformaciones naturales, tipos algebraicos de datos generalizados, etc. Durante el curso utilizaremos Scala y su fantástico ecosistema de librerías para la programación funcional, concretamente, shapeless y las librerías de type classes scalaz y cats. Con una menor relevancia, en el curso también se hará mención a la librería de pruebas Scalacheck. Para cada uno de estos tres estilos de programación, se describirán los problemas más relevantes para los que están pensados, sus abstracciones constituyentes y el soporte que ofrecen para ellos las librerías del ecosistema de Scala.
El curso será coordinado por Juan Manuel Serano. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace seis años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
Este curso ofrece una introducción en profundidad a la programación distribuida con Apache Spark en Scala. El curso se centra en dotar al alumno de conocimientos sobre los fundamentos del modelo de computación de Spark, ilustrándolo a través de numerosos ejemplos interactivos. Además se explicará cómo analizar la eficiencia de programas utilizando las herramientas que Spark pone a nuestra disposición, como SparkUI, y se explicarán las técnicas que permiten obtener el máximo beneficio de las optimizaciones que Spark ofrece a los programadores a través de ejercicios prácticos de patrones y antipatrones.
El curso será impartido por Alfonso Roa Redondo y Mikel San Vicente Maeztu. Alfonso y Mikel son arquitectos funcionales en Habla Computing. Llevan usando Scala desde hace más de 5 años en aplicaciones en dominios variados como financiero, predictive marketing, retail, paquetería, obras publicas, etc. Tienen amplia experiencia en consultoría con proyectos con Spark, Akka y otros frameworks del ecosistema de Scala. Alfonso es co-organizador del Meetup de Scala de Madrid (ScalaMad)
This course is a deep introduction into distributed programming with Apache Spark and Scala. It's focused in learning the fundamentals of Apache Spark computational model, the course contents are explained through interactive examples. It will also provide insights on how to analyze the program's performance using SparkUI and how to optimize it through practical exercises.
The instructors are Alfonso Roa Redondo y Mikel San Vicente Maeztu. Alfonso and Mikel are functional programming architects at Habla Computing. They have been using Scala for more than 5 years in multiple domains like fintech, predictive marketing, retail, logistics, civil engineering, etc... They also have extensive experience in consultancy with Akka, Spark and other Scala ecosystem technologies. Alfonso is a co-organizer of Madrid's Scala Meetup (ScalaMad)
This course provides a comprehensive introduction to three programming styles endorsed by functional programming: datatype generic, applicative and monadic programming. To this end, we use Scala and its awesome ecosystem of frameworks and libraries for functional programming. In particular, we built upon the generic programming library shapeless, and the type class libraries scalaz and cats. We also make ocassional reference to property-based testing and the Scalacheck library. For each programming style, we describe the kinds of problems they are intended to solve, their constituent software abstractions and their implementation by different libraries.
The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Este curso ofrece una introducción avanzada a tres estilos de programación soportados y promovidos por la programación funcional: la programación genérica, la programación aplicativa y la programación monádica. Para ello, utilizaremos Scala y su fantástico ecosistema de librerías para la programación funcional, concretamente, shapeless y las librerías de type classes scalaz y cats. Con una menor relevancia, en el curso también se hará mención a la librería de pruebas Scalacheck. Para cada uno de estos tres estilos de programación, se describirán los problemas más relevantes para los que están pensados, sus abstracciones constituyentes y el soporte que ofrecen para ellos las librerías del ecosistema de Scala.
El curso será coordinado por Juan Manuel Serano, e impartido por él y Javier Fuentes, programador y formador senior de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
We will not argue that the Scala programming language is an easy one to delve into. Therefore, we want to provide you with the fundamental means to start this journey. This one-day course offers you an introduction to Scala: where it comes from, which programming paradigms it supports, and which are its major technical features. We do not guarantee that this language is for you, but we are absolutely sure that you will become a better programmer by learning it.
You have heard of Scala, and the myriads of frameworks and tools based on Scala which are all the rage these days (Spark, Akka, Play, and so forth), but do not have the time to delve into the Scala jungle yourself. This course will give you a gentle and smooth introduction to it. Familiarity with conventional object-oriented languages is assumed.
The course is structured around the major programming paradigms that the Scala language supports, namely the object-oriented, functional and generic paradigms. Besides, we will take a look at the syntactic sugar tricks that make reading Scala encodings a tough task for newcomers. The Scala collection library will be used throughout the course as a source of inspiring examples.
Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup.
Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.
El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.
Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cinco años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde es ponente habitual.
The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. To illustrate these functional techniques, we will pay special attention to the Spark library. Last, note that this is mostly a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).
The course is divided into four major blocks. The first one introduces what is functional programming and why it really matters. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, type classes in the second one, and pure functions in the third one. The last fourth module of the course is entirely devoted to Spark. We will see how Spark exemplifies the functional abstractions introduced throughout the course (higher-order functions, pure functions, etc.) and will illustrate how we can write complex data transformation programs in a purely functional style.
Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Para ilustrar estos conceptos se prestará una especial atención al framework de Spark. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).
El curso está dividido en cuatro bloques principales, de cuatro horas de duración cada uno aproximadamente. En el primero se introduce qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el primer bloque se estudiará en profundidad las funciones de orden superior, en el segundo las type classes y en el tercero la purificación de funciones y segregación de efectos de lado. Por último, en el cuarto bloque nos centraremos exclusivamente en Spark y en cómo se aplican en su arquitectura los conceptos anteriores. Desde un punto de vista práctico, veremos cómo escribir complejos programas de transformación de datos en un estilo puramente funcional.
Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. To illustrate these functional techniques, we will pay special attention to the Spark library. Last, note that this is mostly a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).
The course is divided into four major blocks. The first one introduces what is functional programming and why it really matters. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, type classes in the second one, and pure functions in the third one. The last fourth module of the course is entirely devoted to Spark. We will see how Spark exemplifies the functional abstractions introduced throughout the course (higher-order functions, pure functions, etc.) and will illustrate how we can write complex data transformation programs in a purely functional style.
Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Para ilustrar estos conceptos se prestará una especial atención al framework de Spark. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).
El curso está dividido en cuatro bloques principales, de cuatro horas de duración cada uno aproximadamente. En el primero se introduce qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el primer bloque se estudiará en profundidad las funciones de orden superior, en el segundo las type classes y en el tercero la purificación de funciones y segregación de efectos de lado. Por último, en el cuarto bloque nos centraremos exclusivamente en Spark y en cómo se aplican en su arquitectura los conceptos anteriores. Desde un punto de vista práctico, veremos cómo escribir complejos programas de transformación de datos en un estilo puramente funcional.
Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.
El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.
Javier es Ingeniero Superior en Informática. Trabaja en Habla Computing desde hace cuatro años como programador de Scala para aplicaciones del sector bancario y el diseño de DLSs. Actualmente, Javier es coordinador del meetup de Scala en Madrid, donde es ponente habitual.
El objetivo de este curso es introducir e ilustrar con ejemplos sencillos pero reales, el concepto de arquitectura funcional, así como todas las técnicas necesarias para implantar con éxito dicha arquitectura: funciones de orden superior, type classes, funciones puras, mónadas, intérpretes, etc. Todo ello utilizando el lenguaje Scala y los mecanismos que proporciona para la programación funcional: implícitos, higher-kind generics, for-comprehensions, etc. En el curso se hará también hincapié en comparar la arquitectura funcional propuesta con la solución "orientada a objetos" más convencional, de tal manera que las similitudes entre ambas aproximaciones (que haberlas, haylas), así como las diferencias y las ventajas de la aproximación puramente funcional, en términos de reusabilidad, facilidad de pruebas y mantenibilidad, especialmente, se vean claramente expuestas. Con esta comparación también se pretende mostrar cómo se pueden introducir gradualmente las técnicas funcionales, sin cambios disruptivos, en proyectos de desarrollo reales y en el “mindset” de los programadores.
El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
This course provides a comprehensive introduction to three programming styles endorsed by functional programming: datatype generic, applicative and monadic programming. To this end, we use Scala and its awesome ecosystem of frameworks and libraries for functional programming. In particular, we built upon the generic programming library shapeless, and the type class libraries scalaz and cats. We also make ocassional reference to property-based testing and the Scalacheck library. For each programming style, we describe the kinds of problems they are intended to solve, their constituent software abstractions and their implementation by different libraries.
The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Este curso ofrece una introducción avanzada a tres estilos de programación soportados y promovidos por la programación funcional: la programación genérica, la programación aplicativa y la programación monádica. Para ello, utilizaremos Scala y su fantástico ecosistema de librerías para la programación funcional, concretamente, shapeless y las librerías de type classes scalaz y cats. Con una menor relevancia, en el curso también se hará mención a la librería de pruebas Scalacheck. Para cada uno de estos tres estilos de programación, se describirán los problemas más relevantes para los que están pensados, sus abstracciones constituyentes y el soporte que ofrecen para ellos las librerías del ecosistema de Scala.
El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
El objetivo de este curso es introducir e ilustrar con ejemplos sencillos pero reales, el concepto de arquitectura funcional, así como todas las técnicas necesarias para implantar con éxito dicha arquitectura: funciones de orden superior, type classes, funciones puras, mónadas, intérpretes, etc. Todo ello utilizando el lenguaje Scala y los mecanismos que proporciona para la programación funcional: implícitos, higher-kind generics, for-comprehensions, etc. En el curso se hará también hincapié en comparar la arquitectura funcional propuesta con la solución "orientada a objetos" más convencional, de tal manera que las similitudes entre ambas aproximaciones (que haberlas, haylas), así como las diferencias y las ventajas de la aproximación puramente funcional, en términos de reusabilidad, facilidad de pruebas y mantenibilidad, especialmente, se vean claramente expuestas. Con esta comparación también se pretende mostrar cómo se pueden introducir gradualmente las técnicas funcionales, sin cambios disruptivos, en proyectos de desarrollo reales y en el “mindset” de los programadores.
El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
El objetivo de este curso es introducir e ilustrar con ejemplos sencillos pero reales, el concepto de arquitectura funcional, así como todas las técnicas necesarias para implantar con éxito dicha arquitectura: funciones de orden superior, type classes, funciones puras, mónadas, intérpretes, etc. Todo ello utilizando el lenguaje Scala y los mecanismos que proporciona para la programación funcional: implícitos, higher-kind generics, for-comprehensions, etc. En el curso se hará también hincapié en comparar la arquitectura funcional propuesta con la solución "orientada a objetos" más convencional, de tal manera que las similitudes entre ambas aproximaciones (que haberlas, haylas), así como las diferencias y las ventajas de la aproximación puramente funcional, en términos de reusabilidad, facilidad de pruebas y mantenibilidad, especialmente, se vean claramente expuestas. Con esta comparación también se pretende mostrar cómo se pueden introducir gradualmente las técnicas funcionales, sin cambios disruptivos, en proyectos de desarrollo reales y en el “mindset” de los programadores.
El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
This course provides a comprehensive introduction to some of the essential patterns of functional programming, and to their implementation in the Scalaz library. Its major goal is to explain when these patterns can be applied, and how to use their Scalaz implementation so as to avoid repetition and boilerplate, enhance conciseness, and exploit the wealth of utilities already implemented there. The course covers the following patterns: monoids, monads, functors, applicative functors, monad transformers, free monads, coproducts and kleislis. Explanations of these patterns will also rely on the ScalaCheck library, in such a way that this course also serves as an introduction to this library and, in general, to property-based testing - an indispensable ally of purely functional programming.
The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
We will not argue that the Scala programming language is an easy one to delve into. Therefore, we want to provide you with the fundamental means to start this journey. This one-day course offers you an introduction to Scala: where it comes from, which programming paradigms it supports, and which are its major technical features. We do not guarantee that this language is for you, but we are absolutely sure that you will become a better programmer by learning it.
You have heard of Scala, and the myriads of frameworks and tools based on Scala which are all the rage these days (Spark, Akka, Play, and so forth), but do not have the time to delve into the Scala jungle yourself. This course will give you a gentle and smooth introduction to it. Familiarity with conventional object-oriented languages is assumed.
The course is structured around the major programming paradigms that the Scala language supports, namely the object-oriented, functional and generic paradigms. Besides, we will take a look at the syntactic sugar tricks that make reading Scala encodings a tough task for newcomers. The Scala collection library will be used throughout the course as a source of inspiring examples.
Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup. He has also teached a course on functional programming in the School of Informatics of the URJC.
Sabemos que adentrarse en el lenguaje de programación Scala no es una tarea trivial. Con este curso, se pretende que el alumno adquiera las nociones básicas para poder comenzar este reto con buen pie. Se ofrecerá una introducción al lenguaje: de dónde viene, qué paradigmas de programación soporta y cuáles son las características principales que lo hacen tan especial. No podemos garantizar que este lenguaje esté hecho a medida para ti, pero sí que podemos asegurar que aprender Scala te convertirá en mejor programador.
El curso se estructura en torno a los principales paradigmas de programación soportados por Scala: orientación a objetos, programación funcional y programación genérica. Adicionalmente, se analizará el azúcar sintáctico que hace que los fuentes resulten tan difíciles de leer para los recién llegados. La librería de colecciones de Scala se utilizará como fuente de ejemplos durante el curso.
Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cuatro años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde es ponente habitual. También impartió un curso de Programación Funcional en Scala organizado por la Escuela de Informática de la URJC.
The main goal of this course is introducing the basic functional programming techniques which are behind the most advanced libraries and applications nowadays, such as Spark, Twitter, Facebook, etc. These techniques are, amongst others, algebraic data types, higher-order functions, type classes and monads. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us with the reusability, testability, evolvability, etc., of our code. Last, note that this is mostly a functional programming course that happens to be taught using Scala (but for a brief reference to Java8). So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).
The course is divided into four major blocks. In the first one, the essential concepts of side-effects, languages and interpreters will be introduced, as well as how to use algebraic data types to design your effect languages. In the second one, we will teach you how to use higher-order functions to improve the modularity of your code, and the most common higher-order functions: map, filter, reduce, flatMap, etc. In the third block, we will go further in the modularity realm by introducing type classes, and the monad type class in particular. Last, the fourth block aims at giving you a glance of the Scala ecosystem for functional programming, covering the basics of three major libraries: Scalaz, Cats and Scalacheck.
Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last four years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Jesús holds a double MsC in Software engineering and Telematics. He has been using Scala since he started to work in Habla Computing five years ago, both for DSL design and applications in the banking industry. Currently, he is doing his PhD in reactive systems and functional programming in Habla Computing. Jesús was coordinator and frequent speaker during several years of the Madrid Scala Meetup. He has also teached a course on functional programming in the School of Informatics of the URJC.
Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Por último, aunque el lenguaje de programación utilizado será predominantemente Scala (excepto por una breve referencia a Java8), este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).
El curso está dividido en cuatro bloques principales. En el primero se introducen los principios básicos de la programación funcional: la eliminación de efectos de lado, el diseño de lenguajes e intérpretes, y cómo utilizar los tipos algebraicos de datos para el diseño de nuestros lenguajes de efectos. En el segundo bloque se introducen las funciones de orden superior típicas (map, reduce, filter, etc.), y se muestra cómo mejorar la modularidad de nuestro código funcional con ellas. En el tercer bloque se introducen las type classes como un mecanismo de modularidad todavía más potente que las funciones de orden superior, y se explican las mónadas como una type class que podemos utilizar para diseñar lenguajes de efectos imperativos. Por último, el cuarto bloque tiene por objetivo familiarizarte con tres librerías básicas del ecosistema de Scala: las librerías scalaz y cats, y la librería de property-based testing Scalacheck.
Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cuatro años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
Jesús es Ingeniero Superior en Informática y Máster en Sistemas Telemáticos e Informáticos. Trabaja en Habla Computing desde hace cuatro años como programador de Scala para aplicaciones del sector bancario. Actualmente, desarrolla su tesis doctoral en Habla Computing sobre temas de programación funcional y sistemas reactivos, gracias a una subvención del programa de Doctorados Industriales del Ministerio de Economía y Competitividad. Jesús fue durante varios años coorganizador del meetup de Scala en Madrid, donde fue ponente habitual. También impartió un curso de Programación Funcional en Scala organizado por la Escuela de Informática de la URJC.
The main goal of this course is introducing the basic functional programming techniques that fuel the most advanced libraries and applications nowadays (Spark, Twitter, Facebook, etc.). These techniques are, amongst others, algebraic data types, higher-order functions, type classes, monads and pure functions. Throughout the course, you will learn what these techniques are, and, specially, why we should care about them, i.e. how they will help us to achieve higher levels of reusability, testability, evolvability, etc., in our code. To illustrate these functional techniques, we will pay special attention to the Spark library. Last, note that this is mostly a functional programming course that happens to be taught using Scala. So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).
The course is divided into four major blocks. The first one introduces what is functional programming and why it really matters. We will learn that the power of functional programming comes from the many modularity techniques that it supports: generic programming, higher-order functions, type classes, pure functions, etc. The rest of the course is structured according to these different techniques: higher-order functions will be covered in the first section, type classes in the second one, and pure functions in the third one. The last fourth module of the course is entirely devoted to Spark. We will see how Spark exemplifies the functional abstractions introduced throughout the course (higher-order functions, pure functions, etc.) and will illustrate how we can write complex data transformation programs in a purely functional style.
The course is coordinated by Juan Manuel Serrano, and taught by him and Habla Computing specialists. Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last five years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
Este curso tiene por objetivo introducir las técnicas básicas de programación funcional utilizadas en la construcción de las librerías y aplicaciones más avanzadas de la actualidad: desde el framework de big data Spark, hasta las aplicaciones de Twitter, Facebook, etc. Entre las técnicas abordadas se encuentran los tipos algebraicos de datos, las funciones de orden superior, las type classes y las mónadas. Durante el curso se explicará en qué consisten estas técnicas y, sobre todo, qué se gana con su utilización (reusabilidad, testability, tolerancia al cambio, etc.). Para ilustrar estos conceptos se prestará una especial atención al framework de Spark. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala, este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).
El curso está dividido en cuatro bloques principales, de cuatro horas de duración cada uno aproximadamente. En el primero se introduce qué es la programación funcional y por qué es cada vez más relevante. Veremos que la potencia de la programación funcional descansa en gran medida en los numerosos mecanismos de modularidad que soporta: la genericidad, las funciones de orden superior, las type classes, las funciones puras, etc. El resto del curso se estructura en base a estos mecanismos: en el primer bloque se estudiará en profundidad las funciones de orden superior, en el segundo las type classes y en el tercero la purificación de funciones y segregación de efectos de lado. Por último, en el cuarto bloque nos centraremos exclusivamente en Spark y en cómo se aplican en su arquitectura los conceptos anteriores. Desde un punto de vista práctico, veremos cómo escribir complejos programas de transformación de datos en un estilo puramente funcional.
El curso será coordinado por Juan Manuel Serano, e impartido por él y personal especializado de Habla Computing. Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cinco años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
Functional programming is all the rage these days, as witnessed by the fact that almost any non-functional programming language (Java, Javascript, C#, Python or C++) has dedicated functional libraries, or even functional extensions like anonymous functions (e.g. Java8). Not to mention the creation of "new" programming languages of increasing popularity, like Scala, designed from the very beginning to support functional abstractions like inmutable values and algebraic data types.
However, these basic features are just the tip of the iceberg: in order to leverage the FP paradigm to their full potential, you must also master its essential design patterns: typeclasses, monads, interpreters, etc. Scala gratefully supports these patterns, and this course will allow you to understand exactly what is "purely" functional programming, and obtain all the benefits that this programming paradigm promise to us (modularity, testability, efficiency, etc.).
This course is largely of a practical nature, and we will make a strong emphasis in comparing the proposed functional solution with the common "object-oriented" patterns you are used to. This will allow us to clearly unveil the similarities between both paradigms, as well as their differences and the advantages of the functional approach. Last, note that this is mostly a functional programming course that happens to be taught using Scala (but for a brief reference to Java8). So, the major lessons to be learned here will be readily applicable to your everyday programming tasks, even if you can't use Scala at your workplace (sigh).
We will first introduce what it's functional programming and what it's not. We will learn that functional programming is all about writing highly modular functions which are free from side effects, i.e. which are pure. In this first section, we will also introduce the most basic features of Scala. The next two sections will deal, respectively, with the major techniques to achieve modularity and purity: algebraic data types, higher-order functions, laziness and monads. In this third section, we will also compare monads to the most common object-oriented design patterns, and will briefly review the functional support of Java8. Last, we will learn about typeclasses and how the scalaz library exploits them to implement for us the FP design patterns used in the previous sections.
Juan Manuel is CTO and co-founder of Habla Computing. He has been using Scala for the last four years in real-world applications for the banking sector, and has extensive experience in consultancy projects with Scala, Play, and other frameworks of the Scala ecosystem. He founded and manages the Madrid Scala Meetup group and is member of the organizing committee of lambda.world, the premier Spanish conference of functional programming for the software practitioner. Prior to joining Habla Computing, Juan Manuel was a University teacher for more than fifteen years in different computer science and software engineering degrees.
La programación funcional está cobrando cada vez más importancia en la industria del software, y raro es el lenguaje de programación no funcional (hablamos de Java, Javascript, C#, Python o C++) para el que no existan ya librerías funcionales, o incluso extensiones en las que se introducen explícitamente construcciones como las funciones anónimas (por ejemplo, Java8). Eso sin mencionar otros lenguajes de más "reciente" aparición y popularidad creciente, como Scala, diseñados desde el principio para dar soporte a abstracciones básicas de la programación funcional, como los valores inmutables o los tipos algebraicos.
Sin embargo, debes saber que esto es solo la punta del iceberg: para explotar de una manera plena el paradigma funcional es imprescindible conocer patrones de diseño básicos como las type classes, las mónadas y los intérpretes. Scala soporta estos patrones estupendamente, y este curso tiene por objetivo enseñarte en qué consisten para que sepas qué es la programación funcional "pura" y puedas realmente obtener todas las ventajas que promete este paradigma (modularidad, facilidad de pruebas, eficiencia, etc.).
El curso tiene una orientación eminentemente práctica y en él se hará un hincapié especial por comparar la solución funcional propuesta con la solución "orientada a objetos" más común que probablemente ya utilices, de tal manera que las similitudes entre ambas aproximaciones (que haberlas, haylas), así como las diferencias y las ventajas de la aproximación funcional se vean claramente expuestas. Por último, aunque el lenguaje de programación utilizado será predominantemente Scala (excepto por una breve referencia a Java8), este curso consiste principalmente en un curso de programación funcional, por lo que las lecciones aprendidas en él podrás aplicarlas en tu día a día incluso si no puedes utilizar Scala en tu trabajo (lástima ;).
En la primera sección del programa haremos una introducción a las nociones básicas de Scala (el resto de conceptos de Scala más específicos de la programación funcional se introducirán conformen vayan haciendo falta), y veremos que la programación funcional descansa en dos principios básicos: la modularidad y las funciones puras. De esta forma, las dos secciones siguientes se centrarán en las técnicas funcionales para conseguir modularidad (tipos algebraicos, funciones de orden superior, etc.) y pureza funcional (mónadas e intérpretes). En esta tercera sección también se hará una comparativa entre la solución monádica obtenida y los patrones típicos de la orientación a objetos, y se verá brevemente cómo implementar en Java8 los patrones monádicos. En la última sección introduciremos las type classes y cómo utilizar librerías como Scalaz y Cats para simplificar radicalmente la implementación de código funcional.
Juan Manuel es CTO y co-fundador de Habla Computing. Utiliza la programación funcional y Scala desde hace cuatro años en el desarrollo de un framework de procesos así como en servicios de consultoría para el desarrollo de aplicaciones en los sectores de comercio electrónico y bancario. Hace dos años fundó el grupo de usuarios de Scala en Madrid (ScalaMAD), y es miembro del comité organizador de lambda.world, un foro de reciente creación sobre programación funcional para el profesional de la informática. Antes de fundar Habla, Juan Manuel fue profesor en titulaciones de informática durante más de quince años y es actualmente profesor en excedencia de la Universidad Rey Juan Carlos.
We have already run several editions of the basic and advanced functional programming courses for the community. In addition, we have offered these courses in an in-house modality for different companies such as Amadeus, Beeva, Packlink, S|ngular, GMV, etc.
Companies willing to run our courses privately have several advantanges: they can run the course at their offices and at the pace they choose, and, more importantly, they can tailor the content of the course to their specific needs.
The Bank of Spain Risk Assessment Central Office (CIRBE) rules how financial entities and the Bank of Spain interact on risk declarations matters: reports, conflict-resolution protocols, notifications, etc. BNP Paribas Security Services (BP2S) applies a language defined by Habla Computing to reflect CIRBE regulations, ensuring its processes match the normative.
Using this language enables BP2S to quickly react to change regulations through simple modifications in its code. Also, this code can be easily plugged to different tools, freeing BP2S to tie its business logic to any specific platform.
We are a bunch of people with a common passion: achieving better ways to engineer and deliver software products.
Parque Científico Universidad Carlos III de Madrid
Room 1.1.C.13
Avenida Gregorio Peces-Barba 1, 28918 Leganés
Madrid, Spain
Phone us: +34 609 252 235
Email us: info@hablapps.com
As pioneers in the use of Scala, we founded the Madrid Scala Meetup (affectionately known as #ScalaMAD) and regularly contribute to the Scala community with blog posts, meetup talks, open source projects, and conferences.
Welcome to the Habla Computing S.L. website
Owner: Habla Computing, S.L.
Address: Villalobos, 20, 13A 28018 Madrid
Tel. (+34) 91 172 68 52; fax. (+34) 91 172 68 52
E-mail: info@hablapps.com
Registry Data: Madrid Commerce Registry, Volume 27,693, Sheet 12, Section 8, Page M-499100, dated April 12,
2010, first registration.
C.I.F.: B-85933729
Terms of Use
The conditions herein regulate the use of this website. By accessing, browsing, or using this Web site imply
that user have read, understood, and agree, unconditionally, to be bound by these terms.
Habla Computing may, without notice to you, at any time revise and/or update these Terms of Use
and any other information contained in this Web site. Habla Computing may also make changes in
the products, services, or programs described in this site at any time without previous notice.
Habla Computing reserves the right to deny, suspend, interrupt or cancel access or use of this
website, either completely or partially, for those users or visitors found to be in non-compliance with any of
the conditions set forth in this Legal Notice.
General
Specifically, the reproduction, transformation, distribution, communication, public dissemination and, in
general, any form of development, using any procedure whatsoever, of all or part of the contents of this
website, as well as any corresponding design and manner of presentation of the materials included herein are
strictly prohibited. Said development shall only be permitted if Habla Computing issues written
authorization of the same and only as long as appropriate reference is made to the sole property of Habla
Computing. Notwithstanding the foregoing, any software and other materials that are made available
for downloading, access, or other use from this site with their own license terms, conditions, and notices will
be governed by such terms, conditions, and notices.
The decompilation, disassembly, reverse engineering, sub-licensing or transfer of any kind, translation or
execution of work derived from the computer programs required for functioning, access and use of this website,
and of the services described in the contents, as well as the execution of any of the development activities
described in the previous paragraph, whether related to all or part of such programs, is also strictly
prohibited. The user of this website must abstain from deleting, modifying, avoiding or manipulating any
protection device or security systems that may be installed herein.
The brand names, commercial names and distinctive symbols are the sole property of Habla
Computing. Access to the website does not imply the granting of any express or implied rights under
any patents, trademarks, copyrights, or other proprietary or intellectual property rights.
Hyperlinks to other sites
The hyperlinks or links included in this website can lead the user to other third party sites, over which
Habla Computing has no control. Habla Computing shall not be held liable for
the contents or the state in which said sites are found. Access to the said sites using this website also does
not, in any way whatsoever, imply that Habla Computing either recommends or approves of
corresponding contents or use of such Web site.
Habla Computing is not a party to or responsible for any transactions user may enter into with
third parties, even if you learn of such parties (or use a link to such parties) from a Habla
Computing site. Accordingly, user acknowledge and agree that Habla Computing is
not responsible for the availability of such external sites or resources, and is not responsible or liable for
any content, services, products, or other materials on or available from those sites or resources.
It is up to user to take precautions to protect themselves from viruses, worms, trojan horses, and other
potentially destructive programs, and to protect your information as you deem appropriate.
Linking to this site
All links to this Web site must be approved in writing by Habla Computing, except that Habla
Computing consents to links in which the link and the pages that are activated by the link do not:
(a) create frames around any page on this Web site or use other techniques that alter in any way the visual
presentation or appearance of any content within this site; (b) misrepresent your relationship with Habla
Computing; (c) imply that Habla Computing approves or endorses you, your Web site,
or your service or product offerings; and (d) present false or misleading impressions about Habla
Computing or otherwise damage the goodwill associated with the Habla Computing
name. As a further condition to being permitted to link to this site, you agree that Habla
Computing may at any time, in its sole discretion, terminate permission to link to this Web site.
In such event, you agree to immediately remove all links to this Web site.
Modifications
Habla Computing reserves the right, at any time, to modify, enlarge or temporarily suspend the
website presentation, configuration, technical specifications and services unilaterally and without previous
notice.
Also reserves the right to modify the terms of use, as well as any other specific conditions, set forth herein
at any time.
Confidential information
Habla Computing does not want to receive confidential or proprietary information from user
through our Web site. Please note that any information or material sent to Habla Computing will
be deemed NOT to be confidential. By sending Habla Computing any information or material, you
grant Habla Computing an unrestricted, irrevocable license to copy, reproduce, publish, upload,
post, transmit, distribute, publicly display, perform, modify, create derivative works from, and otherwise
freely use, those materials or information. You also agree that Habla Computing is free to use
any ideas, concepts, know-how, or techniques that you send us for any purpose. However, we will not release your
name or otherwise publicize the fact that you submitted materials or other information to us unless we obtain
your permission to use your name.
Liability Exclusion
Whoever uses the website does so at their own expense and risk. All materials, information, products, software,
programs, and services are provided “as is” with no warranties or guarantees whatsoever, neither explicit nor
implied, and can be modified or updated without previous notice. Habla Computing, its
associates and employees shall not be held liable for the errors or omissions that could exist within the
contents of either this website or other contents to which access can be gained using the same. Habla
Computing, its associates and employees shall also not be held liable for either any damages
arising from the use of this website or any activity undertaken as a result of the information made available
herein. Accordingly, user should confirm the accuracy and completeness of all posted information before making
any decision related to any services, products, or other matters described in this site.
Habla Computing does not guarantee the absence of viruses, worms or other harmful computer
elements that could cause damage or alter the computer system in the electronic documents or user files included
herein. As a result, Habla Computing shall not be held liable for any user or third party
damages or losses arising from such elements. Furthermore, Habla Computing shall not be held
liable for or guarantee the availability and continuity of access to this web site. Habla
Computing shall also not guarantee that this website is secure or error-free. It shall be the
user’s responsibility to have the appropriate tools available for detecting and disinfecting harmful or damaging
computer programs.
In no event will Habla Computing be liable to any party for any direct, indirect, incidental,
special, exemplary or consequential damages of any type whatsoever related to or arising from this web site or
any use of this web site, or of any site or resource linked to, referenced, or accessed through this web site,
or for the use or downloading of, or access to, any materials, information, products, or services, including,
without limitation, any lost profits, business interruption, lost savings or loss of programs or other data. The
user is fully aware of, and voluntarily accepts the fact that they are fully liable for any consequences arising
from any use of any part of the contents herein, materials, information, products, software, programs, or
services, so at their own discretion and risk. User will be solely responsible for any damages that may result,
including loss of data or damage to your computer system.
The user shall be held liable for losses and damages of any kind that Habla Computing could
suffer as a result of incompliance with the obligations set forth herein.
Additional or different terms, conditions, and notices may apply to specific materials, information, products,
software, and services offered through this Web site. In the event of any conflict, such additional or different
terms, conditions, and notices will prevail over these Terms of Use.
Legislation
Under any and all circumstances, the use conditions set forth herein shall be governed by Spanish Law.