O Scala é cobrado como um idioma escalável, um recurso que é incluído em seu nome :
O nome Scala é um portmanteau de "escalável" e "linguagem", significando que ele foi projetado para crescer com as demandas de seus usuários.
O que significa "escalável" no contexto do Scala? O que torna o Scala mais escalável do que, digamos, o Java?
scala
scalability
prasonscala
fonte
fonte
Respostas:
Quando Martin Odersky fala sobre scala como uma escolha de idioma escalável, o que ele quer dizer é que o próprio idioma é apropriado para:
Ele certamente não está se referindo à escalabilidade da perspectiva do desempenho!
O fato de ele poder alegar que o scala é tão apropriado para scripts rápidos quanto para implantação corporativa em larga escala é o seguinte:
Script
O Scala é ótimo para scripts porque sua inferência de tipo e estilo funcional o tornam conciso e ótimo para coleções de fatiar e cortar, etc.
Formulários
O Scala é ótimo para escrever aplicativos porque é uma linguagem verificada do tipo estaticamente, com alguns ótimos recursos para trabalhar nos estilos funcionais e imperativos. O Scala é compatível com Java e, portanto, você pode aproveitar um enorme ecossistema de bibliotecas.
Implantação corporativa
O Scala compila para o bytecode e é executado na Java Virtual Machine, um sistema estável com ótimo desempenho, quando comparado às (chamadas) linguagens dinamicamente tipadas (ou seja, não tipadas). Novamente, o fato de ser digitado estaticamente significa que a refatoração é facilitada em grandes bases de código.
fonte
O que Odersky diz é (Slide 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):
Isso significa que escalável significa flexibilidade e expressividade. Você pode criar suas próprias estruturas de controle. Por exemplo, o framework de atores é uma biblioteca, mas parece que ele usa recursos de linguagem.
Isso significa que o Scala será escalado de acordo com a abstração necessária, não necessariamente em termos de "atender 1.000.000 de solicitações em um segundo" (mas o Scala também é forte aqui).
fonte
O que limita a escalabilidade do Java na prática não é a JVM, é a dificuldade de escrever o código simultâneo correto. O Scala facilita isso através do suporte à programação funcional e ao modelo de ator.
O Java pode ser muito escalável quando a concorrência é fácil, como em servidores da Web (cada solicitação é quase completamente independente). Mas quando se trata de paralelizar uma única tarefa de longa duração, pode ser uma verdadeira luta acertar.
fonte
Scala significa linguagem escalável , não tem nada a ver com características de desempenho. Você pode encontrar uma explicação melhor aqui: http://www.artima.com/scalazine/articles/scalable-language.html
fonte
Não é necessário que a linguagem em si seja mais escalável que Java, como você diz que as duas linguagens podem produzir o mesmo bytecode.
Mas o modelo do ator e o estilo de programação funcional podem melhorar a escalabilidade (simplificando a programação de simultaneidade correta e reduzindo as necessidades de sincronização).
Para obter uma visão melhor, dê uma olhada no modelo do ator e compare-o com o aplicativo java multiencadeado tradicional:
Você pode até usar a estrutura Akka para criar aplicativos Java altamente escalonáveis sem codificar no Scala:
fonte