2016-06-22 76 views
75

Questa domanda è nel contesto di Beam VM e delle funzionalità che fornisce, non nel contesto generale di ciò che una lingua completa di Turing può fare. Voglio investire un po 'di tempo per imparare sia l'Erlang puro che l'elisir. Ottengo le differenze di base tra i due e mi sto orientando verso Elixir a causa delle macro, una sintassi migliore e uno sviluppo più veloce della lingua questo giorno.Ci sono cose che Elixir può fare che Erlang non può, o viceversa?

La mia domanda è: se scelgo l'elisir, incapperò in qualcosa che non posso fare, ma che posso fare in Erlang? Posso usare tutte le cose OTP, tutte le librerie di Erlang, ricaricare il codice, ecc. Con Elixir?

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

+0

Puoi fare tutto con Elixir cosa puoi fare con Erlang ma ci sono molte variabili che possono inclinare la tua scelta verso l'una o l'altra e quelle variabili sono note solo a te. – JustMichael

+15

@hedgehog non un'opinione, fatto. la domanda è "La mia domanda è se scelgo Elixir, incapperò in qualcosa che non posso farlo, ma posso farlo in Erlang? Posso usare tutte le cose OTP, tutte le librerie Erlang, ricaricare il codice, ecc. con Elixir?" e la risposta è basata su fatti non opinioni. –

+3

Per quella domanda, la risposta è: tutto ciò che puoi fare in Erlang è possibile in Elisir. Ma il titolo suggerisce che la domanda è su cosa dovresti 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. Solo apprendimento Erlang ti aiuterà a concentrarti sul bit più importante: OTP. – tkowal

risposta

26

Giusto per prefazione: ho utilizzato Elixir solo in produzione e non in Erlang.

Consiglierei sinceramente Elixir. Questa è la mia opinione e non è necessariamente quella giusta per te, ma qui sotto elencherò i miei motivi per cui.

  1. Produttività: provengo da uno sfondo Ruby/Rails, quindi la sintassi e lo stile Elixir sono qualcosa che mi era molto familiare. Uno dei principali fattori che mi aiuta a determinare se apprendere o meno una lingua è quanto possa essere produttivo in esso - principalmente perché ho scelto Ruby. L'elisir è lo stesso. Posso lavorare con la stessa rapidità con cui posso Ruby con tutti i vantaggi aggiuntivi della concorrenza e della corrispondenza dei pattern.
  2. Erlang: Dal momento che Elixir è costruito su Erlang e si compila fino a erlang e il fascio vm, si ha accesso a ogni modulo e pacchetto di erlang. Quindi se sei preoccupato di usare l'elisir e di perdere tutte le funzionalità di Erlang, non dovresti esserlo. Elixir ha anche le sue implementazioni di gran parte delle più grandi funzionalità di Erlang/OTP come GenServer, GenEvent ecc.
  3. Comunità/Risorse: La comunità di Elisir è davvero una grande. Il canale lento è molto popolare e ottimo modo per ottenere alcune risposte per le 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 davvero facile entrare nella lingua.

In realtà, se si ha un problema con i due probabilmente si giunge alla stessa decisione che Elixir è un linguaggio molto più carino con tutte le funzionalità di Erlang + Altro. È in aumento, non riesco a ricordare i numeri esatti, ma ricordo di aver letto qualcosa dal sito web di Hex (gestore pacchetti) su un notevole aumento dei download di pacchetti.

+0

Elixir non si compila giù in Erlang, si compila fino al codice BEAM. L'elisir NON è simile al coffeescript, et. al. quello basta scrivere JS. –

51

Non dovresti incappare in qualcosa che non puoi fare nell'altro, dal momento che puoi chiamare liberamente il codice Elixir da Erlang e viceversa. È anche possibile combinare facilmente file Erlang ed Elixir in un unico progetto.

In Elixir:

:erlang_module.erlang_function(args) 

in Erlang:

'Elixir.ElixirModule':elixir_function(args) 
23

TL; DR - Start with Elixir

Erlang ha una curva di apprendimento più ripida rispetto a Elixir. Una volta che inizierai a imparare l'elisir, inizierai automaticamente ad imparare Erlang. Quindi, inizia con Elisir. L'elisir è scritto in Erlang ed Elixir. See distribution on Github (poiché Elixir è pieno di macro, ovvero meta-programmazione). Elixir Project Code distribution

È possibile utilizzare Elixir con Erlang e viceversa, quindi l'intero ecosistema Erlang di oltre 20 anni di biblioteche.

Maggiori dettagli A partire Erlang Solutions

Elixir di ‘out of the box’ la produttività è compiuta da un forte accento sulla utensili e convenienza in espressione di manipolazione dei dati. Il design del sistema è lo stesso in Elixir ed Erlang, ma Elixir rimuove un sacco di codice standard ed è più facile da estendere. La rimozione del boilerplate aumenta la produttività e consente ai programmatori di ottenere un feedback più veloce - fondamentale quando si desidera lanciare il prodotto sul mercato il più velocemente possibile. Meno stereotipia rende anche gli sviluppatori felici, e gli sviluppatori felici sono sviluppatori senza speranza di sviluppo.

Joe Armstrong 's (di Erlang inventore) blog post about Elixir

Inizia qui per conoscere Elixir - Getting Started

volta che si sente la sua intenzione bene, il lavoro la strada verso la pratica su Exercism e other resources.