jueves, 9 de octubre de 2014

Scala, y el por qué deberías prestarle atención

Scala es, en pocas palabras, lo que muchos programadores que no gustamos de Java como lenguaje esperaríamos poder usar.
Con esto no estoy diciendo que Java sea un mal lenguaje (aunque la cruda realidad es que ya no es tan bueno), no se puede negar su gran contribución al mundo de la programación, pero si hay que decir que, frente a otros leguajes que se han ido popularizando con el tiempo, Java ha perdido preferencia.
Me refiero a lenguajes menos "estrictos", más "amigables" y más "dinámicos"... es así como Ruby, JavaScript, Python, phpffff, etc, suelen mantenerse como los lenguajes preferidos de muchos programadores para sus proyectos personales.

En base a esto, la pregunta puesta en el aire tiene ya una respuesta: Java se ha vuelto aburrido... y quizás lo que pienso es la razón principal de esto es que hay que escribir más cosas de las que debería escribir con aquellos otros lenguajes. Cuando podemos comparar Java con otro lenguaje como los mencionados anteriormente, es casi obvio que muchos preferirán los otros (y si no, es más que seguro que por desconocimiento no lo hacen).

En la práctica, hay muchos lenguajes buenos, entrenidos de aprender, más faciles de usar que los más famosos... pero, en programación cuando no hay algo util qué hacer con un lenguaje, pues nadie lo usará. El caso más concreto es el de Ruby: Aun cuando sus fans le tienen mucho amor al lenguaje... lo que él hace no difiere demasiado de, por ejemplo, python. Así que ¿para qué parender ruby cuando python es más famoso?, pero esto cambió cuando apareció RubyOnRails. RoR fue la razón para que muchos se interesaran en aprender Ruby (que por si mismo no era tan atractivo), impulsando su comunidad, su uso, y con ello, la cantidad de aplicaciones en la industria.

Es aquí cuando se comprende que lo que empuja un lenguaje hacia su uso más masivo, son las herramientas que se contruyen usandolo, incluso más que el lenguaje en sí. Scala tiene tras de sí una empresa ( http://typesafe.com/ ) que se ha tomado el trabajo de crear algunas herramientas, que pueden en verdad llamar bastante la atención por su utilidad.


JVM

El mayor aliciente para utilizar Java en aplicaciones de gran envergadura es el respaldo que la industria en general le ha mantenido a, no el lenguaje, sinó a su ambiente. Esto incluye las herramientas construídas, el respaldo (hay tantos usando Java todo el tiempo, que las posibilidades de abandono son minimas, la comunidad, etc.
Pero... dada la arquitectura de Java como plataforma... lo realmente no es Java como lenguaje, sinó el bytecode que es lo que leerán las maquinas virtuales en donde sea que ejecutemos el software.
Scala siendo un lenguaje que compila a bytecode de la maquina virtual de Java, tiene a su disposición lo que se ha cultivado durante ya casi 20 años.

Paradigma funcional

Aunque es claro que Scala no es un lenguaje funcional con lo que implica el término, es un leguaje que permite aplicar muchas técnicas funcionales que son realmente útiles... también implica que el propio diseño del lenguaje no permite hacer muchas cosas que en Java si se podían... pero realmente no es algo que se termine extrañando (ya que también este olvido... hace olvidar aquellos quebraderos de cabeza en noches en vela frente al PC).

Paralelismo y concurrencia

Scala, como su nombre lo sugiere, es un lenguaje pensado desde el inicio para ser escalable... tanto la escalabilidad horizontal como la vertical son inerentes al lenguaje, y pueden ser usadas sin ningun dolor. Muchas cosas en escencia sencillas pero que implicarían usar hilos sincronizados y complejas lógicas, vienen dentro de las bibliotecas estandar, y suelen ser tan sencillas de aplicar que muchas veces sorprende.

Patrones de diseño y buenas prácticas

Cosas tan sencillas como un singleton (el patron de diseño), suelen implicar tener que programar su comportamiento en la mayoría de los lenguajes. Scala implemente la sentencia object cuando se quieren crear "clases con una unica instancia", o lo que es igual: un singleton...
La instanciación peresoza (lazy), es una palabra reservada del lenguaje... y así, hay más ejemplos de patrones de diseño que implicitamente se usan sin necesidad de ser complicados, porque se hacen naturales de usar.


Así, aunque pueden haber muchas más razones por las cuales Scala es interesante, estas son quizás las más relevantes desde mi punto de vista.
Si estás buscando alguna excusa para aprender Scala, intentaré escribir algunos articulos más de cómo usar algunas de las herramietas propias del leguaje.

Suerte :)

No hay comentarios.: