Zijn er dingen die Elixir kan doen die Erlang niet kan, of omgekeerd?

Deze vraag staat in de context van de Beam VM en de mogelijkheden die deze biedt, niet in de algemene context van wat een complete Turing-taal kan doen. Ik wil wat tijd investeren om ofwel pure Erlang of Elixir te leren. Ik begrijp de basisverschillen tussen de twee en ik neig naar Elixir vanwege de macro’s, betere syntaxis en snellere ontwikkeling van de taal tegenwoordig.

Mijn vraag is: als ik Elixir kies, kom ik dan op iets uit dat ik er niet in kan, maar wel in Erlang? Kan ik alle OTP-dingen, alle Erlang-bibliotheken, code herladen, enz. gebruiken met Elixir?

Ik vraag niet naar iemands voorkeur tussen de twee; gewoon feiten over de mogelijkheden van de talen. Bij voorkeur van iemand die beide in productie heeft gebruikt.


Antwoord 1, autoriteit 100%

Je moet niet struikelen over iets dat je in de ene kunt doen wat je in de andere niet kunt, aangezien je vrijelijk de Elixir-code kunt bellen vanuit Erlang en vice versa. Je kunt zelfs gemakkelijk Erlang- en Elixir-bestanden in één project mixen.

In elixer:

:erlang_module.erlang_function(args)

in Erlang:

'Elixir.ElixirModule':elixir_function(args)

Antwoord 2, autoriteit 59%

Even een voorwoord: ik heb Elixir alleen in de productie gebruikt en niet Erlang.

Ik zou Elixir oprecht aanbevelen. Dit is mijn mening en niet per se de juiste voor jou, maar hieronder zal ik mijn redenen opsommen waarom.

  1. Productiviteit: ik kom uit een Ruby/Rails-achtergrond, dus de syntaxis en stijl van Elixir was iets dat me heel bekend voorkwam. Een van de belangrijkste factoren die me helpen bepalen of ik een taal wel of niet moet leren, is hoe productief ik erin kan zijn – vooral waarom ik voor Ruby heb gekozen. Elixer is hetzelfde. Ik kan er net zo snel in werken als Ruby met alle extra voordelen van gelijktijdigheid en patroonherkenning.
  2. Erlang: Aangezien Elixir bovenop Erlang is gebouwd en naar erlang en de beam vm wordt gecompileerd, heb je toegang tot elke erlang-module en elk pakket. Dus als je je zorgen maakt over het gebruik van elixer en alle functies van Erlang mist, zou je dat niet moeten zijn. Elixir heeft zelfs zijn eigen implementaties van de meeste grotere Erlang/OTP-functies zoals GenServer, GenEvent enz.
  3. Community/Bronnen: De Elixir-community is echt geweldig. Het slack-kanaal is erg populair en een geweldige manier om antwoorden te krijgen op vragen van beginners. Er zijn al een aantal echt goede boeken geschreven over de taal (Programming Elixir 1.2 – Dave Thomas, auteur van de Ruby Pickaxe) die het ook heel gemakkelijk maken om in de taal te komen.

Echt, als je met die twee rommelt, kom je waarschijnlijk tot dezelfde beslissing dat Elixir een veel leukere taal is met alle functies van Erlang + More. Het zit ook in de lift, de exacte cijfers weet ik niet meer, maar ik herinner me iets gelezen te hebben van de Hex website (pakketbeheerder) over een aanzienlijke toename van pakketdownloads.


Antwoord 3, autoriteit 59%

TL;DR – Begin met Elixir

Erlang heeft een steilere leercurve in vergelijking met Elixir. Zodra u Elixir begint te leren, begint u automatisch Erlang te leren. Begin daarom met Elixir. Elixir is geschreven in Erlang en Elixir. Zie distributie op Github(aangezien Elixir vol staat met macro’s, ook wel meta-programmering genoemd).
Elixir Distributie van projectcode

Je kunt Elixir gebruiken met Erlang en vice versa, vandaar het volledige Erlang-ecosysteem van meer dan 20 jaar bibliotheken.

Meer details van Erlang-oplossingen

De ‘out-of-the-box’-productiviteit van Elixir wordt bereikt door een sterke focus op tooling en gemak bij het uitdrukken van gegevensmanipulatie. Het systeemontwerp is hetzelfde in Elixir en Erlang, maar Elixir verwijdert veel boilerplate-code en is gemakkelijker uit te breiden. Het verwijderen van standaardtekst verhoogt de productiviteit en stelt programmeurs in staat sneller feedback te krijgen – cruciaal wanneer u uw product zo snel mogelijk op de markt wilt brengen. Minder standaardtekst zorgt ook voor tevreden ontwikkelaars, en tevreden ontwikkelaars zijn niet verwonderlijk productieve ontwikkelaars.

Joe Armstrong‘s (Erlang uitvinder) blogbericht over Elixir

Begin hier voor meer informatie over Elixir – Aan de slag

Zodra je voelt dat het goed gaat, werk je naar het oefenen op Exercismen andere bronnen.


Antwoord 4, autoriteit 7%

Er zijn een paar dingen. Ik denk dat je geen recursieve anon-functie kunt maken in Elixir. Om eerlijk te zijn is dit iets dat ik in 8+ jaar Erlang niet denk dat ik ooit heb hoeven doen, en als ik het deed, zou het gemakkelijk op een andere manier kunnen worden gedaan. Er zijn waarschijnlijk nog een paar andere dingen die je eerlijk gezegd kunt negeren.

Over het algemeen geldt dat voor dingen waar de meeste mensen om geven, alles wat je kunt doen in Erlang, je kunt doen in Elixir en vice versa. De gemeenschap aan de kant van Elixir lijkt actiever te zijn, dus ik zou willen voorstellen om daar te beginnen. Ik ben onlangs verhuisd van Erlang naar Elixir en met uitzondering van een paar mooie dingen in Proper kan ik zeggen dat het een vrij gemakkelijke overgang is

Other episodes