Scala est présenté comme un langage évolutif, une fonctionnalité qui est même incluse dans son nom :
Le nom Scala est un portemanteau «évolutif» et «langage», ce qui signifie qu'il est conçu pour évoluer avec les demandes de ses utilisateurs.
Que signifie «évolutif» dans le contexte de Scala? Qu'est-ce qui rend Scala plus évolutif que, disons, Java?
scala
scalability
prasonscala
la source
la source
Réponses:
Lorsque Martin Odersky parle de la scala comme d'un choix de langue évolutif, ce qu'il veut dire, c'est que la langue elle-même est appropriée pour:
Il ne fait certainement pas référence à l'évolutivité du point de vue des performances!
Le fait qu'il puisse affirmer que scala est aussi approprié pour les scripts quick'n'dirty que pour le déploiement à grande échelle est à peu près comme suit:
Scripting
Scala est idéal pour les scripts, car son inférence de type et son style fonctionnel le rendent à la fois concis et idéal pour découper et découper des collections, etc.
Applications
Scala est idéal pour écrire des applications, car il s'agit d'un langage à vérification de type statique avec de grandes fonctionnalités pour travailler dans des styles fonctionnels et impératifs. Scala est compatible avec Java et vous pouvez donc tirer parti d'un énorme écosystème de bibliothèques.
Déploiement d'entreprise
Scala compile en bytecode et s'exécute sur la machine virtuelle Java, un système stable avec de grandes performances, par rapport aux langages (soi-disant) dynamiquement typés (c'est-à-dire non typés). Encore une fois, le fait qu'il soit typé statiquement signifie que le refactoring est beaucoup plus facile sur les grandes bases de code.
la source
Ce que dit Odersky (diapositive 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf ):
Cela signifie, évolutif signifie en termes de flexibilité et d'expressivité. Vous pouvez créer vos propres structures de contrôle. Par exemple, le framework des acteurs est une bibliothèque, mais il semble qu'il utilise des fonctionnalités de langage.
Cela signifie que Scala évoluera en fonction de l'abstraction nécessaire, pas nécessairement en termes de "réponse à 1 000 000 de requêtes en une seconde" (mais Scala est ici aussi fort).
la source
Ce qui limite l'évolutivité de Java dans la pratique n'est pas la JVM, c'est la difficulté d'écrire du code concurrent correct. Scala facilite cela grâce à son support pour la programmation fonctionnelle et le modèle d'acteur.
Java peut être très évolutif lorsque la concurrence est facile, comme dans les serveurs Web (chaque demande est presque complètement indépendante). Mais quand il s'agit de paralléliser une seule tâche de longue durée, il peut être difficile de bien faire les choses.
la source
Scala signifie langage évolutif , cela n'a rien à voir avec les caractéristiques de performance. Vous pouvez trouver une meilleure explication ici: http://www.artima.com/scalazine/articles/scalable-language.html
la source
Ce n'est pas nécessairement le langage lui-même qui est plus évolutif que Java, car vous dites que les deux langages peuvent produire le même bytecode.
Mais le modèle Actor et le style de programmation fonctionnel peuvent améliorer l'évolutivité (en un mot, simplifiant la programmation simultanée correcte et réduisant les besoins de synchronisation).
Pour obtenir un meilleur aperçu, jetez un œil au modèle d'acteur et comparez-le avec une application java multi-thread traditionnelle:
Vous pouvez même utiliser le framework Akka pour créer une application Java hautement évolutive sans codage dans Scala:
la source