Clojure

Clojure
Clojure
Logo du site www.clojure.org

Apparu en 2007
Auteur Rich Hickey
Développeurs Rich Hickey
Paradigmes fonctionnel, multi-paradigme
Typage fort, dynamique
Influencé par Lisp, ML, Haskell, Erlang
Système d'exploitation Multiplate-forme
Licence Eclipse Public License
Site web http://clojure.org

Clojure est un langage de programmation fonctionnel. C'est un dialecte de Lisp.

Sommaire

Philosophie

Rich Hickey a développé Clojure parce qu'il voulait un Lisp moderne pour la programmation fonctionnelle, en symbiose avec la plateforme Java, et expressément orienté vers la programmation concurrente.

L'approche concurrentielle de Clojure est caractérisée par le concept d'identité[1], qui représente une série d'états immuables dans le temps. Comme les états sont des valeurs fixes, un nombre indéfini d'agents peut y accéder en parallèle, et la concurrence se résume alors à gérer les changements d'un état à un autre. Dans cette optique, Clojure propose plusieurs types de références mutables, chacun d'eux ayant une sémantique bien définie pour la transition inter-état.

Syntaxe

Comme n'importe quel autre Lisp, la syntaxe de Clojure est basée sur les S-expressions. Ces dernières sont d'abord parsées en structures de données par un reader, avant d'être compilées. Clojure est un Lisp-1, et n'a pas pour objectif d'être compatible avec d'autres dialectes de Lisp.

Macros

Le système de macro de Clojure est semblable à celui que propose Common Lisp, exception faite de l'apostrophe inversée (backquote), appelée "apostrophe de syntaxe" (syntax quote) qui associe un symbole à son espace de nommage (namespace).

Caractéristiques du langage

  • Développement dynamique à l'aide du REPL
  • Les fonctions sont des objets. La programmation par récursion est favorisée, plutôt que la programmation par boucle à effets de bord.
  • Séquences évaluées paresseusement
  • Grande variété de structures de données non mutables et persistantes
  • programmation concurrente grâce à la STM, à un système d'agents, et à un système de variables dynamiques
  • Intégration au langage Java : en compilant en code binaire pour la JVM, les applications en Clojure sont préparées et déployées dans la JVM ou un serveur d'application sans difficulté supplémentaire. Le langage fournit aussi des macros qui facilitent l'usage des API Java existante. Les structures de données de Clojure implémentent toutes des interfaces Java standardisées, rendant aisée l'exécution de code écrit en Clojure depuis Java.

Exemples

"Bonjour le monde" :

(println "Bonjour, le monde!")

"Bonjour, le monde" dans une interface graphique Swing :

(javax.swing.JOptionPane/showMessageDialog nil "Bonjour, le monde!")

Lien externe

References

  1. On State and Identity, Rich Hickey, clojure.org. Consulté le 2010-03-01

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Clojure de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • Clojure — Paradigm(s) functional, multi paradigm Appeared in 2007 Designed by Rich Hickey …   Wikipedia

  • Clojure — Класс языка: функциональный, мультипарадигмальный Появил …   Википедия

  • Clojure — Desarrollador(es) http://clojure.org Información general …   Wikipedia Español

  • Clojure — Lisp Dialekt Basisdaten Paradigmen: Funktionale Programmiersprache Erscheinungsjahr …   Deutsch Wikipedia

  • Хикки, Ричард — Ричард Хикки англ. Richard Hickey …   Википедия

  • List comprehension — A list comprehension is a syntactic construct available in some programming languages for creating a list based on existing lists. It follows the form of the mathematical set builder notation (set comprehension) as distinct from the use of map… …   Wikipedia

  • List of programming languages by category — Programming language lists Alphabetical Categorical Chronological Generational This is a list of programming languages grouped by category. Some languages are listed in multiple categories. Contents …   Wikipedia

  • Multiple dispatch — Theories and practice of polymorphism Double dispatch Multiple dispatch Operator overloading Polymorphism in computer science Polymorphism in OOP Subtyping …   Wikipedia

  • Multiversion concurrency control — (abbreviated MCC or MVCC), in the database field of computer science, is a concurrency control method commonly used by database management systems to provide concurrent access to the database and in programming languages to implement… …   Wikipedia

  • Processing (programming language) — Processing Paradigm(s) object oriented Appeared in 2001; 9 years ago (2001) …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”