viernes, agosto 12, 2011

Introducción a Scala - JUGAR

La semana pasada tuve la oportunidad de participar de una muy buena charla de Scala que se dió en el Java User Group de Argentina, un nuevo grupo que se creó hace bastante poco y está realizando charlas mensuales muy interesantes. Les recomiendo que se registren en el Meetup del grupo y comiencen a participar de las actividades, me estoy postulando para dar una charla para fin de año.
El disertante fue Gustavo Arjones, quien realmente poseía un buen conocimiento teorico-práctico y lo que más me gustó es que explicaba las cosas como un muy buen nerd, con pasión y ganas de contar lo divertido que era utilizar scala. Y algo que también me gustó es que tenia buen background en .NET, lo cual hizo buenas comparaciones.
Obviamente fue una charla de una hora y no se pudo entrar demasiado en detalle, pero fue lo suficiente como para entender los principios del lenguaje y como arrancar. Scala es un lenguaje que corre sobre la JVM, que ofrece una sintaxis y semántica muy concisa y elegante para construir una aplicación integrando ideas de la programación orientada a objetos y la programación funcional.
Acá les dejo la referencia a los materiales expuestos en la charla y las slides.
Cuales fueron mis conclusiones:
  1. Realmente me pareció un lenguaje de avanzada y que incorpora conceptos de la programación funcional que permiten aplicar el concepto "tell don't ask" de manera más sencilla
  2. Tiene una sintaxis muy elegante, minimalista y poderosa, realmente me hizo acordar a ruby
  3. La manera de crear mixins con traits es genial, ver el ejemplo en la presentación
  4. Como viene pasando, los IDEs ya están integrados y Netbeans parece ser el mejor preparado
  5. Posee una IRB para tirar lineas en una consola interactiva, lo cual permite aplanar la curva de aprendizaje y ser muy productivo
  6. El lenguaje se jacta de ser type-safe, lo cual es verdad, pero realmente hubiese esperado algo más dinámico, entiendo el trade-off pero es ahí donde mi corazón se vuelve a volcar un poco más a Ruby/JavaScript.
  7. Como corre en una JVM, es prácticamente natural invocar POJOs desde scala y viceversa
  8. Framework muy potente de Unit Test, incluso se podría usar para testear clases java, es más es una manera excelente para empezar
  9. Frameworks Web como Play! tienen soporte para scala
En fin, esas fueron mis conclusiones, espero que le hayan gustado y si alguien lo prueba me comenta como le fue, yo tendré que planificar un poco de tiempo para hacerlo, no lo veo en los próximos 2 meses al menos.

1 comentario:

Gustavo Arjones dijo...

Hola!
Muchas gracias por los comentarios.
Yo quería aportar algo a tu comentario 6:


6. El lenguaje se jacta de ser type-safe, lo cual es verdad, pero realmente hubiese esperado algo más dinámico, entiendo el trade-off pero es ahí donde mi corazón se vuelve a volcar un poco más a Ruby/JavaScript.


Scala es Type-Safe pero trabaja mucho para hacer inferencia de tipos, por lo cual casi nunca tenés que explicitar el tipo de variable, entonces no me alejo de la productividad de Ruby o JS en ese punto.

Por otro lado si estoy en una parte crítica de mi código yo simplemente pongo el tipo explícito y el compilador me garantiza que solo ese tipo va entrar.

Creo que no se pierde nada, incluso se gana mucho con ese approach, en mi pequeña experiencia con Ruby me vi haciendo Unit Test para garantizar tipos y contenidos que con Scala están garantizados por el compilador.

Saludos,