Quelqu'un peut-il expliquer les principales différences entre Scala, Groovy et Clojure. Je connais chacune de ces compilations à exécuter sur la machine virtuelle Java, mais je voudrais une comparaison simple entre elles.
la source
Quelqu'un peut-il expliquer les principales différences entre Scala, Groovy et Clojure. Je connais chacune de ces compilations à exécuter sur la machine virtuelle Java, mais je voudrais une comparaison simple entre elles.
Groovy 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 passe-partout. Il peut passer par un interpréteur et être compilé, ce qui le rend bon pour le prototypage rapide, les scripts et l'apprentissage de langages dynamiques sans avoir à apprendre une nouvelle syntaxe (en supposant que vous connaissez Java). Depuis Groovy 2.0, il prend également en charge de plus en plus la compilation statique . Groovy prend en charge les fermetures et prend en charge la programmation dans un style quelque peu fonctionnel, bien qu'il soit encore assez loin de la définition traditionnelle de la programmation fonctionnelle.
Clojure est un dialecte de Lisp avec quelques fonctionnalités avancées comme la mémoire transactionnelle logicielle . Si vous aimez Lisp et souhaitez utiliser quelque chose comme ça sous la JVM, Clojure est pour vous. C'est peut-être le langage le plus fonctionnel sur la JVM, et certainement le plus célèbre. En outre, il met davantage l'accent sur l' immuabilité que les autres dialectes lispiens, ce qui le rapproche du cœur des amateurs de langage fonctionnel.
Scala est un langage entièrement orienté objet, plus que Java, avec l'un des systèmes de type les plus avancés disponibles sur les langages non destinés à la 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 rebute certains passionnés de ce dernier.
Groovy a une bonne acceptation et un framework 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, en particulier lorsque Jython et JRuby commencent à faire des incursions sur le terrain JVM, par rapport aux autres.
Clojure, même en écartant certaines fonctionnalités très intéressantes, a un fort attrait simplement en étant un dialecte Lisp sur JVM. Cela pourrait limiter sa popularité, certes, mais je m'attends à ce qu'il ait une communauté fidèle autour d'elle pendant longtemps.
Scala peut concurrencer directement Java et lui faire courir son argent sur presque tous les aspects. Il ne peut pas rivaliser en popularité pour le moment, bien sûr, et le manque d'un solide soutien des entreprises peut entraver son acceptation dans les environnements d'entreprise. C'est aussi un langage beaucoup plus dynamique que Java, dans le sens de son évolution. 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.
En tant que divulgation finale, je connais très bien Scala et je ne connais que les deux autres.
Scala
Scala a évolué à partir d'un langage fonctionnel pur appelé Funnel et représente une implémentation en salle blanche de presque toute la syntaxe Java, ne différant que là où une nette amélioration pourrait être apportée ou là où elle compromettrait la nature fonctionnelle du langage. Ces différences incluent les objets singleton au lieu des méthodes statiques et l'inférence de type.
Une grande partie de cela était basée sur les travaux antérieurs de Martin Odersky avec le langage Pizza . L'intégration OO / FP va bien au-delà de simples fermetures et a conduit à qualifier le langage de post-fonctionnel.
Malgré cela, c'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 qu'il devrait intégrer très étroitement avec Java.
Sensationnel
Groovy s'attaque explicitement à deux des plus grandes critiques de Java en
Il est peut-être syntaxiquement le plus proche de Java, n'offrant pas certaines des constructions fonctionnelles les plus riches fournies par Clojure et Scala, mais offrant néanmoins une nette amélioration évolutive - en particulier pour l'écriture de programmes de style script.
Groovy a le soutien commercial le plus solide des trois langues, principalement via springsource.
Clojure
Clojure est un langage fonctionnel de la famille LISP, il est également typé dynamiquement.
Des fonctionnalités telles que la prise en charge STM lui confèrent une des meilleures prises en charge simultanées prêtes à l'emploi , tandis que Scala nécessite une bibliothèque tierce telle que Akka pour la dupliquer.
Syntaxiquement, c'est aussi le plus éloigné des trois langages du code Java typique.
Je dois également révéler que je connais le mieux Scala :)
la source
Je n'ai jamais eu le temps de jouer avec clojure. Mais pour scala vs groovy, ce sont les mots de James Strachan - créateur Groovy
Vous pouvez lire toute l'histoire ici
la source
Ils peuvent être différenciés selon leur provenance ou les développeurs qu'ils ciblent principalement.
Groovy est un peu comme la version de script de Java. Les programmeurs Java de longue date se sentent chez eux lorsqu'ils créent des 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 afin que les développeurs Lisp, Scheme ou Haskell puissent se sentir à l'aise lors du développement avec ce langage.
la source
Je lis le livre des programmeurs pragmatiques "Recettes Groovy: Graisser les roues de Java" par Scott Davis, Copyright 2008 et imprimé en avril de la même année.
C'est un peu dépassé 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 cela fonctionne très bien. Selon le livre, l'inverse est vrai si j'inclus les bibliothèques requises. Jusqu'à présent, l'expérimentation semble le confirmer.
la source
Évidemment, la syntaxe est complètement différente (Groovy est le plus proche de Java), mais je suppose que ce n'est pas ce que vous demandez.
Si vous êtes intéressé à les utiliser pour scripter une application Java, Scala n'est probablement pas un bon choix, car il n'y a pas de moyen facile de l'évaluer à partir de Java, alors que Groovy est particulièrement adapté à cette fin.
la source
eval
requis.