Smart Data

API REST avec Clojure – Part 1/2

Karine de Pontevès

Par Karine de Pontevès
1 décembre 2016

Clojure fait partie de la famille des Lisp. Autour de moi, j’entend (malheureusement) trop souvent que les langages fonctionnels “c’est vieux, compliqué et dépassé”. Alors j’aimerai juste partager avec vous mon avis, et l’illustrer avec un petit exemple d’API REST.

Petit tutorial en 2 parties, pour 2 fois plus de plaisir!

C’est vieux

Le Lisp a été créé en 1958 par John McCarthy, et est devenu dans les années 70/80 le langage de prédilection pour la recherche en intelligence artificielle. Clojure en est un dialecte (comme il en existe de nombreux) développé par Rich Hickey et dont la 1ère version est sortie en 2007.

C’est compliqué

Avec les langages orientés-objet, c’est franchement la galère pour retrouver la valeur d’une variable rattachée à un champ d’un objet mutable contenu dans un autre object mutable dans un… Et dans des environnements à grande échelle, des systèmes que l’on ne maitrise pas forcément, et du code auquel on a pas toujours accès, et bien voilà, c’est compliqué. Et même très compliqué.

Rien de plus galère pour un programmeur que de devoir mener son enquête, en arriver à tracer dans de l’assembleur, pour tenter de retrouver LE bout de code, parmi des milliers, auquel une référence a été passée, et qui fait n’importe quoi avec (rien que de l’expliquer, ça en devient complexe).

Clojure est caractérisé par des séries d’états immuables. Les états sont des valeurs fixes. On peut difficilement se louper, et quand bien même, il suffit de remonter la pile d’éxécution. Aussi simple que ça. Les fonctionnalités REPL simplifient la modélisation, et la STM permet d’utiliser des variables dynamiques lorsqu’on en a vraiment besoin.

Enfin, vous aurez beau vous plaindre des parenthèses, personne ne pourra me faire croire que

(fonction argument argument)

c’est compliqué. Et voilà, vous connaissez maintenant 90% de la syntaxe Clojure.

C’est dépassé

C’est un langage fonctionnel créé pour fonctionner avec la JVM, et orienté vers la programmation concurrente. On peut donc utiliser toutes les librairies Java. Et quoi de plus d’actualité que la programmation concurrente?

 

Hello World!

Aucun tutorial ne peut s’en passer (j’utilise Leiningen, qui est conçu pour builder des projets Clojure).

Je lance mon REPL, et voilà!

helloworld

Allez, suite et fin dans Part 2!

bye

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *