Y a-t-il des choses qu’Elixir peut faire qu’Erlang ne peut pas faire ou vice versa?

Cette question se situe dans le contexte de la machine virtuelle Beam et des fonctionnalités qu’elle fournit, et non dans le contexte général de ce que peut faire un langage complet Turing. Je veux investir du temps pour apprendre soit Erlang pur ou Elixir. J’obtiens les différences de base entre les deux et je me penche vers Elixir en raison des macros, d’une meilleure syntaxe et d’un développement plus rapide du langage.

Ma question est la suivante: si je choisis Elixir, vais-je trébucher sur quelque chose que je ne peux pas y faire, mais que je peux faire à Erlang? Puis-je utiliser tous les éléments OTP, toutes les bibliothèques Erlang, le rechargement de code, etc. avec Elixir?

Je ne demande pas la préférence de quelqu’un entre les deux; juste des faits sur les possibilités des langues. De préférence de quelqu’un qui a utilisé les deux en production.

Juste en guise de préface – je n’ai utilisé qu’Elixir en production et non Erlang.

Je recommanderais honnêtement Elixir. Ceci est mon opinion et pas nécessairement la bonne pour vous, mais ci-dessous je vais énumérer mes raisons.

  1. Productivité: Je viens d’un arrière-plan Ruby / Rails, donc la syntaxe et le style d’Elixir me sont très familiers. L’un des principaux facteurs qui m’aident à déterminer s’il faut ou non apprendre une langue, c’est à quel point je peux être productif – principalement pourquoi j’ai choisi Ruby. L’élixir est le même. Je peux travailler aussi vite que possible avec Ruby avec tous les avantages de la concurrence et de la correspondance de modèles.
  2. Erlang: Puisque Elixir est construit sur Erlang et comstack jusqu’à erlang et à la vm beam, vous avez access à tous les modules et paquets erlang. Donc, si vous avez peur d’utiliser Elixir et de manquer toutes les fonctionnalités d’Erlang, vous ne devriez pas l’être. Elixir a même ses propres implémentations de la plupart des fonctionnalités Erlang / OTP plus importantes telles que GenServer, GenEvent, etc.
  3. Communauté / Ressources: La communauté Elixir est vraiment formidable. Le slack channel est très populaire et constitue un excellent moyen d’obtenir des réponses aux questions des débutants. Il y a déjà de très bons livres écrits sur le langage (Programming Elixir 1.2 – Dave Thomas, auteur de la pioche Ruby) qui facilitent l’access au langage.

Vraiment, si vous avez un problème avec les deux, vous allez probablement prendre la même décision qu’Elixir est un langage beaucoup plus agréable avec toutes les fonctionnalités d’Erlang + More. Cela augmente également, je ne me souviens pas des chiffres exacts, mais je me souviens d’avoir lu quelque chose sur le site Web de Hex (gestionnaire de paquets) à propos d’une augmentation considérable du nombre de téléchargements de paquets.

Vous ne devriez pas tomber sur quelque chose que vous pouvez faire dans une que vous ne pouvez pas utiliser dans l’autre, car vous pouvez appeler librement le code Elixir depuis Erlang et vice-versa. Vous pouvez même mélanger facilement des fichiers Erlang et Elixir dans un projet.

Dans Elixir:

:erlang_module.erlang_function(args) 

à Erlang:

 'Elixir.ElixirModule':elixir_function(args) 

TL; DR – Commence avec Elixir

Erlang a une courbe d’apprentissage plus forte que celle d’Elixir. Une fois que vous aurez commencé à apprendre Elixir, vous commencerez automatiquement à apprendre Erlang. Par conséquent, commencez avec Elixir. Elixir est écrit en Erlang et Elixir. Voir la dissortingbution sur Github (puisque Elixir est plein de macros aka méta-programmation). Elixir Project Code distribution

Vous pouvez utiliser Elixir avec Erlang et vice-versa, d’où l’éco-système complet d’Erlang de plus de 20 ans de bibliothèques.

Plus de détails de Erlang Solutions

La productivité «prête à l’emploi» d’Elixir est obtenue en mettant fortement l’accent sur l’outillage et la commodité dans l’expression de la manipulation des données. La conception du système est la même chez Elixir et Erlang, mais Elixir supprime beaucoup de code standard et est plus facile à étendre. La suppression de la méthode passe-haut augmente la productivité et permet aux programmeurs d’obtenir des commentaires plus rapidement, ce qui est crucial lorsque vous souhaitez lancer votre produit sur le marché le plus rapidement possible. La simplification des procédures passe également pour les développeurs heureux, et les développeurs heureux sont des développeurs peu productifs.

Le blog de Joe Armstrong (Erlang Inventor’s) sur Elixir

Commencez ici pour en savoir plus sur Elixir – Pour commencer

Une fois que vous vous sentez bien, faites votre chemin pour vous entraîner à l’ exercice et à d’ autres ressources .