Qué es Scala?
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 se ejecuta en la máquina virtual de Java y es compatible con las aplicaciones Java existentes.
Scala fue creado por Martin Odersky.
Características
Orientación a objetos
Scala es un lenguaje de programación puro orientado a objetos, en el sentido de que cada valor es un objeto. El tipo y comportamiento de los objetos se describe por medio de clases y traits. La abstracción de clases se realiza extendiendo otras clases y usando un mecanismo de composición basado en mixins como un reemplazo limpio de la herencia múltiple.
Lenguaje funcional
Scala 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.
Tipificado estático
Scala está equipado con un sistema de tipos expresivo que refuerza a que las abstracciones de tipos se usen en forma coherente y segura.
Extensibilidad
Scala se diseñó teniendo en mente el hecho de que en la práctica el desarrollo de aplicaciones requiere a menudo de extensiones específicas del lenguaje. Para ello, Scala proporciona una combinación única de mecanismos que hacen fácil y sin problemas agregar construcciones nuevas al lenguaje en forma de bibliotecas.
Inmutabilidad
Como lenguaje funcional, una de sus principales características es la inmutabilidad, Scala se asienta sobre muchos conceptos matemáticos que requieren de la inmutabilidad para seguir siendo válidos.
¿Cómo empiezo?
Lo más común es usar Intellij IDEA de Jetbrains con el plugin de Scala.
En mi caso prefiero usar VS Code porque es lo que uso en mi día a día y ya lo tengo tuneado con el plugin de VIM, atajos de teclado etc, así que estoy usando VS Code + Metals. Me ha soprendido lo bien que funciona, además, VS Code es más ligero que Intellij Idea.
Tanto Metals como Intellij permiten crear unos archivos llamados "worksheets" que vienen a ser como los "playgrounds" de Swift.
Una worksheet es un archivo scala con extensión .sc que puede ejecutar y obtener los resultados de la evaluación en una vista especial que aparece en el editor.
¿Para qué se usa?
Es común verlo en entornos de procesamiento de big data, se suele usar junto con Spark, Kafka y Akka. Estas herramientas, además de ser proyectos con gran impacto en el mercado, fueron construidas intencionadamente en Scala.
Decir también que la curva de aprendizaje de este lenguaje para los que venimos de otros no funcionales es bastante grande, aún así os animo a probar, yo estaba muy ciego con Python hasta que he empezado a hacer cosillas con Scala.
No soy ningún experto en Scala, pero encantado de ayudar y recibir ayuda.
Buen foro