Clojure

Définition

Clojure est un dialecte moderne et dynamiquement typé de Lisp, qui met l’accent sur l’immuabilité, la concurrence et les patterns de programmation fonctionnelle.

Détails clés

  • Paradigme : Multi-paradigme (fonctionnel, concurrent, impératif)
  • Licence : Eclipse Public License 1.0
  • Runtimes : Clojure (JVM), ClojureScript (JS), ClojureCLR (.NET)
  • Créateur : Rich Hickey
  • Première publication : 2007

Fonctionnalités du langage

  • Immuabilité par défaut : Les structures de données persistantes garantissent la sécurité des threads
  • Primitives de concurrence : Atomes, refs, vars, agents pour la gestion synchronisée de l’état
  • Macros : Transformation de code puissante au moment de la compilation (héritée de Lisp)
  • Homoiconicité : Le code est une donnée (S-expressions)
  • Développement piloté par REPL : Flux de travail de développement interactif
  • Interopérabilité : Accès complet aux bibliothèques JVM (interop avec Java)

Structures de données principales

|| Structure | Description | ||———–|————-| || List | Collection ordonnée, liste chaînée | || Vector | Indexé, persistant, accès en O(log32 n) | || Map | Paires clé-valeur, persistant | || Set | Éléments uniques, persistant | || Queue | Collection FIFO |

Frameworks et outils principaux

|| Outil | Objectif | ||——|———| || Ring | Interface de serveur web (similaire à WSGI pour Python) | || Compojure | Framework de routage web | || ClojureScript | Compiler Clojure en JavaScript | || tools.deps | Gestion des dépendances | || Leiningen | Outil de build et gestion de projet | || Re-frame | Framework frontend réactif (similaire à React) |

Cas d’utilisation

  • Backends d’applications web
  • Traitement et analyse de données
  • Services financiers (fonds spéculatifs, plateformes de trading)
  • Systèmes temps réel
  • Configuration et DSLs

Comparaison avec les langages apparentés