web-dev-qa-db-fra.com

À quoi sert Clojure?

Pour quelles applications du monde réel les gens utilisent-ils Clojure?

J'utilise Groovy pour les trucs de colle, Java pour les gros systèmes, scripts Python/Perl pour l'analyse et la colle. Je pouvais me voir appeler dans Clojure depuis Java mais je Je ne vois pas où je l'emploierais à part entière. Il me semble qu'il serait plus facile d'utiliser presque n'importe quel langage de script pour des tâches ad hoc.

Je ne suis pas un expert Groovy ou un fanboy par tous les moyens mais cela me frappe qu'il a un meilleur cadre de support, des outils et beaucoup de constructions de langage (fermetures, programmation fonctionnelle). On pourrait en dire autant de Scala.

Se pourrait-il que son avenir soit celui d'un langage intégré à d'autres systèmes?

93
Fortyrunner

J'ai utilisé Clojure pour:

  1. Gratter des pages Web
  2. Scripts shell
  3. Création de sites Web
  4. Jouer avec OpenGL
  5. Écriture de serveurs Web asynchrones
  6. Modèles HTML
  7. Exécution de tâches parallèles (récupération de plusieurs URL et traitement en parallèle)
  8. Jouer avec l'audio en temps réel
  9. Des simulations

C'est le truc pratique/amusant.

Mais Clojure a aussi beaucoup de profondeur théorique. Des idées qui deviendront de plus en plus pertinentes à mesure que le courant dominant comprendra vraiment le potentiel de la programmation fonctionnelle.

Une opinion personnelle, mais Clojure fournit de meilleures constructions de langage pour organiser correctement les logiciels (sans causer de douleur excessive au programmeur qui travaille) de toutes les langues que j'ai utilisées jusqu'à présent sur le plan académique et professionnel - C, C++, Objective-C, Java, JavaScript, Python, Ruby.

Ce qui ne veut pas dire que Clojure est parfait. Mais il me semble que c'est construit sur une meilleure base que la plupart de ce qui existe.

82
dnolen

Peut-être commencer par Rich Hickey justification .

En ce qui concerne les applications du monde réel, qu'en est-il appel nominal de l'utilisation de la production du groupe google?

19
Corbin March

Clojure est largement utilisé pour le traitement de gros volumes de données. Il est très bien adapté à l'exploration de données/AI commerciale (c'est-à-dire: Runa) et aux prévisions à grande échelle (alias WeatherBill). L'histoire de la concurrence de Clojure aide vraiment dans ces domaines lourds de données où le traitement parallèle est tout simplement la seule réponse.

16
Arthur Ulfeldt

Eh bien, c'est une question difficile à répondre. Qu'est-ce que tu veux faire? Il n'y a pas grand-chose pour lequel Clojure n'est pas vraiment adapté. Je veux dire, ce n'est pas vraiment génial pour un seul script de ligne de commande à cause du temps de démarrage de la JVM (sauf si vous utilisez cake ou quelque chose de similaire), mais cela peut être dit pour n'importe quel langage JVM .

Clojure est particulièrement adapté aux tâches simultanées. Il a été construit à partir de zéro pour être un langage génial pour la concurrence, et son système STM est fantastique. Si vous avez besoin de faire des trucs liés à la concurrence hardcore, Clojure pourrait être particulièrement adapté à cette tâche.

Cependant, il faut se rappeler que Clojure est un langage à usage général. Il n'est pas seulement adapté à certaines niches et il a tendance à être utile pour de nombreuses ou toutes les choses auxquelles les autres langages JVM pourraient être adaptés.

Clojure a été conçu pour être une langue fantastique à part entière, et pas nécessairement une langue de colle. Vous pouvez créer des systèmes à partir de zéro dans Clojure sans jamais toucher directement à Java code directement. Non pas qu'il ne fasse pas un joli langage de collage, je sais que beaucoup de gens l'ont utilisé comme tel.

Si vous avez quelque chose en tête, la meilleure chose à faire est de considérer à quoi ressemblerait la solution dans toutes les langues qui sont des options. Si cela semble/se sent mieux à Groovy, allez-y avec Groovy. Ce sont deux langues radicalement différentes, et elles ont toutes deux leurs objectifs.

12
Rayne

Vous pouvez utiliser Clojure partout où vous utiliseriez Groovy ou Java. Pourquoi voudriez-vous faire ça? Certaines personnes aiment LISP. Ceux-ci choisiront clojure plutôt que Groovy. Certaines personnes n'aiment pas LISP. Ceux-ci choisiront Groovy.

7
Vagif Verdi