https://www.50a.fr fr glossaire-keyword
EN menu burger

Elixir

Elixir désigne un langage de programmation fonctionnel multiparadigme créé en 2011. On attribue son origine à l'un parmi les contributeurs influents du framework de Programmation Ruby on Rails, José Valim. Ce langage relativement récent est construit par-dessus Erlang, la technologie lui servant de base. Il partage les mêmes niveaux d'abstractions pour rendre résistante une application aux erreurs. Sa conception répond au besoin de pallier quelques carences de l'écosystème Erlang. Ces failles sont généralement associées à des approches ou paradigmes de programmations comme le polymorphisme. La machine virtuelle d'Erlang elle-même tire profit de la structure de ce langage de programmation influencé par Ruby et Clojure.

L'utilisateur a toujours accès à toutes les primitives Erlang avec Elixir. Pour les novices, ce dernier apparaît comme une excellente alternative aux langages assez rudes comme Ruby. Ce langage se caractérise par une API légère qui facilite sa prise en main. Il simplifie l'écriture des DSL en apportant une syntaxe élégante. Il est par ailleurs livré avec plusieurs fonctionnalités pratiques, dont la plupart proviennent du VM Erlang. On compte parmi ces outils utiles la puissance de Mix, l'OPT (Open Platform Telecom) et une syntaxe intuitive. Supportant la métaprogrammation, ce langage de programmation a été spécialement créé pour la conception de logiciels scalables. Il comprend les paradigmes des programmations fonctionnelles, orientées processus et la programmation concurrente.

Grâce à BEAM Elixir profite pleinement des avantages apportés par Erlang. Elle doit à cette machine virtuelle sa capacité de créer des applications concurrentes, distribuées. Avec rechargement de code à chaud, celles-ci sont tolérantes aux pannes. Ce langage de programmation doit en grande partie sa popularité à sa facilité d'utilisation. Il est maintenant utilisé par des structures influentes comme World Of Warcraft, Yahoo Delicious et Heroku. Pinterest et WhatsApp recourent également à ce langage. Le second, pour rappel, a connu des pics s'élevant à 2 millions de connexions simultanées sur un seul serveur. En langage fonctionnel, Elixir propose des modules isolés qui utilisent des appels de fonctions pures pour communiquer. Celles-ci se contentent de renvoyer une valeur pouvant être utilisée ailleurs. Elles n'influencent jamais de façon directe un état.

Les habitués de la complexité de Ruby apprécient les fonctions pratiques de ce langage de programmation multiparadigme. Parmi celles qui démarquent du lot est iex qui peut être considéré comme l'équivalent d'irb. Avec Elixir, on peut en outre regrouper dans des modules les fonctions pour les classer. Voici la syntaxe à employer pour appeler depuis un autre module une fonction dans un module : iex> Greeter.greet(« Bob »). On ajoute aux fonctions les donnés, un autre élément fondamental de ce langage novateur.

Appelés binary, les string en Erlang se présentent comme une liste de bits. On appelle Binary une chaîne en Elixir. De la même manière qu'en Ruby, les chaînes de caractères ici supportent l'interpolation. Elles sont encodées en UTF-8 et sont principalement entre guillemets doubles. Pour note, les guillemets simples et les guillemets doubles sont utilisés pour de différentes choses avec ce langage. Les premiers s'apparentent à des listes de caractères ou Charlist. Les vraies listes chaînées sont les « Listes ». Pour accéder au dernier élément, il va falloir parcourir toute la liste avant.

Autre détail, le Pattern Matching vient remplacer les assignations de variables avec ce langage. C'est une version plus sophistiquée de l'assignation classique. En guise d'illustration un match représentant deux valeurs égales avec l'opérateur =. Voici l'exemple :

iex> 10 = 10 10.

On constate ici un pattern matching entre l'expression à la gauche de l'opérateur et celle à la droite. En cas d'incompatibilité, on aura en revanche une MatchError :

iex> 10 = 42 **

Conclusion, l'opérateur = vérifie qu'il y ait équivalence entre les expressions à gauche et celles à droite.

Le Pattern matching présente l'avantage d'être utilisable à plusieurs endroits. L'une de ses applications consiste à définir une fonction. Concrètement, il sert à définir à la façon des mathématiques des fonctions. Il permet aussi l'extraction des valeurs d'une liste ou destructuring.

Autre point fort de ce langage est l'immutabilité, un indispensable de la programmation fonctionnelle. Elle constitue l'un des principaux socles d'Elixir. C'est l'idéal pour contourner le problème des effets de bord tordus pour la gestion des threads. En effet, les effets de bords sont déjà proscrits ici.

Exemple :

iex> list = [:one, :two, :three]
iex> List.delete(list, :two) [:one, :three]
iex> list [:one, :two, :three]

Ce langage de programmation fonctionnel de José Valim respecte le principe de l'immutabilité. Aucune de ses fonctions ne modifie les paramètres de cette dernière. En revanche, le ré-assignement de variable peut se faire avec Elixir. On doit absolument assigner à une variable le résultat pour obtenir le résultat de List.delete. Concrètement, ce langage doit à l'immutabilité son efficacité pour l'écriture des applications concurrentes.

Enfin on souligne que le code de ce langage est compilé directement en bytecode BEAM. Il partage cette caractéristique avec Erlang. C'est pourquoi les deux proposent presque la même performance. On peut effectuer des appels Erlang depuis ce langage de programmation novateur. Cela implique d'employer toute la technologie Erlang pour le développement des applications.

Nous contacter
Venez à l'agence de Paris
28 rue du Chemin Vert
75011 Paris
contact@50a.fr
01 40 33 00 65
Emplacement 50A sur google maps
Pas le temps ?

Formulaire de contact

Nom et prénom
Société
E-mail
Mobile
Message

newsletter
Abonnez-vous à notre newsletter !