<?xml version="1.0"?>
<rss xmlns:php="http://php.net/xsl" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Premiers pas avec Clojure - Chicoree</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure</link><atom:link href="http://www.chicoree.fr/w/Premiers_pas_avec_Clojure?action=toFeed" rel="self" type="application/rss+xml"/><description><![CDATA[Il est de bon ton aujourd'hui de distinguer la plate-forme Java du langage Java. En effet, si les deux étaient intimement liés dans le modèle initial proposé par Sun en 1995, il faut bien avouer que les choses ont bien changé depuis! De nos jours, on peut développer pour la plate-forme Java avec des dizaines – voire des centaines – de langages. Certains interprétés, d'autres compilés. Certains génériques, d'autres spécialisés. Bref, il y en a pour tous les goûts!
A titre personnel, je trouve cette situation rafraîchissante. Surtout après des années de concentration (de crispation?) autour de quelques langages aux concepts et à la syntaxe presque identiques... Et puis, c'est toujours un exercice intellectuel profitable – et dans mon cas agréable – que de découvrir un nouveau langage. D'autant plus quand c'est l'occasion de (re-)mettre en lumière un paradigme de programmation occulté par le bulldozer de l'orienté objets impératif à la C++.
D'un point de vue plus pragmatique, disposer de tous ces langages pour la plate-forme Java offre la possibilité de pouvoir choisir le langage le plus adapté à un domaine ou une pratique. Sans pour autant oblitérer la compatibilité avec le code existant ou d'autres parties du projet écrites dans un autre langage, puisque l'interropérabilité est garantie par la plate-forme Java.
Ici, nous allons nous intéresser à un langage qui monte en cette année 2010. A savoir Clojure. 
]]></description><item><title>1 Clojure</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Clojure</link><description><![CDATA[<p>En quelques mots, <b>Clo<i>j</i>ure</b> est un dialecte du langage <a>LISP</a> pour la plate-forme Java. Comme LISP, Clojure <i>encourage</i> un modèle de programmation fonctionnel. Mais <i>ne l'impose pas</i>.
</p>]]></description></item><item><title>2 Installation</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Installation</link><description><![CDATA[<p>Nous allons installer Clojure à partir de la distribution disponible sur <a>http://code.google.com/p/clojure/</a>. Au moment où je rédige, la dernière version stable est Clojure-1.1.0:
</p>]]></description></item><item><title>3 Un mot sur la syntaxe</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Un_mot_sur_la_syntaxe</link><description><![CDATA[<p>Si vous êtes habitués à programmer en Java ou C et que vous n'avez jamais utilisé de langage de la famille de LISP, la syntaxe peut vous surprendre au premier abord. En fait, en Clojure, chaque expression est écrite entre parenthèses. Et les sous-expressions sont traduites par autant de blocs entre parenthèses imbriqués.
</p>]]></description></item><item><title>4 Nommer les choses</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Nommer_les_choses</link><description><![CDATA[<p>La première manière de <i>donner un nom</i> à une valeur dans Clojure est via un bloc <tt>let</tt>:
</p>]]></description></item><item><title>4.1 Approche fonctionnelle</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Approche_fonctionnelle</link><description><![CDATA[<p>La première manière de <i>donner un nom</i> à une valeur dans Clojure est via un bloc <tt>let</tt>:
</p>]]></description></item><item><title>4.2 Approche impérative</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Approche_imp.C3.A9rative</link><description><![CDATA[<p>Clojure se veut aussi pragmatique. Et en tant que tel, le langage reconnaît qu'il est parfois pratique d'avoir de <i>véritables</i> variables. C'est à dire susceptibles d'être modifiées. Les variables <i>mutables</i> sont introduites par la <i>forme spéciale</i> <tt>def</tt>:
</p>]]></description></item><item><title>5 Fonctions</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Fonctions</link><description><![CDATA[<p>Vous vous souvenez de vos cours de maths? En particulier, vous vous souvenez comment on <i>définissait</i> une fonction à l'époque? "Soit f une fonction qui à x associe 2 fois x...". Remarquez comme cette phrase est composée de deux parties: une proposition principale, ("soit f une fonction") et une subordonnée ("qui ..."). Mis à part vous rappeler des souvenirs émus de l'école, cela traduit bien que la fonction et son nom sont deux choses distinctes. LISP vient du monde des mathématiques. Et distingue la définition de la fonction du fait de lui donner un nom:
</p>]]></description></item><item><title>6 Intégration avec Java</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Int.C3.A9gration_avec_Java</link><description><![CDATA[<p>Closure est un langage pour la JVM. Un aspect important est donc l'intégration avec les bibliothèques Java existantes. Pour illustrer ce point, je vais prendre l'exemple <i>bateau</i> de l'utilisation de Swing. Quelque-chose de simple pour cette introduction. Disons un jeu de 421.
</p>]]></description></item><item><title>6.1 Imports</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Imports</link><description><![CDATA[<p>Comme pour un code source Java, commençons par quelques <b>imports</b>:
</p>]]></description></item><item><title>6.2 Constructeurs</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Constructeurs</link><description><![CDATA[<p>Construisons maintenant nos <i>widgets</i>:
</p>]]></description></item><item><title>6.3 Appels de méthodes</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Appels_de_m.C3.A9thodes</link><description><![CDATA[<p>Voyons maintenant comment invoquer une <b>méthode</b> sur un objet Java en ajoutant nos widgets à leur panneau:
</p>]]></description></item><item><title>6.4 Un script autonome</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Un_script_autonome</link><description><![CDATA[<p>Jusqu'à présent, vous avez sans doute copié les exemples de code dans le <i>shell Clojure</i> pour une utilisation interactive. Mais il est aussi possible d'enregistrer les différentes instructions dans un fichier pour en faire un script autonome. C'est ce que nous allons faire pour terminer. Remarquez que j'en profite au passage pour refactoriser un poil le code – en particulier pour éliminer les <tt>def</tt> inutile – et les remplacer par un <tt>let</tt>:
</p>]]></description></item><item><title>7 Conclusion</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Conclusion</link><description><![CDATA[<p>Ouf! Nous avons fait un sacré tour dans Clojure. Et nous avons vu pas mal de notations différentes. Et pourtant nous avons passé sous silence certains aspects importants de la programmation Clojure. Comme la <b>compilation</b>. Ou la <b>programmation concurrente</b>. Mais laissons ça pour une autre fois.
</p>]]></description></item><item><title>8 Ressources</title><link>http://www.chicoree.fr/w/Premiers_pas_avec_Clojure#Ressources</link><description/></item></channel></rss>
