Le langage de programmation Clojure, un dialecte de Lisp, associe accessibilité et simplicité à une infrastructure conçue pour la programmation multithread.
Contrairement aux langages orientés objet qui encapsulent des données sous forme d'objets personnalisés, Clojure ne les empaquette pas dans des couches de définitions de classe, d'héritage et de déclarations de type. Au lieu de cela, les développeurs peuvent créer des modèles d'information complets à l'aide de structures de données immuables intégrées. Les développeurs peuvent utiliser Clojure pour développer leurs programmes avec des données chargées, pendant que l’équipe teste le logiciel et corrige les bugs. Tout cela peut se produire pendant la création de fonctionnalités et l'ajout de fonctions.
Clojure est conçu pour les machines virtuelles Java (JVM), Common Language Runtime et les moteurs JavaScript. C'est compilé et dynamique. Clojure est disponible en tant qu'installateur et script pratique pour une utilisation sur Linux et macOS et en tant que plug-in cursif IntelliJ IDEA pour les programmeurs Windows.
Pour commencer à utiliser le langage de programmation Clojure, vous devez d’abord vous familiariser avec les concepts en jeu basés sur Lisp, tels que "le code en tant que données", la simultanéité et l’immuabilité. Familiarisez-vous ensuite avec les principales ressources et outils Clojure pour les programmeurs.
Sommaire
Code en tant que données, simultanéité et immuabilité
La syntaxe uniforme, les capacités macro et la structure globale de Clojure en tant que dialecte de Lisp permettent une programmation rapide et concise. La méta-programmation est facilitée par le concept code-as-data, qui repose sur l'idée que la structure de programmation du langage imite la syntaxe.
Les développeurs travaillant avec un langage de code en tant que données appliquent les mêmes opérations et transformations à un bloc de code comme s'il s'agissait d'une structure de données native. Ils manipulent le contenu par programmation afin que le code fonctionne comme n'importe quelle autre structure de données dans un environnement.
La programmation simultanée de Clojure tire parti de la puissance de traitement multicœur commune aux serveurs. Avec la simultanéité, plusieurs opérations s'exécutent de manière séquentielle sur plusieurs cœurs, en se chevauchant si nécessaire, afin qu'un processus soit exécuté correctement. En appelant des méthodes consécutives plutôt qu'en exécutant des opérations une par une, les développeurs peuvent s'assurer que le programme a un débit et des performances supérieurs, avec moins de temps système et de latence.
Plus rentable que la programmation parallèle – un sous-ensemble de la simultanéité dans lequel un seul processus est géré simultanément par plusieurs cœurs – la conception de la programmation simultanée de Clojure permet de gérer plusieurs threads de contrôle de manière indépendante. En utilisant de puissantes primitives de concurrence, les développeurs Clojure peuvent facilement tirer parti de plusieurs cœurs.
L'efficacité de Clojure peut également être attribuée à une dépendance à l'égard de structures de données et de collections immuables. Lorsque les développeurs ajoutent, mettent à jour et suppriment des éléments, Clojure conserve la même valeur pour ces collections.
L’immuabilité garantit que toutes les propriétés possibles des objets sont définies au moment de leur construction et qu’elles ne peuvent pas être modifiées par la suite. L'immuabilité permet aux threads de partager des données, ce qui le rend bien adapté au développement de programmes multithreads. Et il n'y a aucun risque que plusieurs threads écrivent dans la structure de données en même temps.
Grâce au multithreading, les programmeurs peuvent assurer une exécution économique et une communication facile au sein de chaque ensemble d'instructions donné à la machine.
Environnements de développement, éditeurs et autres outils
Clojure propose une gamme d’outils permettant de modeler le langage de programmation expressif de manière à ce que le vocabulaire et la grammaire s’alignent efficacement avec un domaine problématique. Par exemple, le système dynamique de Clojure offre la possibilité de redéfinir en permanence les fonctions, les multi-méthodes, les hiérarchies de types et même les implémentations de méthodes pendant l'exécution d'un programme.
L’approche de Clojure en matière de langage permet un niveau élevé d’expérimentation et d’exploration souvent limité dans des langages plus statiques et des temps de compilation longs.
Que les programmeurs soient confrontés à des problèmes simples ou multithreads, Clojure fournit un ensemble d’outils permettant de clarifier le code. Par exemple, Leiningen gère les dépendances, les déploiements et les versions versionnées pour les projets exclusivement dans Clojure. En tant qu'outil d'automatisation de la construction, Leiningen permet aux programmeurs de respecter les conventions et de décrire clairement un projet aux autres développeurs, qui peuvent ensuite accélérer le processus.
Hautement aligné sur Maven, Leiningen est l'outil de choix pour gérer automatiquement les dépendances de toutes les bibliothèques Java. Les développeurs peuvent être plus productifs s’ils utilisent Maven pour exécuter des constructions, des tests et des déploiements relativement complexes en une seule commande.
L'éditeur de texte Clojure Emacs connecte le code des programmeurs à un shell de langage (également appelé boucle de lecture / évaluation / impression) afin qu'ils puissent tester le code immédiatement à mesure qu'il est écrit. Utilisez le Emacs avec CIDRE, ou l'environnement de développement interactif Clojure qui vibre, pour créer un environnement de flux de travail dynamique dans lequel les programmeurs peuvent continuellement ajouter et redéfinir des applications. CIDER comprend une extension IntelliJ IDEA qui fournit une expérience plus traditionnelle de l'environnement de développement intégré à Java.
Travailler avec ClojureScript
ClojureScript, un compilateur JavaScript pour Clojure, convient aux applications d'une seule page qui ciblent une expérience utilisateur Web fluide similaire à une application de bureau. ClojureScript compile en JavaScript pour une utilisation dans un navigateur et dans d'autres environnements où JavaScript s'exécute, y compris l'exécution de JavaScript Node.js sur le serveur.
ClojureScript gère les données proprement, offre des fonctions flexibles et peut personnaliser les fonctions selon les besoins. Il suit la même conception de syntaxe uniforme que Clojure et offre de grandes bibliothèques de fonctions sur les types de données primitifs.
En tant qu'invention du langage Clojure pour la plate-forme JavaScript, ClojureScript est compilé en JavaScript et s'exécute dans le navigateur ou dans les environnements Node.js. ClojureScript est principalement reconnu pour la création d'interfaces utilisateur hautement interactives et dynamiques pour les plates-formes Web et mobiles. Et tandis que Clojure et ClojureScript sont hébergés dans des environnements différents, ils partagent des similitudes en mettant l'accent sur une syntaxe simple, des structures de données immuables, des paradigmes fonctionnels et une puissante bibliothèque standard.
Plusieurs bibliothèques dans ClojureScript sont très populaires et les développeurs qui adoptent Clojure devraient les étudier. Par exemple, Reagent propose une bibliothèque React minimaliste pour créer des interfaces utilisateur. En outre, Rum fournit une bibliothèque HTML simple d’interface utilisateur et Om utilise des structures orientées objet pour améliorer React par l’immutabilité.
Conçu pour être pratique avec une relation étroite avec Java, les développeurs Clojure peuvent immédiatement bénéficier des développements passionnants en Java et avoir accès aux mêmes types standard utilisés dans toutes les applications Java.
Commentaires
Laisser un commentaire