web-dev-qa-db-fra.com

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

Cette question se situe dans le contexte du Beam VM et des fonctionnalités qu’il offre, et non dans le contexte général de ce qu’un langage complet de Turing peut faire. Je souhaite investir un peu de temps pour apprendre Erlang ou Elixir: je comprends les différences fondamentales entre les deux et je penche en faveur d’Elixir à cause des macros, d’une meilleure syntaxe et du développement plus rapide de la langue de ce jour.

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 tout le matériel 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 dans la production.

94
Saša Šijak

Pour commencer, je n’ai utilisé que l’élixir en production et pas Erlang.

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

  1. Productivité: je viens de Ruby/Rails, la syntaxe et le style d’Elixir m’est donc très familier. L’un des principaux facteurs qui m’aide à déterminer si une langue doit être apprise est la productivité que je peux y avoir - principalement la raison pour laquelle j’ai choisi Ruby. L'élixir est le même. Je peux y travailler aussi vite que possible Ruby) avec tous les avantages supplémentaires de la simultanéité et de la correspondance de modèle.
  2. Erlang: Elixir étant construit sur Erlang et compilé en erlang et le faisceau vm, vous avez accès à tous les modules et packages erlang. Donc, si vous êtes inquiet à propos de l'utilisation de l'élixir et que vous manquez toutes les fonctionnalités d'Erlang, vous ne devriez pas l'être. Elixir a même ses propres implémentations de la plupart des plus grandes fonctionnalités d'Erlang/OTP telles que GenServer, GenEvent, etc.
  3. Communauté/Ressources: La communauté Elixir est vraiment géniale. La chaîne slack est très populaire et constitue un excellent moyen d’obtenir des réponses aux questions des débutants. Il existe déjà de très bons livres écrits sur le langage (Programming Elixir 1.2 - Dave Thomas, auteur du Ruby Pickaxe)] qui facilitent également l’accès au langage.

Vraiment, si vous avez des problèmes avec les deux, vous en arriverez probablement à la même décision, à savoir que l'élixir est un langage beaucoup plus agréable doté de toutes les fonctionnalités d'Erlang + More. C'est aussi à la hausse, 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.

35
Harrison Lucas

Vous ne devriez pas trébucher sur ce que vous pouvez faire dans un cas impossible, car vous pouvez appeler librement le code Elixir d'Erlang et inversement. Vous pouvez même facilement mélanger des fichiers Erlang et Elixir dans un projet.

Dans Elixir:

:erlang_module.erlang_function(args)

à Erlang:

'Elixir.ElixirModule':elixir_function(args)
61
Paweł Obrok

TL; DR - commence avec Elixir

Erlang a une courbe d'apprentissage plus raide par rapport à 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 distribution sur Github (puisque Elixir est plein de macros aka méta-programmation). Elixir Project Code distribution

Vous pouvez utiliser Elixir avec Erlang et inversement, d’où l’écosystème complet d’Erlang, constitué de plus de 20 ans de bibliothèques.

Plus de détails de Erlang Solutions

La productivité "clé en main" d’Elixir est obtenue par un accent particulier mis sur l’outillage et la commodité d’expression de la manipulation des données. La conception du système est la même dans Elixir et Erlang, mais Elixir supprime beaucoup de code standard et est plus facile à étendre. La suppression de la plate-forme augmente la productivité et permet aux programmeurs d'obtenir des informations plus rapidement, ce qui est crucial lorsque vous souhaitez lancer votre produit sur le marché le plus rapidement possible. Moins de passe-partout est aussi un plaisir pour les développeurs, et les développeurs heureux sont des développeurs sans aucun doute productifs.

Joe Armstrong 's (l'inventeur d'Erlang) article de blog sur Elixir

Commencez ici pour en savoir plus sur Elixir - Mise en route

Une fois que vous sentez que ça va bien, travaillez votre chemin vers la pratique sur Exercism et autres ressources .

30
Sairam

Il y a quelques choses. Je pense que vous ne pouvez pas créer de fonction récursive anon dans Elixir. Maintenant, pour être honnête, je ne pense pas que j’ai jamais eu besoin de le faire depuis plus de 8 ans à Erlang, et si je le faisais, cela pourrait se faire facilement d’une autre manière. Il y a probablement quelques autres choses de ce genre que vous pouvez ignorer très honnêtement.

En général, pour ce que la plupart des gens s'intéressent à tout ce que vous pouvez faire à Erlang, vous pouvez le faire à Elixir et inversement. La communauté du côté de l'Elixir semble être plus active, je suggère donc de commencer par là. J'ai récemment déménagé d'Erlang à Elixir et, à l'exception de quelques petites choses fantaisistes dans Proper, je peux dire que la transition est assez facile

2
Zachary K