Curso de programación con el lenguaje Scala

Primera llamada al Curso de Programación con Scala.

Scala es uno de los tantos lenguajes de programación que en los últimos años han surgido para la máquina virtual de Java. Es un lenguaje que combina de manera muy elegante el estilo imperativo de la programación orientada a objetos, con el estilo de la programación funcional.
Scala permite hacer uso de todo el potencial del lenguaje Java e ir mucho más allá para resolver problemas donde la transparencia referencial que se obtiene con la programación funcional es un ingrediente imprescindible para escribir código "limpio".
Este curso introduce al participante conocedor de Java en el mundo de Scala, siguiendo un camino ni largo ni tortuoso y asimilando la "complejidad" del lenguaje "sorbo a sorbo".

Introducción e instalación de Scala

Nada como comenzar a estudiar un lenguaje con ejemplos simples,que muestren algunas de sus bondades, y que nos permita experimentar de manera rápida con guiones "incompletos" que están lejos de constituir un programa completo. Scala con su REPL (Read, Eval, Print,Loop) nos permite cortar código desde el primer instante y suavemente introducirnos en sus bondades, entre ellas la de tratar a las funciones como valores y evitar el uso de variables mutables, causantes de muchos de los errores en el estilo de programación imperativa.
Por supuesto que los impacientes querrán escribir programas compilados y seguramente escribirlos haciendo uso de un buen IDE que nos facilite la tarea. Es entonces necesario mostrar esas porciones( scripts) de código en programas que se "dejen" compilar. Será necesario venir armado con Scala, Eclipse y Scala IDE for Eclipse para ir al grano desde el primer minuto del curso.

Sintaxis de Scala, guiones y programas

Para programar en un lenguaje es requisito obligado conocer su sintaxis; no conozco otra forma de comunicar a la computadora lo que quiero que resuelva. Afortunadamente, los que inventan lenguajes de programación conocen que una de las reglas de oro para lograr la aceptación de su creación, es "parecerse" a lo que ya está aceptado.
Scala, al respecto, se enfrenta a un reto: lograr que el programador experto en la orientación a objetos, se acostumbre al uso de una sintaxis de la programación funcional, pero que afortunadamente la puede ir aprendiendo de manera paulatina.
¿Es compleja la sintaxis de Scala? Ni sí ni no, sino todo lo contrario.

Clases y Objetos

Scala (todos lo dicen) es un lenguaje híbrido de programación funcional y de programación orientada a objetos. Veremos enel curso que es un lenguaje de programación orientado a objetos puro con clases y traits para instanciar objetos funciones. Scala es un lenguaje orientado a objetos basado en clases con construcciones novedosas para implementar unidades de comportamiento (traits) que pueden "mezclarse" en clases, logrando jerarquías de herencia muy flexibles.
En Scala todos los valores son objetos y todo valor tiene un tipo asociado que es comprobado por el compilador; es un lenguaje de tipado estático, carente de tipos primitivos, pero con las optimizaciones necesarias para aprovechar el tratamiento eficiente que realiza la máquina virtual con los tipos primitivos.

Los tipos fundamentales y sus métodos

El sistema de tipos de Scala es sin dudas complejo, pero el programador puede afrontar esa complejidad esencial, disminuyendo la complejidad accidental, regla ésta de todo buen diseñador.
Scala brinda un arsenal para el procesamiento de listas y secuencias, típico de los lenguajes funcionales. Muchas de las estructuras de datos que utilizamos se implementan con secuencias de objetos y el procesamiento eficiente de ellas determina en ocasiones el desempeño de las aplicaciones.

Estructuras de control

En Scala disponemos de las estructuras de control típicas:   y las llamadas a funciones. Otros lenguajes tienen otras estructuras de control incorporadas. Scala, a diferencia de esos lenguajes, permite que el programador cree nuevas estructuras de control haciendo uso de funciones de orden superior e incorporando esas abstracciones de control en bibliotecas, en lugar de hacerlo en su sintaxis básica.
Casi todas las estructuras de control en Scala son expresiones que resultan en algún valor en el momento que son aplicadas. Es el enfoque de los lenguajes funcionales, en los que toda computación se resuelve mediante la aplicación de funciones. No es entonces sorpresa que el operador ternario frecuente en muchos lenguajes de programación esté ausente en Scala.

Composición y Herencia

Favor composition over inheritance es uno de los principios de diseño relevantes de la programación orientada a objetos y la razón principal de varios patrones de diseño, entre ellos el ubicuo Decorador.
La composición y la herencia son los dos mecanismos básicos de reuso en la programación orientada a objetos, siendo la segunda usada de manera incorrecta en muchas ocasiones donde la solución correcta es una combinación de ambas técnicas.
Scala ofrece un soporte excelente para el diseño correcto de los principios de abstracción fundamentales de la programación orientada a objetos: Clasificación/Instanciación, Agregación/Descomposición, Generalización/Especialización y Agrupamiento/Individualización.
Si los términos anteriores suenan ajenos, entonces vale la frase de Moliere en Le Bourgeois gentilhomme : "Good heavens! For more than forty years I have been speaking prose without knowing it".

Programación funcional con Scala

La programación funcional siempre ha estado presente como uno de los paradigmas de computación importantes.
Es el estilo de programación de varios lenguajes que se usan en muchas universidades para enseñar computación.
Afortunadamente, en los últimos años varios lenguajes de programación orientados a objetos han introducido algunos ingredientes relevantes de los lenguajes funcionales en su sintaxis y semántica, dando la posibilidad que aquellos que dominan las técnicas de objetos las fortalezcan con técnicas funcionales.
Scala sobresale entre esos lenguajes y le da al programador las armas para programar y razonar de una manera diferente acerca de la programación. El soporte de Scala nos ayuda a resolver muchos problemas pensando en términos de transformar entrada en salida, evitando muchos problemas asociados con los efectos laterales y el cambio de estado, típicos de la programación imperativa.
Funciones de orden superior, closures, monads, aplicación parcial de funciones, composición de funciones, currying y un gran número de términos que obligan a preguntarse: ¿es compleja la programación funcional?. Mi respuesta es otra pregunta: ¿Alguna actividad intelectual es simple?

Colecciones y ventajas de la inmutabilidad

Las colecciones o contenedores de objetos están presentes en todos los programas que escribimos y todos los lenguajes incluyen un marco de trabajo de colecciones. Scala no es la excepción y la mayoría de las colecciones que ofrece son inmutables con muchas facilidades para operaciones de iteración.
Estas dos características de las colecciones usadas correctamente nos conducen a escribir código conciso y de gran desempeño en las plataformas multicore actuales.

Pattern matching

Todos los lenguajes funcionales incluyen pattern matching y Scala mezcla muy bien el pattern matching típico de la programación funcional con los conceptos orientados a objetos (clases case y otras cosas) para brindar un mecanismo muy poderoso para escribir correctamente la lógica de negocio de nuestras aplicaciones.

Actores y Programación concurrente

Para muchos, la programación concurrente es la siguiente revolución en la forma que escribimos software. Java y
otros lenguajes dan soporte a un modelo de concurrencia basado en técnicas de sincronización por condición y exclusión mutua, adecuadas para muchas aplicaciones pero inadecuadas para otras.
Otros modelos de concurrencia han existido desde hace muchos años y uno de ellos es el conocido como el modelo de actores basado en la inexistencia de regiones críticas por estados compartidos entre hilos o procesos, y usando intercambio de mensajes entre los componentes del sistema para resolver problemas de computación concurrente.
Scala implementa un modelo de actores para dar soporte a la concurrencia.

Programación de analizadores sintácticos

En muchos programas tenemos la necesidad de reconocer cadenas de entradas y para ello programamos parsers
descritos por los conjuntos de las cadenas de entrada que ellos procesan.
Cuando escribimos un parser para un DSL externo, podemos usar herramientas generadoras como Antlr.
En lugar de eso, podemos usar la biblioteca de combinadores de parsers de Scala para realizar el análisis sintáctico de muchos DSL externos, definiendo un DSL interno que logra que las definiciones de un parser sean muy similares a las notaciones comunes de gramáticas de tipo BNF.
La biblioteca de combinadores de parsers de Scala nos da la posibilidad de utilizar un lenguaje DSL interno para
procesar cadenas de entrada, en lugar de tener que utilizar un DSL externo de generadores de analizadores de parsers.

¿Te interesa el curso?.

Sigue leyendo este blog

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Interesanteee

Me interesa, pero creo q falto decir, cuales serian los requisitos minimos para poder entender mas la programacion con Scala

Imagen de neko069

Sí, si me interesa, dónde

Sí, si me interesa, dónde firmo?

Imagen de rugi

Espero -en verdad- que mis

Espero -en verdad- que mis compromisos actuales me permitan poder tomar este curso :)

Será todo un honor!

---
RuGI

Imagen de bferro

Si te interesó el curso de Scala

Si te interesó el curso de Scala, entonces puedes consultar requisitos, temario, calendario, precio, etc., en .

Imagen de alejandro jaramillo rendon

Es una lastima

Es una lastima no estar cerca para asistir, les deseo muchos éxitos y espero que aprendan mucho para que puedan transmitir sus conocimientos

Un saludo desde colombia!

Imagen de benek

Que interesante, tengo que

Que interesante, tengo que asistir... :-)

Definitivamente aparto lugar para la segunda edición de este curso, para estas fechas de febrero y marzo desafortunadamente ya tengo curso los sábados.

Sería muy buena idea tener unas #OpenTalks antes del 25/feb en las que se hable de Scala y se promocione este curso que seguro a muchos les interesará. Bárbaro, si te late la idea y crees que haya tiempo suficiente ahí estoy vía DM en Twitter.

Imagen de bferro

Curso de Scala

Curso de Scala. Comenzamos sábado 3 de marzo. Hay lugares, hay lugares. ¿Dónde? Aquí En Co-work

Imagen de bferro

Curso de Scala

Curso de Scala se pospone para el mes de junio.