Domanda

Sono curioso di sapere se Erlang poteva essere ucciso da Node.js che potrebbe essere estremo popolare, veloce e hanno lavoratori web . È possibile? Perché?

Ma che dire di più processori concorrenza? Non sono occorrente ai programmi scala a multi-core i computer? I processi sono necessari per scala per computer multi-core, non memory-sharing discussioni. Il fondamenti di sistemi scalabili sono veloce collegamento in rete e non bloccante Design-il resto è il messaggio che passa. Nel le versioni future, Nodo saranno in grado di nuovi processi forcella (utilizzando il Web Lavoratori API) che si adatta bene nel design attuale.

È stato utile?

Soluzione

Node.js e Erlang sono abbastanza differenti belve nella savana.

Esempi:

Node.js è centrata intorno ad un modello di multitasking cooperativo, che ricorda di Python ritorto o Rubys EventMachine. Erlang, al contrario, è un sistema preventivamente multitasking completo di schedulatori e così via.

Node.js utensileria JavaScript che è un linguaggio OO basato sui prototipi con una base imperativo e diverse idee funzionali. implementa Erlang, in sostanza, di una aumentata lambda-calcolo nel solito stile funzionale.

Node.js è centrata principalmente intorno una singola macchina, dove ogni richiesta viene gestita in ordine. I lavoratori provenienti Web e l'estensione multi-node consentono di utilizzare tutte le CPU della macchina. Erlang è progettato per perfettamente integrare più nodi , che sono destinati ad essere utilizzati per consentire un cluster di macchina fisica (più di uno) Erlang essere perfettamente comunicando tra loro.

Node.js prende la solita posizione di fault-mitigazione proattiva trovato nella maggior parte delle lingue. Erlang d'altro canto prende un reattiva ai guasti di mitigazione presa di posizione: il sistema è costruito per sopravvivere anche se gli errori altrimenti dispersi verificarsi. Nel peggiore dei casi, lasciando un'altra macchina fisica prendere il sopravvento.

Node.js si basa molto sulla JIT per ottenere velocità. Erlang è un linguaggio compilato più standard. Le ramificazioni è che Erlang può essere più adatto per soft-tempo reale come il tempo orologio a muro di un pezzo di codice è di solito più prevedibile.

Discussione:

Dovrebbe essere chiaro che l'approccio al problema proposto è molto diverso dalle due lingue. Quindi, è probabilmente vale la pena tenere sia in giro per questo motivo. In altre parole, non credo che una lingua sarà completamente sostituire l'altro. Node.js ha una forza familiarità. Erlang ha un distinto w.r.t. forza robustezza.

disclaimer:. Ho hack Erlang

Altri suggerimenti

Non del tutto probabile.

  • Con strutture di dati mutevoli di JS, ci sono molti più modi per sparare se stessi nel piede durante la gestione di dati condivisi.
  • Soluzioni Erlang può essere facilmente e in modo trasparente cluster; node.js non sembra fornire un supporto analogo.
  • Erlang VM fornisce apparentemente più strumenti per guardare i sistemi di esecuzione.
  • Erlang è compilato staticamente e ha un certo supporto tipizzazione statica; questo di solito aumenta l'affidabilità.
  • V8 corre veloce solo a causa di JIT, e JIT consuma spesso grandi quantità di memoria. VM Erlang probabilmente può gestire più carico allo stesso budget della CPU e della memoria.

Node.js ha sicuramente un certo numero di aspetti positivi, ma nessuno di questi sembrano andare per cacciare Erlang dal suo posto. La mia speranza che node.js saranno spodestare PHP invece:)

Node.js è una risposta alla domanda "Come si fa a costruire un sistema concorrente efficiente mediante bullonatura un ciclo di eventi su una lingua con ridicolmente poche righe di codice". E la domanda in sé è una specie di geniale, anche.

Erlang è una risposta molto più completo alla concorrenza-problema, il linguaggio, il compilatore, le librerie, tutto è costruito attorno tolleranza ai guasti, la distribuzione e la concorrenza da zero.

Un elenco completo dei vantaggi di Erlang? Questo è un lungo elenco, non ho molto tempo. A pochi campioni:

  • una leggera, meccanismo di concorrenza scalabile (processi) invece di un leggero (eventi) più una pesante (lavoratori web)
  • gerarchie supervisore tra processi
  • funzionalità di soft real-time (a causa di progettazione del linguaggio, compilatore e il supporto runtime)
  • processi di mantenere uno stack di chiamate, eventi in node.js dimenticano da dove vengono, che rende i messaggi di errore / analisi dello stack molto meno perspicace
  • non c'è bisogno di parentesi nido / rientro in continuazione passando stile per creare callback, il ciclo degli eventi e la continuazione di passaggio sono gestiti da compilatore / runtime

Node.js ha il vantaggio di usare JavaScript, quindi sarà probabilmente battuto Erlang in termini di popolarità ovunque node.js è abbastanza buono, che è in un sacco di posti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top