113 votes

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

Cette question est dans le contexte de la machine virtuelle Beam et des capacités qu'elle offre, et non pas dans le contexte général de ce qu'un langage complet de Turing peut faire. Je veux investir du temps pour apprendre soit le pur Erlang, soit l'Elixir. Je comprends les différences fondamentales entre les deux et je penche plutôt vers l'Elixir en raison des macros, de la meilleure syntaxe et du développement plus rapide de ce langage ces jours-ci.

Ma question est la suivante : si je choisis l'Elixir, vais-je rencontrer quelque chose que je ne pourrais pas faire avec, mais que je pourrais faire avec Erlang ? Puis-je utiliser toutes les fonctionnalités 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 langages. De préférence venant de quelqu'un qui a utilisé les deux en production.

0 votes

Vous pouvez faire tout ce que vous pouvez faire avec Erlang avec Elixir, mais il y a beaucoup de variables qui peuvent orienter votre choix vers l'un ou l'autre et ces variables ne sont connues que de vous.

20 votes

@hedgehog pas une opinion, c'est un fait. La question est "Ma question est si je choisis Elixir, vais-je tomber sur quelque chose que je ne peux pas faire, mais que je peux faire en Erlang? Puis-je utiliser tout le matériel OTP, toutes les bibliothèques Erlang, le rechargement de code, etc. avec Elixir?" et la réponse est basée sur des faits, pas une opinion.

4 votes

Pour cette question, la réponse est : tout ce que vous pouvez faire en Erlang est possible en Elixir. Mais le titre suggère que la question est de savoir dans quoi vous devriez investir et ici la réponse est "cela dépend". Que voulez-vous faire ? Pour les applications web, Elixir est bien meilleur car il a été créé pour résoudre ce problème. Pour certains types de systèmes distribués, vous pouvez trouver la simplicité de l'Erlang supérieure. Le manque de fonctionnalités est souvent une bonne chose. Apprendre seulement l'Erlang vous aidera à vous concentrer sur l'élément le plus important : OTP.

68voto

obrok Points 4574

Vous ne devriez pas rencontrer de difficulté pour faire quelque chose dans l'un que vous ne pouvez pas faire dans l'autre, car vous pouvez librement appeler du code Elixir depuis Erlang et vice versa. Vous pouvez même facilement mélanger des fichiers Erlang et Elixir dans un même projet.

En Elixir :

:erlang_module.erlang_function(args)

En Erlang :

'Elixir.ElixirModule':elixir_function(args)

3 votes

Il peut parfois être un peu délicat de construire des versions avec des dépendances imbriquées ou d'autres cas très spécifiques, mais je pense que c'est certainement la bonne réponse. REMARQUE : si vous exécutez sur des machines très limitées en ressources, l'ajout d'Elixir et de dépendances Elixir à une version pourrait être plus lourd en termes de mémoire. Donc si je ne me trompe pas, il peut parfois arriver que rester fidèle à l'Erlang pur ait l'avantage d'économiser quelques mégaoctets de mémoire, facilitant ainsi l'évitement des plantages lorsque l'espace pour étendre la VM est épuisé.

40voto

Harrison Lucas Points 1883

Juste pour prévenir - J'ai seulement utilisé Elixir en production et non Erlang.

Je recommanderais honnêtement Elixir. C'est mon opinion et pas forcément la bonne pour vous, mais ci-dessous je listerai mes raisons pourquoi.

  1. Productivité : Je viens d'un background Ruby/Rails donc la syntaxe et le style d'Elixir m'étaient très familiers. Un des principaux facteurs qui m'aide à déterminer si je dois apprendre un langage est ma productivité en celui-ci - en grande partie pourquoi j'ai choisi Ruby. Elixir est pareil. Je peux travailler aussi vite en Elixir qu'en Ruby avec tous les avantages supplémentaires de la concurrence et du pattern matching.
  2. Erlang : Puisque Elixir est construit au-dessus d'Erlang et compile en erlang et la machine virtuelle beam, vous avez accès à tous les modules et paquets erlang. Donc si vous vous inquiétez d'utiliser Elixir et de rater toutes les fonctionnalités d'Erlang, vous ne devriez pas vous en soucier. Elixir a même ses propres implémentations de la plupart des fonctionnalités plus grandes d'Erlang/OTP comme GenServer, GenEvent etc.
  3. Communauté/Ressources : La communauté Elixir est vraiment géniale. Le canal Slack est très populaire et 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, l'Auteur de la Pioche Ruby) qui facilitent beaucoup l'apprentissage du langage.

Vraiment, si vous jouez un peu avec les deux vous en viendrez probablement à la même conclusion qu'Elixir est un langage bien plus agréable avec toutes les fonctionnalités d'Erlang + Plus. Il est également en hausse, je ne me souviens pas des chiffres exacts mais je me rappelle avoir lu quelque chose sur le site de Hex (gestionnaire de paquets) concernant une augmentation considérable des téléchargements de paquets.

19 votes

Elixir ne se compile pas en Erlang, il se compile en code BEAM. Elixir n'est PAS similaire à coffeescript, et al. qui se contente d'écrire du JS.

40voto

Sairam Points 775

TL ; DR - Commencez avec Elixir

Erlang a une courbe d'apprentissage plus raide par rapport à Elixir. Une fois que vous commencez à apprendre Elixir, vous commencerez automatiquement à apprendre Erlang. Par conséquent, commencez par Elixir. Elixir est écrit en Erlang et Elixir. Voir la distribution sur Github (car Elixir est plein de macros alias de méta-programmation). Distribution du code du projet Elixir

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

Plus de détails de Erlang Solutions

La productivité 'hors du commun' d'Elixir est accomplie par un fort accent mis sur les outils et la commodité dans l'expression de la manipulation des données. La conception du système est la même en Elixir et en Erlang, mais Elixir supprime beaucoup de code superflu et est plus facile à étendre. La suppression du code superflu augmente la productivité et permet aux programmeurs d'obtenir des retours plus rapidement - crucial lorsque vous voulez lancer votre produit sur le marché le plus rapidement possible. Moins de code superflu rend également les développeurs heureux, et des développeurs heureux sont étonnamment des développeurs productifs.

Le post de blog de Joe Armstrong (l'inventeur d'Erlang) à propos d'Elixir

Commencez ici pour en savoir plus sur Elixir - Commencer

Une fois que vous vous sentez à l'aise, dirigez-vous vers la pratique sur Exercism et d'autres ressources.

0 votes

Certaines sources en ligne affirment que le pur Erlang a de meilleures performances en termes de calcul que Elixir. Cette différence est-elle importante en pratique?

0 votes

Pour certains développeurs, l'expressivité par rapport à la vitesse est importante pour la productivité, c'est pourquoi des langages comme Ruby, Python ont été choisis plutôt que C, C++. C'est tout une question de compromis

0 votes

Oui, je suis d'accord que c'est toujours un compromis. Sinon, tout le monde écrirait encore tout en assembleur aujourd'hui, tout comme c'était le cas dans les années 1960, car en théorie, cela donne les meilleures performances possibles en exécution. Cependant, je me demandais à quel point est important le compromis en performances en exécution que vous prenez en pratique si vous choisissez Elixir plutôt qu'Erlang?

5voto

Zachary K Points 1159

Il y a quelques choses. Je pense que vous ne pouvez pas créer de fonction anonyme récursive en Elixir. Maintenant, pour être honnête, c'est quelque chose que je n'ai jamais eu besoin de faire en plus de 8 ans d'Erlang, et si je devais le faire, cela pourrait être facilement réalisé d'une autre manière. Il y a probablement quelques autres choses comme ça que vous pouvez honnêtement ignorer.

En général, pour les choses qui intéressent la plupart des gens, tout ce que vous pouvez faire en Erlang, vous pouvez le faire en Elixir et vice versa. La communauté du côté Elixir semble être plus active, donc je vous suggère de commencer par là. J'ai récemment changé d'Erlang à Elixir et mis à part quelques fonctionnalités avancées de Proper, je peux dire que c'est une transition assez facile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X