Question Scala vs. Groovy vs. Clojure [fermé]


Quelqu'un peut-il s'il vous plaît expliquer les différences majeures entre Scala, Groovy et Clojure. Je sais que chacune de ces compilations fonctionne sur la JVM, mais j'aimerais une simple comparaison entre elles.


676
2017-08-22 00:08


origine


Réponses:


Sensationnel est un langage typé dynamiquement, dont la syntaxe est très proche de Java, avec un certain nombre d'améliorations de syntaxe qui permettent un code plus léger et moins courant. Il peut fonctionner à travers un interprète ainsi que d'être compilé, ce qui le rend bon pour le prototypage rapide, les scripts et l'apprentissage des langues dynamiques sans avoir à apprendre une nouvelle syntaxe (en supposant que vous connaissez Java). À partir de Groovy 2.0, il a également un soutien croissant pour compilation statique. Groovy supporte les fermetures et supporte la programmation dans un style quelque peu fonctionnel, bien qu'il soit encore loin de la définition traditionnelle de la programmation fonctionnelle.

Clojure est un dialecte de Lisp avec quelques fonctionnalités avancées comme Mémoire transactionnelle de logiciel. Si vous aimez Lisp et que vous voulez utiliser quelque chose comme ça sous la JVM, Clojure est fait pour vous. C'est peut-être le plus Langage fonctionnel fonctionnant sur la JVM, et certainement la plus célèbre. En outre, il met davantage l'accent sur immutabilité que d'autres dialectes Lisp, ce qui le rapproche davantage du cœur des adeptes du langage fonctionnel.

Scala est un langage entièrement orienté objet, plus que Java, avec l'un des plus avancés systèmes de type disponible sur des langages non-recherche, et certainement le système de type le plus avancé sur la JVM. Il combine également de nombreux concepts et caractéristiques des langages fonctionnels, sans compromettre l'orientation de l'objet, mais son compromis sur les caractéristiques du langage fonctionnel a mis à l'écart certains passionnés de ce dernier.

Groovy a une bonne acceptation et un cadre web populaire dans Grails. Il alimente également le système de construction Gradle, qui devient une alternative populaire à Maven. Personnellement, je pense que c'est un langage avec une utilité limitée, d'autant plus que Jython et JRuby commencent à faire des incursions sur la terre de la JVM, par rapport aux autres.

Clojure, même sans tenir compte de certaines fonctionnalités très intéressantes, a un fort attrait en étant un dialecte Lisp sur JVM. Il pourrait limiter sa popularité, accordée, mais je m'attends à ce qu'il aura une communauté fidèle autour d'elle pendant une longue période.

Scala peut concurrencer directement Java, et lui donner une course pour son argent sur presque tous les aspects. Il ne peut évidemment pas rivaliser de popularité en ce moment, et l'absence d'un solide soutien de la part des entreprises peut nuire à son acceptation dans les environnements d'entreprise. C'est aussi un langage beaucoup plus dynamique que Java, dans le sens de l'évolution de la langue. Du point de vue de la langue, c'est une bonne chose. Du point de vue des utilisateurs qui prévoient d'écrire des milliers de lignes de code, ce n'est pas le cas.

Comme une divulgation finale, je suis très familier avec Scala, et ne connaissait que les deux autres.


874
2017-08-22 02:39



Scala

Scala a évolué à partir d'un langage fonctionnel pur connu sous le nom Entonnoir et représente une implémentation en salle blanche de presque toute la syntaxe de Java, ne différant que là où une amélioration claire pourrait être faite ou où elle compromettrait la nature fonctionnelle du langage. De telles différences incluent les objets singleton au lieu des méthodes statiques, et l'inférence de type.

Une grande partie de ceci était basée sur le travail antérieur de Martin Odersky avec le Pizza la langue. L'intégration OO / PF va bien au-delà des simples fermetures et a conduit à ce que le langage soit décrit comme post-fonctionnel.

Malgré cela, il est le plus proche de Java à bien des égards. Principalement en raison d'une combinaison de support OO et de typage statique, mais aussi en raison d'un objectif explicite dans la conception du langage qui devrait s'intégrer très étroitement avec Java.

Sensationnel

Groovy aborde explicitement deux des plus grandes critiques de Java par

  • étant dynamiquement typé, ce qui supprime beaucoup de passe-partout et
  • ajouter des fermetures à la langue.

C'est peut-être syntaxiquement le plus proche de Java, n'offrant pas certaines des constructions fonctionnelles plus riches que Clojure et Scala fournissent, mais offrant toujours une amélioration évidente de l'évolution - en particulier pour l'écriture de programmes script-syle.

Groovy a le plus fort soutien commercial des trois langues, principalement via springsource.

Clojure

Clojure est un langage fonctionnel dans la famille LISP, il est également dynamiquement typé.

Des fonctionnalités telles que la prise en charge de STM lui confèrent une prise en charge des accès simultanés optimale, tandis que Scala requiert une bibliothèque tierce telle que Akka dupliquer cela.

Syntaxiquement, c'est aussi la plus éloignée des trois langues du code Java typique.

Je dois aussi révéler que je connais le mieux Scala :)


219
2017-09-16 22:01



Je n'ai jamais eu le temps de jouer avec clojure. Mais pour scala vs groovy, ce sont des mots de James Strachan - Groovy créateur

"Bien que mon conseil pour le remplacement à long terme de javac est Scala.   Je suis très impressionné par ça! Je peux dire honnêtement si quelqu'un m'avait montré   le livre Programmation en Scala de Martin Odersky, Lex Spoon & Bill   Venners en 2003, je n'aurais probablement jamais créé Groovy. "

Vous pouvez lire toute l'histoire ici


68
2018-04-03 13:59



Ils peuvent être différenciés d'où ils viennent ou quels sont les développeurs qu'ils ciblent principalement.

Sensationnel est un peu comme la version script de Java. Les programmeurs Java de longue date se sentent chez eux lors de la construction d'applications agiles soutenues par de grandes architectures. Groovy on Grails est, comme son nom l'indique, similaire au framework Rails. Pour les personnes qui ne veulent pas se soucier de la verbosité de Java tout le temps.

Scala est un langage de programmation orienté objet et fonctionnel et les programmeurs Ruby ou Python peuvent se sentir plus proches de celui-ci. Il emploie beaucoup de bonnes idées communes trouvées dans ces langages de programmation.

Clojure est un dialecte du langage de programmation Lisp, donc les développeurs Lisp, Scheme ou Haskell peuvent se sentir chez eux tout en développant avec ce langage.


30
2017-11-18 19:18



Je suis en train de lire le livre de Pragmatic Programmers "Groovy Recipes: Graisser les roues de Java" de Scott Davis, Copyright 2008 et imprimé en avril de la même année.

C'est un peu démodé mais le livre montre clairement que Groovy est littéralement une extension de Java. Je peux écrire du code Java qui fonctionne exactement comme Java et renommer le fichier * .groovy et ça marche bien. Selon le livre, l'inverse est vrai si j'inclue les bibliothèques requises. Jusqu'à présent, l'expérimentation semble confirmer cela.


8
2017-08-22 00:33



Évidemment, la syntaxe est complètement différente (Groovy est plus proche de Java), mais je suppose que ce n'est pas ce que vous demandez.

Si vous souhaitez les utiliser pour scripter une application Java, Scala n'est probablement pas un bon choix, car il existe pas de moyen facile d'évaluer de Java, alors que Groovy est particulièrement adapté à cet effet.


4