Scala es relativamente nuevo en la escena de la programación, pero se ha hecho popular muy rápidamente. Su nombre es un acrónimo de «scalable» (escalable) y «language» (lenguaje), especialmente diseñado para crecer con la demanda del usuario.
Al ser muy parecido a la Programación Java, el código fuente de Scala se compila en código de bytes Java. El código ejecutable resultante se ejecuta en una JVM (Java Virtual Machine). En realidad, admite la interoperabilidad del lenguaje con Java. Por lo tanto, puede hacer referencia a bibliotecas escritas en ambos idiomas, en ambos. Otras similitudes entre Java y Scala incluyen una naturaleza orientada a objetos y una sintaxis de llaves.
Sin embargo, a diferencia de Java, Scala admite características de programación funcional, como inferencia de tipos, inmutabilidad, evaluación diferida, coincidencia de patrones y funciones anidadas. También admite funciones de orden superior, donde una función puede devolver otra o tomarla como parámetro. Scala también tiene un sistema de tipos avanzado que admite tipos de datos algebraicos, tipos de orden superior, tipos anónimos y covarianza y contravarianza.
Finalmente, Scala también permite funcionalidades como sobrecarga del operador, cadenas sin formato, parámetros opcionales y parámetros con nombre. Sin embargo, no admite excepciones marcadas, como lo hace Java.
La historia de Scala nos lleva al 2001 en la École Polytechnique Fédérale de Lausanne por Martin Odersky, cocreador del lenguaje de programación Funnel genérico de Java, javac y EPFL. El primer lanzamiento público de Scala se produjo en 2004, seguido de la versión 2.0 en marzo de 2006. En 2012 fue galardonado con el ganador del concurso ScriptBowl en la conferencia JavaOne.
- En palabras de Martin Odersky
En el sitio Aritma, Odersky comparte su experiencia al crear Scala.
En 1995 aprendí sobre Java y me uní a Philip Wadler para escribir un lenguaje funcional que compilara códigos de bytes Java. Este trabajo condujo eventualmente a GJ, el nuevo compilador de Java, y a los genéricos de Java. Fue emocionante trabajar en Java debido a su gran impacto, pero también fue muy difícil porque Java es un lenguaje rico con muchas características que a menudo entran en conflicto con las extensiones de manera imprevista.
En 1999, me uní a EPFL. Pensé que ahora usaría mi libertad académica para hacer diseño de lenguajes a partir de una hoja blanca. Todavía quería combinar programación funcional y orientada a objetos, pero sin las restricciones impuestas por Java. Todo esto me llevó a Funnel, un lenguaje de programación para redes funcionales. Este era un diseño maravillosamente simple, con muy pocas características de lenguaje primitivas. Casi todo, incluidas las clases y la coincidencia de patrones, sería realizado por bibliotecas y codificaciones.
Sin embargo, resultó que el lenguaje no era muy agradable de usar en la práctica. El minimalismo es excelente para los diseñadores de lenguajes, pero no para los usuarios. Los usuarios no expertos no saben cómo hacer las codificaciones necesarias, y los usuarios expertos se aburren de tener que hacerlo una y otra vez. Además, rápidamente se hizo evidente que cualquier lenguaje nuevo tiene la posibilidad de ser aceptado si viene con un gran conjunto de bibliotecas estándar.
Funnel condujo a Scala, cuyo diseño comenzó en 2001, y que se lanzó por primera vez en 2003. Scala no es una extensión de Java, pero es interoperable con él. Scala se traduce a códigos de bytes de Java, y la eficiencia de sus programas compilados generalmente es igual a la de Java.
Scala fue diseñado para ser orientado a objetos y funcional. Es un lenguaje puro orientado a objetos en el sentido de que cada valor es un objeto. Los objetos se definen por clases, que se pueden componer usando la composición mixin. Scala también es un lenguaje funcional en el sentido de que cada función es un valor. Las funciones se pueden anidar y pueden operar en datos utilizando la coincidencia de patrones.
La comunidad de usuarios de Scala todavía es relativamente pequeña, pero está creciendo.
- Ventajas de Scala
Para concluir compartimos algunas de las ventajas que ofrece Scala a los desarrolladores.
Las características complejas de Scala promueven una mejor codificación y ofrecen un aumento del rendimiento. Funciones, macros y tuplas son solo algunos de los avances que ofrece Scala. Scala incorpora programación funcional y programación orientada a objetos en un lenguaje poderoso.
Comparar Scala con un lenguaje como C ++ o Go es difícil. Una mejor comparación es con Java.
La razón por la que comparamos Scala con Java es porque el lenguaje se ejecuta en el entorno Java Virtual Machine.
Los desarrolladores y aquellos que los contratan deben aprovechar las fortalezas de Scala como lenguaje para apreciar plenamente la funcionalidad que ofrece. El lenguaje fue desarrollado para eliminar la restricción de Java, ofreciendo un lenguaje bien organizado y más limpio.
Donde pudo ver mas Información sobre Funnel.
Hola Luis Alberto,
Encontramos este sitio que podría ayudarte.
Saludos.