Lien Écrire du Python comme si c'était du Elixir (ou du Erlang)

À l’occasion de la sortie d’Erlang/OTP 24, le 12 mai 2021, je voudrais vous présenter cet environnement de programmation : le langage Erlang et son écosystème.
PolyConf est une conférence pour échanger sur les meilleures pratiques de la programmation. Les programmeurs sont trop souvent réduits à un langage de programmation alors qu’il est plus sage, dans un contexte d’innovation constante, d’apprendre à apprendre et de combiner le meilleur de chaque langage dans des solutions ad hoc. Autrement dit, le fait de ne pas se spécialiser en tant que développeur sur un langage spécifique, pour préférer une approche polyvalente. Concrètement, cela s’est reflété dans le programme de l’événement qui a traité de nombreux sujets : Ruby, Python, Haskell, Rust, Erlang, Go, Java, F#, JavaScript…
NdM. : cette édition est intitulée « L’univers des langages de programmation. Ne voyez pas les frontières / limites, voyez les horizons » (The Universe of Programming Languages. Never see boundaries, but only horizons). Les trois précédentes éditions ont eu lieu à Poznan en Pologne. Les huit éditions précédentes (à l’époque l’événement se nommait « RuPy », a priori plus centré sur Ruby et Python) ont eu lieu à Budapest, Brno, au Brésil et en Pologne.
Si vous avez déjà cherché à développer une appli web moderne, vous avez déjà dû vous heurter à la question de choisir les bons composants parmi la foultitude de ceux existants… et surtout les faire fonctionner.
Premièrement, quand je parle d'applis web modernes, il faut savoir qu'elles partagent en général cette architecture :
Bref, il fait fonctionner tout cela ensemble, vérifier les incompatibilités, etc.
yeoman
Le projet yeoman vise à fournir des générateurs d'applications qui intègrent des piles complètes et prêtes à l'emploi dans le domaine des applis web. Même si le projet est issu de la communauté node.js
, on peut aisément écrire des générateurs pour n'importe quelle techno.
saloon
, faites entrer le cowboyLe générateur saloon (licence Apache v2) est un générateur yeoman
pour débuter simplement une application web avec erlang et angular.
La communauté des praticiens Erlang d'Île de France et la communauté #FrenchErlang vous convient à une rencontre le mercredi 14 octobre 2015.
Au programme :
Notons également qu'il y a aura une rencontre Elixir la veille.
ejabberd 15.07 vient de sortir et elle apporte un lot de nouveautés significatives.
Avant d'entrer dans le vif du sujet, pour ceux qui ne connaissent pas encore ce projet, il s'agit d'un serveur de messagerie conforme au protocole XMPP. Ce protocole est très vaste (NdM: voir la série d'articles présentant le protocole) et permet d'implémenter de nombreux types de systèmes de messagerie en temps réel, allant de la messagerie instantanée à l'Internet des objets, en passant par le jeu vidéo. C'est dire l'importance de ce protocole, à une époque où la plupart des systèmes de messagerie restent des silos fermés et sans capacité d'interopérer. XMPP supporte nativement la fédération, ce qui signifie que des utilisateurs de différents domaines peuvent communiquer entre eux.
ejabberd est l'un des serveurs XMPP les plus anciens et les plus reconnus. Il est inclus dans de nombreuses distributions Linux et se distingue par le fait qu'il est développé en Erlang. Cette caractéristique lui donne robustesse et fiabilité, mais aussi forte capacité à monter en charge.
Parmi les changements de fonctionnalités, l'accent est mis sur le support du PubSub et de l'archivage des messages. Ce sont aujourd'hui deux éléments fondamentaux du protocole XMPP qui sont en pleine évolution et façonnent le protocole XMPP de demain. Disposer d'un serveur avec des fonctionnalités très à jour sur ces aspects est crucial pour l'avenir du protocole.
Un gros effort a également été fait sur le packaging et la simplicité d'installation, en offrant notamment la possibilité de compiler et d'installer des modules issus de contributeurs externes sans avoir à devenir un expert d'Erlang.
Cette version est l'aboutissement de gros changements survenus durant les six derniers mois sur le projet et cette dépêche est aussi le moment de faire un bilan.
La machine virtuelle Erlang est à la mode ! Elle reste une valeur sûre pour construire les architectures distribuées, temps réel et à haute disponibilité sur lesquelles nous pouvons articuler les nouvelles applications web et mobile, big data ou machine learning.
Beaucoup de langages se reposent dessus aujourd’hui. La référence historique Erlang bien évidemment, mais aussi la valeur montante Elixir, langage fonctionel dont la syntaxe est inspirée de Ruby, couvert sur LinuxFr.org : Elixir, enfin une syntaxe agréable pour Erlang ?. Notons également le très surprenant LFE (Lisp Flavored Erlang) ou (lisp (flavored (erlang)))
décrit sur http://lfe.io/.
Nous pourrions également ajouter des langages plus exotiques tels que Reia, Joxa et Bran (voir la seconde partie de la dépêche) :
Nous vous proposons un meetup sur l’ensemble de l’éco-système Erlang. Attention : initialement prévu le 23 juin, elle est décalée au lundi 29 juin, faute d'avoir trouvé une salle à temps.
Horaire : le 29 juin de 18:30 à 22:30
Lieu : 156 Boulevard Haussmann, immeuble A, 75008 Paris, 7ème étage à gauche, métro Miromesnil
Le programme sera annoncé la semaine prochaine. Réservez vos places gratuites dès maintenant.
erocci est un framework générique OCCI (Open Cloud Computing) Interface) écrit en Erlang/OTP (Open Telecom Platform, la bibliothèque standard du langage de programmation Erlang).
Le standard OCCI est un standard ouvert, défini par l'OpenGridForum, pour définir des API REST autour du cloud computing, de manière plus contrainte, et donc facilement interopérables.
Plus de détails dans la suite de la dépêche. Et si vous n'avez pas tout compris, mais que cela titille votre curiosité, nous présenterons erocci lors d'un webinaire organisé par OW2 le 15 mai. Vous pourrez y voir erocci tourner en vrai et poser des questions à l'auteur. Les inscription se passent sur le site d'OW2.
erocci 0.1 vient de sortir. C'est un framework, écrit en erlang/OTP, pour construire des API OCCI (Open Cloud Computing Interface).
La principale caractéristique technique du cloud computing est de définir des services sous forme d'API REST. Le standard OCCI est un standard ouvert, défini par l'OpenGridForum, pour définir des API REST de manière plus contrainte, et donc facilement interopérables.
Jusqu'ici, OCCI a été principalement utilisé comme surcouche à des API de services d'infrastructure (IaaS) tels qu'OpenStack ou OpenNebula. OCCI est en particulier utilisé par CompatibleOne pour gérer l'interopérabilité entre services cloud.
Toutes les mises en oeuvre de OCCI sont dédiées à un type d'API particulier (en général l'API Infrastructure) avec un grand nombre de connecteurs vers des API propriétaires.
erocci est un framework complètement générique basé sur OCCI : les API sont décrites en XML et le framework gère la persistence (Mnesia pour l'instant), les différents "renderings" (JSON, XML, etc) ou même transport (HTTP aujourd'hui, mais XMPP est dans la feuille de route).
L'utilisation d'erlang/OTP ainsi que des bibliothèques cowboy (serveur web), exmpp (XMPP), jiffy (JSON) permettent d'envisager un très bon passage a l'échelle ainsi qu'une grande fiabilité.
Les prochaines étapes de la roadmap prévoient donc :
Tous les retours et contributions sont les bienvenus.
CEAN est l'acronyme de Comprehensive Erlang Archive Network, en d'autres termes l'alter ego pour le langage Erlang de CPAN (Comprehensive Perl Archive Network) pour le langage Perl. Le dépôt centralisé propose également des installateurs d'une version minimaliste du langage. Après trois ans d'un apparent long silence, c'est la version 2.0 que Christophe Romain publie.
Plus que l'installation de binaires avec les dépendances, CEAN 2.0 fournit un framework de développement, construction (build), et paquetage (packaging). Il repose sur zsh, ce qui le rend compatible sur tous les systèmes POSIX.
CEAN 2.0 est disponible :
Quelques détails et une petite interview de Christophe Romain en seconde partie de cet article.
Elixir est un langage de programmation qui s’appuie sur Erlang et sous licence MIT. Il propose une syntaxe agréable, inspirée de celle de Ruby, et un modèle objet à base de prototypes.
Erlang est un langage fonctionnel avec un typage dynamique, une évaluation stricte et une assignation unique. Il convient bien pour des applications distribuées, résistantes aux erreurs et sans arrêt grâce au mécanisme de rechargement à chaud. Mais c’est également un langage qui peut sembler difficile à apprendre et dont la syntaxe peut rebuter. Elixir propose une manière élégante de profiter des avantages d’Erlang. Il est notamment possible d’appeler des modules Erlang sans conversion des types de données, et donc sans impact sur les performances.
Elixir est encore très jeune et recherche des contributeurs pour aider au développement de sa bibliothèque standard. Pour installer Elixir, vous aurez besoin d’Erlang R14B01, et je vous invite à parcourir le README pour découvrir ce langage. Mais voici un avant-goût sous la forme d’un très classique « Hello World » :
module World
def say_hello
IO.puts "Hello World!"
end
end
World.say_hello
"Hello world!".puts()