Quelles sont les principales différences entre Scala et Groovy?
Sur la surface Groovy et Scala ressemblent, à côté de la Scala étant statiquement typé, et Groovy dynamique.
- Quelles sont les autres principales différences, et les avantages ont chacun plus de l'autre?
- Comment sont-elles vraiment?
- Est-il de la concurrence entre les deux?
- Si oui, à qui pensez-vous va gagner sur le long terme?
- Groovy 2.0 inclut également le typage statique: infoq.com/articles/new-groovy-20
Vous devez vous connecter pour publier un commentaire.
Ils sont à la fois les langages orientés objets pour la JVM qui ont des lambdas et de fermetures et d'interagir avec Java. Autre que cela, ils sont extrêmement différents.
Groovy est une "dynamique" de la langue non seulement dans le sens qu'il est dynamiquement typé, mais qu'il prend en charge dynamique de la méta-programmation.
Scala est un "statique" de la langue en ce qu'elle est statiquement typé et n'a quasiment aucune dynamique de la méta-programmation au-delà de l'ennui, des choses que vous pouvez faire en Java. Remarque, Scala système de type statique est beaucoup plus uniforme et plus complexe que de Java.
Groovy est syntaxiquement influencé par Java, mais sémantiquement plus influencée par des langages comme Ruby.
Scala est syntaxiquement influencé par les deux Ruby et Java. Il est sémantiquement plus influencée par Java, SML, Haskell, et une très obscur langage OO appelé gBeta.
Groovy a "accidentelle" de la répartition multiple en raison de la façon dont il gère Java surcharge.
Scala est la seule et unique livraison seulement, mais a SML inspiré de la correspondance de motif pour faire face à certaines des mêmes types de problèmes que de multiples expédition est destinée à gérer. Toutefois, lorsque plusieurs d'expédition ne peut l'expédition de l'exécution le type, la Scala, à la correspondance de motif peut envoyer de l'exécution de types, les valeurs, ou les deux. La correspondance de motif comprend aussi un point de vue syntaxique agréable variable de liaison. Il est difficile de surcharge quoi de plus agréable que cette seule caractéristique à elle seule rend la programmation Scala.
À la fois Scala et Groovy soutenir une forme d'héritage multiple avec mixin (bien que Scala appelle les caractéristiques).
Scala prend en charge partielle de la fonction de l'application et de lancer au niveau du langage, Groovy a un maladroit "curry" méthode pour faire fonction partielle de l'application.
Scala direct récursion sur la queue de l'optimisation. Je ne crois pas que Groovy n'. Ce qui est important dans la programmation fonctionnelle, mais de moins en moins important dans la programmation impérative.
À la fois Scala et Groovy sont très évaluée par défaut. Cependant, Scala soutient en appel par le nom des paramètres. Groovy n'a pas d'appel par nom doit être émulé avec des fermetures.
Scala a "pour des compréhensions", une généralisation des interprétations de la liste trouvée dans d'autres langues (techniquement, ce sont des interprétations de la monade, plus un peu, quelque part entre Haskell faire et C#LINQ).
Scala n'a pas de notion de "statique" des champs, l'intérieur des classes, des méthodes, etc - il utilise les objets singleton à la place. Groovy utilise le concept statique.
Scala n'a pas intégré dans la sélection des opérateurs arithmétiques dans tout le chemin que Groovy n'. En Scala, vous pouvez nommer les méthodes de manière très flexible.
Groovy a la elvis opérateur pour gérer la valeur null. Scala programmeurs préfèrent utiliser des types d'Option pour utiliser la valeur null, mais il est facile d'écrire un elvis opérateur en Scala si vous le souhaitez.
Enfin, il y a des mensonges, il y a des putain de mensonges, et puis il y a des repères. La langue de l'ordinateur de repères jeu rangs Scala entre considérablement plus rapide que Groovy (allant de deux à 93 fois plus rapide), tout en conservant à peu près la même taille source. repères.
Je suis sûr qu'il ya beaucoup, beaucoup de différences que je n'ai pas couvert. Mais j'espère que cela vous donne une idée.
Est-il une concurrence entre eux? Oui, bien sûr, mais pas autant que vous pourriez le penser. Groovy est réelle concurrence est JRuby et Jython.
Qui va gagner? Ma boule de cristal est aussi craqué comme n'importe qui d'autre.
def f(x,y) { x() + y() }; println f({1}, {2})
scala est censé être un oo/fonctionnelle hybride de la langue et de la très bien planifié et bien conçu. groovy est plus comme un ensemble d'améliorations que beaucoup de gens aiment à utiliser en java.
j'ai pris un peu plus près à la fois, donc je peux le dire 🙂
aucun des deux n'est meilleur ou pire que l'autre. groovy est très bon à la méta-programmation, la scala est très bonne à tout ce qui n'a pas besoin de la méta-programmation, donc...j'ai tendance à utiliser les deux.
Scala a des Acteurs, qui font de la simultanéité beaucoup plus facile à mettre en œuvre. Et les Traits qui donnent la vraie, typesafe l'héritage multiple.
Vous avez frappé le clou sur la tête avec la statique et de la dynamique de la frappe. Les deux font partie de la nouvelle génération de langages dynamiques, avec des fermetures, des expressions lambda, et ainsi de suite. Il y a une poignée de différences syntaxiques entre les deux, mais fonctionnellement, je ne vois pas une énorme différence entre Groovy et Scala.
Scala met en œuvre des Listes un peu différemment; en Groovy, à peu près tout est une instance de java.util.Liste, alors que les Scala utilise à la fois des Listes et des tableaux. Groovy a (je crois), meilleure chaîne d'interpolation.
Scala est plus rapide, il me semble, mais le Groovy gens sont vraiment pousser la performance de la version 2.0. 1.6 a donné un énorme bond en vitesse sur la 1.5.
Je ne pense pas que l'une ou l'autre langue sera vraiment "gagner", comme ils s'adressent à deux différentes classes de problèmes. Scala est un langage qui est très Java-like sans avoir tout à fait le même niveau de standard Java. Groovy est pour le prototypage rapide et de développement, où la vitesse est moins importante que le temps qu'il faut pour les programmeurs de mettre en œuvre le code.
Nous avons abondamment utilisé Groovy et peut dire avec confiance qu'il est très bon dans le développement de la production d'applications web de qualité, et pas seulement pour le prototypage. Il est très facile à utiliser et permet le développement rapide, de sorte que beaucoup de sorte qu'il est difficile de sevrer loin des développeurs de Groovy à plan de Java après ils l'ont utilisé pendant un certain temps, dans mon expérience.
Je n'ai pas utilisé Scala beaucoup et ne peut donc pas en dire beaucoup à ce sujet.
Scala a beaucoup plus accentuée de la courbe d'apprentissage que Groovy. Scala a beaucoup plus de soutien pour la programmation fonctionnelle avec son filtrage et la queue en fonction de la récursivité, ce qui signifie plus d'outils pour pure FP.
Scala a également dynamica compilation et je l'ai fait à l'aide de twitter eval lib (https://github.com/twitter/util ). J'ai gardé la scala de code dans un fichier à plat(sans extension) et l'utilisation d'eval créé à la scala de classe au moment de l'exécution.
Je dirais que scala est méta-programmation et a la particularité de dynamique complication