Ci sono cose che Elixir può fare che Erlang non può fare, o viceversa?


102

Questa domanda è nel contesto della VM Beam e delle capacità che fornisce, non nel contesto generale di ciò che può fare un linguaggio completo di Turing. Voglio investire un po 'di tempo per imparare sia Erlang puro che Elisir. Ottengo le differenze di base tra i due e mi sto orientando verso Elixir a causa delle macro, una migliore sintassi e uno sviluppo più rapido del linguaggio oggi.

La mia domanda è: se scelgo Elisir, incapperò in qualcosa che non posso fare in esso, ma che posso fare a Erlang? Posso usare tutte le cose OTP, tutte le librerie Erlang, il ricaricamento del codice, ecc. Con Elixir?

Non sto chiedendo la preferenza di qualcuno tra i due; solo fatti sulle possibilità delle lingue. Preferibilmente da qualcuno che li ha usati entrambi nella produzione.


19
@hedgehog non è un'opinione, fatto. La domanda è "La mia domanda è: se scelgo Elixir, incapperò in qualcosa che non posso fare, ma che posso fare a Erlang? Posso usare tutte le cose OTP, tutte le librerie Erlang, ricaricare il codice, ecc. con Elixir?" e la risposta si basa sui fatti, non sull'opinione.
Saša Šijak

4
Per questa domanda, la risposta è: tutto ciò che puoi fare a Erlang è possibile in Elixir. Ma il titolo suggerisce che la domanda è su cosa investire e qui la risposta è "dipende". Che cosa vuoi fare? Per le applicazioni web Elixir è molto più bello, perché è stato creato per risolvere questo problema. Per alcuni tipi di sistemi distribuiti è possibile trovare la semplicità di Erlang superiore. La mancanza di funzionalità è spesso la cosa buona. Imparare solo Erlang ti aiuterà a concentrarti sulla parte più importante: OTP.
tkowal

2
@ SašaŠijak Ho cambiato il titolo della domanda, per IMO riflettere meglio di cosa si tratta - ripristina se non sei d'accordo.
Paweł Obrok

2
@ PawełObrok ottima modifica, riassume giustamente ciò che mi interessava sapere
Saša Šijak

3
ogni volta che faccio questo tipo di domande ricevo -10
voti negativi

Risposte:


37

Giusto per premettere: ho usato solo Elisir nella produzione e non Erlang.

Consiglio sinceramente Elixir. Questa è la mia opinione e non necessariamente quella giusta per te, ma di seguito elencherò le mie ragioni.

  1. Produttività: provengo da un background Ruby / Rails quindi la sintassi e lo stile di Elixir sono qualcosa che mi era molto familiare. Uno dei fattori principali che mi aiuta a determinare se imparare o meno una lingua è quanto posso essere produttivo in essa, principalmente perché ho scelto Ruby. L'elisir è lo stesso. Posso lavorare con la stessa velocità che posso con Ruby con tutti i vantaggi aggiuntivi della concorrenza e del pattern matching.
  2. Erlang: Poiché Elixir è costruito su Erlang e compila fino a erlang e beam vm, hai accesso a ogni modulo e pacchetto erlang. Quindi, se sei preoccupato di usare l'elisir e di perdere tutte le funzionalità di Erlang, non dovresti esserlo. Elixir ha anche le proprie implementazioni della maggior parte delle funzionalità Erlang / OTP più grandi come GenServer, GenEvent ecc.
  3. Comunità / Risorse: la comunità Elixir è davvero fantastica. Il canale slack è molto popolare ed è un ottimo modo per ottenere alcune risposte alle domande dei principianti. Ci sono già alcuni libri veramente buoni scritti sulla lingua (Programming Elixir 1.2 - Dave Thomas, Author of the Ruby Pickaxe) che rendono molto facile entrare nel linguaggio.

In realtà, se hai un pasticcio con i due, probabilmente arriverai alla stessa decisione che Elixir è un linguaggio molto più carino con tutte le caratteristiche di Erlang + More. È anche in aumento, non ricordo i numeri esatti ma ricordo di aver letto qualcosa dal sito Web Hex (gestore di pacchetti) su un considerevole aumento dei download di pacchetti.


14
Elixir non compila fino a Erlang, compila fino al codice BEAM. Elixir NON è simile a coffeescript, et. al. che scrivi solo JS.
Peter R

64

Non dovresti inciampare su qualcosa che puoi fare in uno che non puoi fare nell'altro, poiché puoi chiamare liberamente il codice Elixir da Erlang e viceversa. Puoi persino combinare facilmente file Erlang ed Elixir in un progetto.

In Elisir:

:erlang_module.erlang_function(args)

a Erlang:

'Elixir.ElixirModule':elixir_function(args)

2
A volte può essere un po 'complicato quando si creano versioni con dipendenze annidate o altri casi molto specifici, ma penso che questa sia sicuramente la risposta giusta. NOTA : se si esegue su macchine con risorse molto limitate, l'aggiunta di dipendenze Elixir ed Elixir a una versione potrebbe essere più pesante in termini di memoria. Quindi, se non mi sbaglio, a volte può accadere che attenersi a Erlang puro possa avere il vantaggio di risparmiare qualche Megabyte di memoria, rendendo più facile evitare arresti anomali quando non c'è spazio per espandere la VM.
Laymer

37

TL; DR - Inizia con Elixir

Erlang ha una curva di apprendimento più ripida rispetto a Elixir. Una volta che inizi ad imparare Elixir, inizierai automaticamente ad imparare Erlang. Quindi, inizia con Elixir. Elisir è scritto in Erlang ed Elixir. Vedi la distribuzione su Github (dato che Elixir è pieno di macro, ovvero meta-programmazione). Elixir Project Code distribuzione

Puoi usare Elixir con Erlang e viceversa, da qui l'intero ecosistema Erlang di oltre 20 anni di biblioteche.

Maggiori dettagli da Erlang Solutions

La produttività "fuori dagli schemi" di Elixir è ottenuta grazie a una forte attenzione agli strumenti e alla praticità nell'espressione della manipolazione dei dati. Il design del sistema è lo stesso in Elixir ed Erlang, ma Elixir rimuove molto codice standard ed è più facile da estendere. La rimozione di boilerplate aumenta la produttività e consente ai programmatori di ottenere feedback più rapidamente, elemento cruciale quando si desidera lanciare il proprio prodotto sul mercato il più rapidamente possibile. Meno boilerplate rende anche gli sviluppatori felici e gli sviluppatori felici sono sviluppatori produttivi senza sorprese.

Post sul blog di Joe Armstrong (inventore di Erlang) su Elixir

Inizia da qui per conoscere Elixir - Guida introduttiva

Una volta che senti che sta andando bene, fatti strada verso la pratica sull'esercizio fisico e altre risorse .


3

Ci sono alcune cose. Penso che non puoi creare una funzione anon ricorsiva in Elixir. Ad essere onesti, questo è qualcosa che in oltre 8 anni di Erlang non penso di aver mai avuto bisogno di fare, e se lo facessi potrebbe essere fatto facilmente in qualche altro modo. Probabilmente ci sono alcune altre cose del genere che onestamente puoi ignorare.

In generale, per le cose che interessano alla maggior parte delle persone qualsiasi cosa tu possa fare a Erlang, puoi fare in Elixir e viceversa. La comunità dalla parte degli Elisir sembra essere più attiva, quindi suggerirei di iniziare da lì. Di recente sono passato da Erlang a Elixir e con l'eccezione di alcune cose fantasiose in Proper posso dire che è una transizione abbastanza facile

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.