127 votes

Quelles sont les principales différences entre la Scala et Groovy ?

Sur la surface Groovy et Scala ressemblent assez, en dehors de la Scala étant statiquement typé et Groovy dynamique.

  • Quelles sont les autres principales différences et avantages chaque ont rapport à l’autre ?
  • Comment sont-ils vraiment ?
  • Y a-t-il concurrence entre les deux ?- Dans l’affirmative, qui pensez-vous va gagner à long terme ?

228voto

James Iry Points 14192

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 les langues comme le Rubis.

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.

Les deux 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. Ce qui est important dans la programmation fonctionnelle, mais de moins en moins important dans la programmation impérative.

Les deux 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 les interprétations de la" la, 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 a pas la 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. 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. des 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.

12voto

hamsterofdeath Points 41

Scala est censé être une langue hybride oo/fonctionnel et est très bien planifiée et conçue. Groovy ressemble plus à un ensemble d’améliorations que beaucoup de gens aimeraient utiliser en java. J’ai pris un examen approfondi à la fois, je ne peux dire  :)

aucun d’eux n’est meilleur ou pire que l’autre. Groovy est très bon à Meta-programmation, scala est très bon à tout ce qui n’a pas besoin so...i Meta-programmation, ont tendance à utiliser à la fois.

11voto

jasonnerothin Points 1001

Scala a des acteurs, qui facilitent grandement l’accès concurrentiel à mettre en œuvre. Et les Traits qui donnent certes, type sécurisé héritage multiple.

7voto

Don Werve Points 3901

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.

4voto

Nous avons utilisé beaucoup de Groovy et peut dire avec certitude que c’est très bon dans le développement d’applications web de qualité production, non seulement pour le prototypage. Il est très facile à utiliser et permet un développement rapide, tellement qu’il est donc difficile de sevrer les développeurs loin de Groovy au plan Java après que qu’ils ont utilisé pendant un certain temps, dans mon expérience.

Je n’ai pas beaucoup utilisé la Scala et donc ne peut pas dire grand-chose.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X