Elixir : pourquoi l’utiliser en 2024 ?
29 janvier 2024
Au début, il n'y avait que l'obscurité. Puis sont apparus les premiers langages de programmation, et dans les années 80 est apparu Erlang, l'un des protagonistes de cette histoire qui, pour comprendre la puissance que va atteindre Elixir, doit d'abord s'expliquer un peu plus sur ce vieux langage toujours vivant.
Erlang ou Erlang/OTP, est un langage fonctionnel, incroyablement puissant lorsqu'il s'agit de faire face à la concurrence. Il est né des mains de Joe Armstrong lorsqu'il travaillait pour Ericsson. Le but était d'améliorer le développement des applications téléphoniques.
Deux exemples graphiques.
Avez-vous déjà pensé à la façon dont votre opérateur mobile continue de fonctionner même lorsque vous faites une mise à jour logicielle ?
Whatsapp compte 1,2 milliard d'utilisateurs. Gérer plus de 10 000 connexions simultanées est un défi, mais WhatsApp a des serveurs individuels avec plus de 2 millions de connexions sur un seul serveur. Géré par Erlang.
Pourquoi parler d'Erlang alors qu'il est question d'Elixir ?
Parce qu'il est impossible de comprendre l'un sans l'autre. Erlang est un langage fonctionnel à un stade mature et complet qui offre également une concurrence difficile à reproduire. Alors pourquoi n'a-t-il pas été adopté par le grand public ? Entre autres, parce que c'est une langue assez difficile. Sa syntaxe est un peu étrange, surtout si vous avez l'habitude de travailler avec les langages les plus populaires aujourd'hui : PHP, Java, JavaScript... ou Ruby.
C'est qu'en 2011, Elixir est né de la main de José Valim, qui a déclaré : "J'ai aimé tout ce que j'ai vu dans Erlang, mais j'ai détesté tout ce que je n'ai pas vu". Pour lui, il n'y avait donc qu'une seule option : créer un langage ayant la puissance et les fonctionnalités d'Erlang, et étant l'un des plus grands connaisseurs de Ruby et faisant partie de l'équipe de base de Rails, lui donner la facilité et la productivité de Ruby.
Comment ? Avec un coup de maître. Il fait fonctionner Elixir à l'intérieur de la machine virtuelle Erlang. De cette façon, un langage moderne comme Elixir gagne en robustesse et s'éloigne de la difficulté académique typique des autres langages fonctionnels, ce qui le rend plus accessible à tous les types de programmeurs. Et avec une syntaxe de type Ruby, il crée un langage facile à apprendre. En outre, comme le langage se compile en bytecode Erlang, vous pouvez utiliser les fonctions Erlang sans pénalité.
Ainsi, on obtient un langage facile à apprendre, fonctionnel et doté d'un typage dynamique assez fort qui ne permet pas certaines choses qui sont autorisées dans des types plus faibles comme JavaScript.
Mais c'est quoi le langage Elixir à proprement parler ?
Définition du langage Elixir
Elixir est un langage de programmation dynamique qui utilise le paradigme fonctionnel, concurrent par défaut et qui fonctionne sur la machine virtuelle Erlang (BEAM).
L'objectif principal du langage est de fournir des outils productifs pour construire des applications distribuées et maintenables.
Il y a quelques points et différentiels qui font qu'Elixir se distingue des autres langages de programmation. On peut dire qu'Elixir gagne de plus en plus de place au sein des applications web, mobiles et IoT :
Croissance et évolutivité - Si votre application est destinée à être consultée par des milliers ou des millions d'utilisateurs, vous pouvez tirer parti des avantages de BEAM en termes de fiabilité et d'évolutivité ;
Gestion d'un grand nombre de requêtes simultanées - Si vous n'avez pas des millions d'utilisateurs, mais un nombre plus restreint qui fait un usage intensif de votre produit, vous avez besoin d'un système qui prend en charge la concurrence ;
Maintenabilité du code - L'un des avantages de l'écriture de code en Elixir est de pouvoir conserver un code simple. Il en résulte que de nombreuses entreprises choisissent Elixir pour la possibilité de disposer d'une base de code facile à maintenir, de la correction des bogues au développement de nouvelles fonctionnalités.
Un autre point positif, par coïncidence ou non, est que tous les avantages d'Elixir s'adaptent parfaitement aux applications web ou api.
Quels sont les avantages d'Elixir ?
L'utilisation de la programmation en language Elixir pour le développement d'une application apporte une série d'avantages :
Exécution distribuée
Le code Elixir est exécuté dans de petits threads, appelés processus. Ces processus sont totalement isolés et échangent des informations par le biais de messages.
Tolérance aux pannes
Dans la communauté erlang, il existe un concept appelé "let it crash". La seule certitude que l'on a d'un code qui est exécuté en production est que les choses peuvent mal tourner. À cette fin, Elixir met en œuvre une fonctionnalité permettant de superviser le code en cours d'exécution.
Outils de développement
Outre les grandes fonctionnalités que le langage apporte par défaut, en tirant parti de BEAM (également connu comme la machine virtuelle d'Erlang), il convient également de mentionner la quantité d'outils qui font partie du développement quotidien :
- Mix - Outil de construction ;
- Hex - Gestionnaire de paquets ;
- Iex - Exécution interactive de l'élixir ;
- ex_unit - Framework de test unitaire ;
- ex_doc - Génération de documentation ;
- Phoenix - Framework de développement Web ;
- Ecto - Interaction avec la base de données.
D'autres avantages de la programmation d'applications en Elixir sont les suivants :
- Permet le traitement de grands volumes de données avec des délais très courts. Cette faible latence lui confère une grande valeur commerciale en lui permettant de présenter tout changement en temps réel.
- Il est idéal pour gérer plusieurs utilisateurs et opérations en même temps, car les processus s'exécutent simultanément. - Il supporte un haut degré de tolérance aux pannes, permettant une gestion aisée des erreurs internes et la possibilité d'isoler tout module qui présente une erreur, garantissant que les applications continuent de fonctionner, même si certaines de ses fonctions présentent une erreur.
- La courbe d'apprentissage est très douce et le langage explicite est très facile à comprendre.
- Ses performances sont bien supérieures à celles de Ruby, ce qui en fait une alternative plus intéressante pour les programmeurs.
- Il possède Phoenix, un cadre puissant et robuste qui facilite la création d'applications web évolutives dans l'environnement Erlang.
- Les applications qui en résultent sont facilement maintenables et évolutives, deux caractéristiques très importantes dans la programmation web.
Quels sont les inconvénients du langage Elixir ?
Comme tous les langages, Elixir n'est pas une solution miracle. Il n'a pas été conçu pour couvrir tous les cas d'utilisation possibles, même si cela peut sembler être le cas. Il existe principalement certaines situations où l'utilisation d'Elixir n'est pas idéale :
- Comme il s'agit d'un langage "récent", il ne dispose pas d'une communauté aussi importante, de sorte que le soutien que l'on peut trouver est inférieur à celui d'autres langages de programmation ;
- Beam est moins puissant que d'autres machines virtuelles telles que JVM ou que les solutions qui compilent en code machine telles que Go ou Rust ; - Etant utilisé sous Erlang et pouvant utiliser ses bibliothèques, il est nécessaire d'avoir des connaissances en Erlang, ce qui augmente la difficulté d'apprentissage ;
- Il y a peu de demandes de programmeurs Elixir, l'offre d'emploi est donc faible par rapport aux autres langages. Ce fait peut également constituer un avantage, car il n'y a pas beaucoup de concurrence pour un emploi de programmeur Elixir ;
- Traitement informatique lourd : ce n'est pas quelque chose qui préoccupe l'équipe centrale d'Erlang/Elixir. Par ailleurs, il existe déjà d'excellents outils utilisant Python, Matlab ou R ;
- Apprentissage profond : il existe quelques outils fonctionnant sur Elixir, mais il existe des outils d'apprentissage profond plus robustes et validés en Python, par exemple.
Pourquoi Elixir est-il un langage d'avenir ?
La programmation fonctionnelle fait fureur. De plus en plus de langages adoptent ce paradigme, mais surtout, les développeurs adoptent de plus en plus de langages de programmation fonctionnels - il suffit de voir l'essor de Scala.
Comme de plus en plus de développeurs passent à Elixir (en particulier de Ruby), la communauté s'agrandit, ce qui facilite la création de frameworks intéressants comme Phoenix. C'est un framework Elixir très puissant pour le développement d'applications web avec de très bonnes performances. Pour donner un autre exemple, Elixir est à Phoenix ce que Ruby est à Rails. On peut même dire qu'aucun langage n'est plus rapide que Ruby aujourd'hui, mais avec Elixir, vous bénéficiez des avantages d'Erlang et de performances très proches de la productivité de Ruby.
La concurrence acquise par Erlang n'est pas facilement émulée par un autre langage. Et cela devient d'autant plus important lorsque vous devez servir simultanément des millions d'utilisateurs.
On dit qu'avec la croissance des utilisateurs sur Internet, l'avenir est fonctionnel, et Elixir est un langage qui facilite la transition vers ce paradigme pour tous les types de programmeurs.
Qui utilise Elixir et quelle est sa popularité auprès des développeurs ?
Plusieurs entreprises dans le monde ont déjà adopté Elixir pour améliorer leur productivité lors de la création d'applications distribuées. En voici quelques exemples :
Pinterest - Prise en charge de plus de 30 000 événements par seconde et de plus de 200 millions d'utilisateurs par mois ;
PepsiCo - Développement de leur plateforme de commerce électronique ;
Moz - Le temps de réponse est passé de plus de 800 ms à moins de 50 ms.
En ce qui concerne sa popularité, on peut dire qu'Elixir se situe dans le courant dominant des technologies, précisément pour la quantité de fonctionnalités qui sont offertes par défaut. D'autres points positifs sont le paradigme fonctionnel du langage, les concepts d'immuabilité et la programmation plus déclarative. Tous ces éléments apportent plus de clarté lors de la lecture d'un code écrit.
En outre, la communauté est très active et vous ne serez pas laissé en plan lorsqu'il s'agira de résoudre un problème.
Par exemple, avant de chercher sur Stackoverflow, il est recommandé de chercher sur le forum Elixir. Vous allez généralement trouver la solution à vos problèmes plus rapidement.
Un autre point très positif est que, comme Elixir est inspiré de Ruby, de nombreux développeurs qui programment dans ce langage ont essayé d'apprendre Elixir également.
Chaque jour, l'adoption d'Elixir augmente de plus en plus.
Maintenant que vous en savez un peu plus sur Elixir, on espère avoir clarifié les doutes qui surgissent au moment de choisir la technologie dans un nouveau projet.
En ce qui concerne le processus d'apprentissage, voici quelques livres qui sont excellents pour approfondir les connaissances :
- Programming Elixir 1.6 : Functional |> Concurrent |> Pragmatic |> Fun par Dave Thomas ;
- Adopting Elixir : From Concept to Production par Ben Marx, Jose Valim, Bruce Tate ;
- Métaprogrammation d'Elixir : Write Less Code, Get More Done (and Have Fun!) par Chris McCord.
CMO