Buscando lenguaje … ¿Scala?

scala programming language Llevo muchos años trabajando con java y llevo ya un tiempo pensando que va siendo de comenzar a aprender algún lenguaje de programación  nuevo. He jugueteado algo con python, también con groovy, trabajo con javascript con cierta frecuencia, le he echado un ojo por encima a ruby … pero son lenguajes que no me acaban de convencer.  ¿El motivo? Que no son lenguajes estáticamente tipados. Eso hace que los IDEs sean bastante deficientes a la hora de autocompletar lo que estás escribiendo, que puedas cometer errores de tecleo en las variables o métodos y no los descubras hasta tiempo de ejecución.

Dicen que son menos verbosos que java y que eso ahorra tiempo, pero tengo serias dudas si el tiempo que ahorras en escribir código no lo pierdes luego corrigiendo errores tontos de tecleo arrancando una y otra vez tu programa para descubrirlos en tiempo de ejecución. Sobre todo si el programa es un programa grande que requiera todo un montaje para arrancarlo y llegar a la zona de código que quieres probar. Sí, se que existen cosas como los test unitarios, pero también tendrías los mismos problemas de tecleo al escribir test unitarios y también sé que hay cosas que son muy difíciles de probar con test unitarios.

Por la curiosidad de aprender el lenguaje sí. Javascript, que pensaba antes de conocerlo que era un lenguaje "tonto",  me ha asombrado con sus cosas y su potencia. Entiendo que groovy, ruby, python también lo son, al menos en lo poco que he visto. Pero forma parte de mi objetivo, aparte de satisfacer mi propia curiosidad por el lenguaje, el poder darle luego una utilidad práctica en el trabajo, y la experiencia de trabajar en javascript me hace ver lo importante que es usar un lenguaje estáticamente tipado.

Ayer leí Why should I learn Scala, y creo que me ha decidido a darle una oportunidad a Scala.

Es un lenguaje del que se oye bastante últimamente y que ves que se está usando. En mis proyectos maven, cuando uso plugins o librerías de terceros, veo que rápidamente van bajándose plugins de scala y que lo usan, aunque sea por debajo. Además, es compatible con java en el sentido de que genera código compilado para la máquina virtual java, por lo que podría integrarlo fácilmente en nuestros proyectos. Sé que queda feo mezclar unos módulos en java y otros en Scala, pero es una opción para que el cambio no sea brusco.

El artículo además apoya (o al menos da importancia) mi punto de vista de la necesidad de lenguajes estáticamente tipados. Siempre es mejor encontrar errores mientras se escribe en el IDE o mientras se compila, que encontrarlos a base de probar en tiempo de ejecución.

Y el artículo además menciona un pequeño detalle con el que también tengo manía: Los setter y getter. Aunque no recuerdo dónde lo leí, decían que una ventaja de groovy era que no era necesario poner setter y getter, ya que el lenguaje los generaba automáticamente y los usaba por debajo. Pero los setter y getter tienen un motivo de existir y no son sólo para que estén. Es importante poder meter lógica más adelante en el setter o en el getter, o incluso mantenerlos tal cual aunque el atributo al que referencian cambie de tipo y/o nombre. Y parece que scala tiene contemplado ese caso. Aunque no sea necesario poner getter y setter, si es posible añadir lógica cuando se asigna un atributo e, imagino, que también cuando se lee.

Así que ayer me bajé un IDE de scala y voy a juguetear unos días a ver qué tal.

Esta entrada ha sido publicada en Lenguajes de Programación, Scala y etiquetada como . Guarda el enlace permanente.

5 respuestas a Buscando lenguaje … ¿Scala?

  1. nullpo dijo:

    Una aclaración nomas… Cuando uno define una propiedad en groovy y la llama, si hay un geter/seter configurado, el lenguaje lo llama siempre. Por ej si tenemos:

    objeto.miPropiedad = 15

    Y tenés un método setMiPropiedad, groovy va a llamar al seter. Lo mismo pasa con los geters…

    Sobre escala, me pareció muy verborragixo, pero es un excelente lenguaje… No se por donde estas aprendiendo, pero recomiendo ampliamente el curso «functional programming with scala» de coursera, dado por una universidad francesa… Si bien es muy teórico, se enseña muy bien la idea de como desarrollar en scala (y no programar en scala como si fuese java).

  2. nullpo dijo:

    Perdón por los typos, estoy escribiendo desde el movil 😛

  3. Pingback: Diario de Programación » Blog Archive » Jugueteando con Scala

  4. Pingback: Diario de Programación » Blog Archive » Tipado fuerte y débil, dinámico y estático.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.