Scala se factura como un lenguaje escalable, una característica que incluso se incluye en su nombre :
El nombre Scala es un acrónimo de "escalable" y "lenguaje", lo que significa que está diseñado para crecer con las demandas de sus usuarios.
¿Qué significa "escalable" en el contexto de Scala? ¿Qué hace que Scala sea más escalable que, por ejemplo, Java?
scala
scalability
prasonscala
fuente
fuente
Respuestas:
Cuando Martin Odersky habla de scala como una opción de idioma escalable, lo que quiere decir es que el lenguaje en sí es apropiado para:
¡Ciertamente no se refiere a la escalabilidad desde la perspectiva del rendimiento!
El hecho de que él pueda afirmar que Scala es tan apropiado para scripts rápidos y sucios como para el despliegue empresarial a gran escala es más o menos lo siguiente:
Scripting
Scala es ideal para las secuencias de comandos porque su inferencia de tipos y estilo funcional lo hacen conciso y excelente para cortar y cortar colecciones, etc.
Aplicaciones
Scala es ideal para escribir aplicaciones porque es un lenguaje marcado de tipo estático con algunas características excelentes para trabajar en estilos funcionales e imperativos. Scala es compatible con Java y, por lo tanto, puede aprovechar un enorme ecosistema de bibliotecas.
Despliegue empresarial
Scala se compila a bytecode y se ejecuta en la máquina virtual Java, un sistema estable con un gran rendimiento, en comparación con los lenguajes (llamados) dinámicamente escritos (es decir, sin tipo). Una vez más, el hecho de que está estáticamente escrito significa que la refactorización se hace mucho más fácil en bases de código grandes.
fuente
Lo que dice Odersky es (Diapositiva 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):
Esto significa que escalable se entiende en términos de flexibilidad y expresividad. Puede crear sus propias estructuras de control. Por ejemplo, el framework de actores es una biblioteca, pero parece que usa características de lenguaje.
Esto significa que Scala escalará de acuerdo con la abstracción necesaria, no necesariamente en términos de "responder 1.000.000 de solicitudes en un segundo" (pero Scala también es fuerte aquí).
fuente
Lo que limita la escalabilidad de Java en la práctica no es la JVM, es la dificultad de escribir el código concurrente correcto. Scala facilita esto a través de su soporte para programación funcional y el modelo de actor.
Java puede ser muy escalable cuando la concurrencia es fácil, como en los servidores web (cada solicitud es casi completamente independiente). Pero cuando se trata de paralelizar una sola tarea de larga duración, puede ser una verdadera lucha acertar.
fuente
Scala significa lenguaje escalable , no tiene nada que ver con las características de rendimiento. Puede encontrar una mejor explicación aquí: http://www.artima.com/scalazine/articles/scalable-language.html
fuente
Ese no es necesario el lenguaje en sí que es más escalable que Java, ya que dice que ambos idiomas pueden producir el mismo código de bytes.
Pero el modelo de actor y el estilo de programación funcional pueden mejorar la escalabilidad (en pocas palabras, simplificando la programación de concurrencia correcta y reduciendo las necesidades de sincronización).
Para obtener una mejor perspectiva, eche un vistazo al modelo de actor y compárelo con la aplicación tradicional de Java multihilo:
Incluso puede usar el marco de Akka para crear aplicaciones Java altamente escalables sin codificar en Scala:
fuente