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