Scala
Un lenguaje que combina programación orientada a objetos y funcional sobre la máquina virtual de Java.
27 pasos en 1 tours, desde lo básico hasta programas completos.
Los tours
- Primera versión
- 2004
- Creado por
- Martin Odersky
- Tipado
- Estático e inferido; todo es una expresión y la inmutabilidad es lo predeterminado
- Los fragmentos siguen
- 3.8
- Extensiones de archivo
- .scala, .sc
Para qué sirve
Scala es el lenguaje que habla el big data: Apache Spark, Kafka, Akka y Flink se escribieron en él, y todo equipo sobre la JVM que dejó atrás la ceremonia de Java mantiene un servicio en Scala, o diez. Compila a bytecode común de la JVM y llama directo a cualquier biblioteca de Java, lo que lo volvió la vía de menor riesgo para meter programación funcional en una empresa — el feed de Twitter, los pipelines de LinkedIn y casi todas las mesas de trading cuantitativo aceptaron ese trato.
La apuesta del lenguaje es la fusión antes que la pureza: objetos y funciones, tipos estáticos e inferencia, así que una lambda de una línea y un sistema de mil clases se sienten igual de nativos. La coincidencia de patrones con verificación de exhaustividad, las case class y Option en lugar de null entregan casi todo el dividendo de corrección de los lenguajes funcionales más estrictos, y aun así se leen como código que alguien de Java puede revisar.
Scala 3 (2021) fue la limpieza más grande en la historia del lenguaje: la sintaxis sin llaves guiada por indentación, enums que por fin dicen lo que significa un ADT, métodos de extensión que reemplazan los trucos de conversión implícita, y los given que jubilan a los implicits que le dieron al lenguaje su fama de temible. El dialecto que practican estos fragmentos es ese núcleo moderno — la parte que se transfiere a Kotlin, Rust, Swift y a todos los demás lenguajes que llevan años tomándole ideas en silencio.
De dónde viene
Martin Odersky ya había escrito el compilador que se convirtió en el soporte de genéricos de javac cuando concluyó que Java no se podía arreglar desde adentro, y lanzó Scala desde la EPFL en 2004: un lenguaje que probaba que los objetos y la programación funcional cabían en un mismo sistema de tipos sobre la JVM.
La mudanza de Twitter desde Ruby en 2009 puso a Scala en el mapa de la industria, y los años 2010 fueron su auge: Spark lo volvió el lenguaje del big data, Akka el de los sistemas distribuidos, y las versiones 2.8 a 2.13 hicieron de su biblioteca de colecciones la que los demás copian. Esa misma década le ganó fama de complejo, porque los implicits y las bibliotecas cargadas de operadores dejaban que cada base de código derivara en su propio dialecto.
Scala 3, una década de trabajo sobre el cálculo DOT que probó formalmente que el sistema de tipos era sólido, llegó en 2021 con la sintaxis nueva, los enums y los given — y el ecosistema lo siguió a lo largo de los 2020, con la línea LTS contra la que compilan estos fragmentos. Hoy el lenguaje comparte con Kotlin el espacio pragmático-funcional que él mismo inventó, y sus ideas se ven en cada rival.
Cómo se siente teclearlo
Scala 3 se teclea limpio y denso: sin punto y coma, con pocas llaves, pero con flechas por todas partes — => en las lambdas y los casos de match, -> en los literales de Map, <- en los for con yield. El guion bajo hace seis trabajos distintos y la interpolación s"${}" mantiene ocupada la mano derecha. Ahora la indentación es estructura, así que la disciplina de dos espacios de un match dentro de un def dentro de un if tiene que caer exacta, y cada case debe quedar alineado bajo el anterior.
27 pasos en 1 tours, desde lo básico hasta programas completos.