Aprenda acerca de la programación funcional, y como puede ser esta efectivamente combinada con la programación orientada a objetos. Gane practica escribiendo codigo funcional limpio usando el lenguaje de programación Scala.
Introducción:
La programación funcional ha llegado a ser mucho muy popular en los últimos años porque promueve el código que es seguro, conciso y elegante. Más aún, la programación funcional hace mucho más fácil escribir código paralelo para los multiprocesadores de hoy y mañana reemplazando las variables mutables y ciclos con maneras poderosas de definir y componer funciones.
El lenguaje Scala es hoy usado en un un gran número de proyectos de código abierto y compañías el cual crece rápidamente. Scala provee la infraestructura base de sitios como Twitter, LinkedIn, FourSquare, Tumblr y Klout.
Descripción:
Scala es un lenguaje de programación multi-paradigma diseñado para expresar patrones comunes de programación en forma concisa, elegante y con tipos seguros. Integra sutilmente características de lenguajes funcionales y orientados a objetos. La implementación actual corre en la máquina virtual de Java y es compatible con las aplicaciones Java existentes.
Scala es orientado a objetos pero también posee características propias de los lenguajes funcionales. En Scala las funciones son valores de primera clase, soportando funciones anónimas, orden superior, funciones anidadas y currificación. Scala viene integrado de fábrica con la técnica de pattern matching para modelar tipos algebraicos usados en muchos lenguajes funcionales.
Objetivo del curso:
El asistente comprenderá los conceptos fundamentales de la programación con Scala, la integración reciproca con Java y visualizará los conceptos avanzados. Al finalizar el curso el participante tendrá una base sólida del lenguaje de programación Scala sobre la cual podrá construir más conocimiento.
Este curso es en su mayoría practico o – manos a la obra – , la mayoría de los temas comprenden programas cortos que sirven a manera de ilustración de conceptos importantes y exhorta al participante a jugar con estos, modificarlos y mejorarlos. El Curso de Functional Programming con Scala es complementado con una serie de asignaciones, la mayoría de las cuales son también proyectos de programación.
Dirigido a: Programadores, desarrolladores de sistemas, licenciados en informática, científicos de datos que quieran comprender las bases y empezar a programar en Scala, unos de los lenguajes funcionales del futuro y ademas orientado a objetos.
Nivel: Básico – Intermedio.
Requisitos: Conocimientos de algún lenguaje de programación como Java o C# es ampliamente recomendado pero no mandatorio, si el alumno tiene experiencia de programación con C/C++, Python, Ruby o JavaScript es suficiente. Comprensión de lectura de textos en idioma inglés. Manejo de cualquier SO básico.
Temario:
Parte 1 – Introducción
Shell | Instalación(Wndows) | Instalación (Mac) | Ejecutando Scala | Comentarios
Parte 2 – Scripting
Valores | Tipos de datos | Variables | Expresiones | Expresiones Condicionales | Orden de evalacuación | Expresiones compuestas | Resumen y/o ejercicio Integrador
Parte 3 – Métodos y clases
Métodos | Clases y Objetos | ScalaDoc | Creando Clases | Métodos dentro de clases | Importar y paquetes | Pruebas | Campos | Ciclos For | Vectores | Mas condicionales |Resumen y/o ejercicio Integrador
Parte 4 – Pattern Matching
Argumentos de clases | Argumentos nombrados y por defecto | Sobrecarga | Constructores | Constructores auxiliares | Ejercicios con Clases | Clases Case | Interpolación de Cadenas | Tipos Parametrizados | Funciones como objetos | Map y reduce | Comprensión| Pattern Matching con tipos | Pattern Matching con Clases Case | Brevity | Un poco de Estilo | Idiomatic Scala | Definiendo Operadores | Conversión Automatica de Cadenas | Tuplas | Companion Objetcs | Herencia | Incializacion de clases base | Sobreescritura de metodos | Enumeración | Clases abstractas | Traits | Uniformidad de Accesos y establecedores (Access & Stters)
Parte 5 – Alcanzando a Java
Aplicaciones | Un poco de Reflection | Polimorfismo | Composición | Usando Traits | Tagging Traits & case Objects | Type Parameter Constraints | Construyendo Sistemas con Traits | Secuencias | Listas y recursión | Combinando secuencias con zip | Sets| Mapas | Referencias y Mutabilidad | Pattern Matching con Tuplas | Manejo de errores con excepciones | Constructores y excepciones | Reporte de errores con Either | Manejando Non-Values con Option | Convirtiendo excepciones con Try | Reporte de errores personalizados | Diseño por Contrato (Design by Contract) | Logging | Extensión de métodos | Extensión de sistemas con Clases Type
Parte 6 – ¿qué sigue después?
AtomicTest | Llamando Scala desde Java |Practica Final