Node.js o Erlang

Mi piacciono molto questi strumenti quando si tratta di il livello di concorrenza è in grado di gestire.

Erlang sembra molto più stabile soluzione, ma richiede molto di più di apprendimento e un sacco di immersioni in linguaggio funzionale paradigma. E sembra che Erlang rende molto meglio quando si tratta di multi core Cpu(fix se mi sbaglio).

Ma quale devo scegliere? Che uno è migliore a breve/lungo termine?

Il mio obiettivo è quello di imparare uno strumento che ti scala i miei progetti web il carico è elevato, più facile che i linguaggi tradizionali.

  • È possibile utilizzare JavaScript come linguaggio funzionale con underscorejs.org
  • sei sicuro che hai commentato la domanda giusta ?
  • Mele e Arance. Node.JS (core) è libevent (C) + Javascript di interoperabilità. Erlang è totalmente personalizzato IO attuazione. Node.JS è fatto per le applicazioni single threaded. Il delema è vuoi un lavoro da Facebook/Google, o non si vuole fare kickass software.
InformationsquelleAutor user80805 | 2010-06-10

 

9 Replies
  1. 87

    Vorrei dare Erlang una prova. Anche se sarà una ripida curva di apprendimento, si otterrà fuori di esso, dal momento che sarà l’apprendimento di un linguaggio di programmazione funzionale. Inoltre, poiché Erlang è specificamente progettato per creare affidabile, altamente sistemi simultanei, si impara un sacco sulla creazione di servizi altamente scalabili, allo stesso tempo.

    • Non credo Erlang è un po ‘ più complesso di Javascript. Non c’è alcun tipo di ereditarietà in Erlang, in modo da essere sempre sicuri di quale funzione si chiama. Non c’è di tipo implicito di conversione in Erlang, in modo da essere sempre sicuri di quali tipi di dati si utilizza. Non c’è distruttivo di assegnazione in modo da essere sempre sicuri di non avere qualche vecchio pezzo di codice è rotta a causa di qualche nuovo codice di callback cambiato il tuo stato interno.
  2. 50

    Non posso parlare per Erlang, ma un paio di cose che non sono state menzionate circa nodo:

    • Nodo utilizza Google motore V8 effettivamente compilare javascript in codice macchina. Così nodo è in realtà abbastanza veloce. In modo che è in cima alla velocità di vantaggi offerti da event-driven programming e non di blocco io.
    • Nodo è una comunità abbastanza attiva. Hop sul loro gruppo su IRC su freenode e vedrete cosa intendo
    • Ho notato che i commenti che precedono spingere Erlang sulla base del fatto che sarà utile per imparare un linguaggio di programmazione funzionale. Mentre sono d’accordo che è importante per ampliare le vostre competenze e ottenere una di quelle sotto la cintura, si dovrebbe basare un progetto sul fatto che si desidera imparare un nuovo stile di programmazione
    • D’altra parte, Javascript è già in un paradigma sentire a vostro agio scrivendo nel! In più è javascript, in modo che quando si scrive codice lato client l’aspetto e la consistenza.
    • nodo comunità ha già pompato fuori tonnellate di i moduli! Ci sono dei moduli per redis, mongodb, divano, e quello che avete. Un altro buon modulo per esaminare è Express (si pensi Sinatra per nodo)

    Controllare il video su yahoo blog da Ryan Dahl, il ragazzo che in realtà ha scritto nodo. Penso che vi aiuteranno a dare una migliore idea di dove nodo è e dove sta andando.

    Tenere a mente che il nodo è ancora in ritardo fasi di sviluppo, e così è stato sottoposto a un bel paio di cambiamenti che hanno rotto codice precedente. Tuttavia, sembra a un punto in cui ci si possono aspettare le API non cambiare troppo di più. Quindi, se siete alla ricerca di qualcosa di divertente, direi che il nodo è una grande scelta.

    • Penso che il motore V8 da compilare JavaScript in codice macchina e non dell’assemblea.
    • Hai ragione—è compilato fare in codice macchina nativo.
    • Avendo tanto lavoro fatto intorno Javascript non fa la lingua, anche un po ‘ adatto per la risoluzione di problemi complessi. Il linguaggio stesso è terribile, con tutti quei particolari casi in tipi di conversione. E richiamata stile in cui le variabili sono cambiate in centinaia di luoghi diversi e l’inferno con la ricerca del luogo in cui alcuni di assegnazione si è verificato.
  3. 15

    Sono un lungo tempo di Erlang programmatore, e questa domanda mi ha spinto a dare un’occhiata a node.js. Sembra dannatamente bene.

    Sembra che avete bisogno di per deporre le uova più processi per sfruttare più core. Non vedo nulla di impostazione affinità del processore, però. Si potrebbe utilizzare taskset su linux, ma probabilmente dovrebbe essere parametrizzato e impostato nel programma.

    Ho anche notato che il supporto per la piattaforma potrebbe essere un po ‘ più deboli. In particolare, sembra che si avrebbe bisogno di correre sotto Cygwin per il supporto di Windows.

    Sembra buono però.


    Modifica

    Node.js ora ha il supporto nativo per Windows.

    • Questa risposta è un po ‘ vecchio. Destro, adesso il Nodo è cross-platform, non hanno bisogno di Cygwin per windows. E il Nodo è dotato di supporto per il clustering in una macchina, la condivisione di socket TCP.
  4. 9

    Sto guardando due alternative si sono, gotts, per più progetti.

    Finora, il miglior rasoio mi è venuta in mente a decidere tra di loro per un determinato progetto è se ho bisogno di usare Javascript. Un sistema esistente sto cercando di migrare è già scritto in Javascript, in modo che la sua prossima versione è probabile che essere fatto in node.js. Altri progetti saranno realizzate in alcune Erlang framework per il web, perché non c’è nessun codice di base esistente per eseguire la migrazione.

    Un’altra considerazione è che Erlang scale ben oltre i core multipli, è possibile scalare di un intero datacenter. Non vedo un meccanismo incorporato in node.js che mi permette di inviare un altro JS elaborare un messaggio senza preoccuparsi di che macchina è, ma che è costruito a destra in Erlang, ai livelli più bassi. Se il tuo problema non è grande abbastanza per bisogno di più macchine o se non richiede più di cooperare processi, questo vantaggio non è probabile che la materia, così si dovrebbe ignorare.

    Erlang è infatti una profonda piscina per tuffarsi. Io suggerirei di scrivere un autonomo programma funzionale prima di iniziare a costruire applicazioni web. Ancora più facile il primo passo, dal momento che ti sembra comodo con Javascript, è cercare di programmazione JS in un più funzionale. Se si utilizza jQuery o Prototype, hai già iniziato questo percorso. Provare a rimbalzare tra la pura programmazione funzionale in Erlang o uno dei suoi parenti più stretti (Haskell, F#, Scala…) e funzionale JS.

    Una volta che sei a tuo agio con la programmazione funzionale, cercare uno dei tanti Erlang framework per il web; probabilmente non dovrebbe essere scritta la tua app direttamente a qualcosa di basso livello come inets in questa fase. Look in qualcosa di simile a Azoto, per esempio.

    • node.js cluster è quello che si dovrebbe guardare in.
    • Spesso taciuta che il “Erlang scale di un intero datacenter” il punto è molto importante, le catture di prendere in considerazione (la sicurezza è un grande). Controllare il capitolo su questo qui: learnyousomeerlang.com/distribunomicon
  5. 9

    Mentre mi piacerebbe andare personalmente per Erlang, devo ammettere che sono un po ‘ prevenuto nei confronti di JavaScript. Il mio consiglio è di valutare alcuni punti:

    1. Sei il riutilizzo di codice esistente in una di queste lingue (sia in termini di codice sorgente, e programmatore esperienza!)
    2. Avete bisogno/desidera on-the-fly aggiornamenti senza arrestare l’applicazione (in Questo caso il Erlang vince per difetto – in fase di esecuzione è stato progettato per caso, e OTP contiene tutti gli strumenti necessari)
    3. Quanto è grande il traffico previsto, in termini di separato, di operazioni simultanee, non la larghezza di banda?
    4. Come “parallelo” sono operazioni che si fanno per ogni richiesta?

    Erlang ha davvero sintonizzato per la concorrenza & rete trasparente parallelo a un sistema distribuito. A seconda di che cosa è esattamente il progetto, la disponibilità di un maturo attuazione di un tale sistema potrebbe compensare eventuali problemi per quanto riguarda l’apprendimento di una nuova lingua. Ci sono anche altre due lingue che opera su Erlang VM che è possibile utilizzare, Ruby/Python-come Reia e Lisp-Aromatizzato Erlang.

    Ancora un’altra opzione è quella di utilizzare sia, soprattutto, con Erlang essere utilizzato come una sorta di “hub”. Non sono sicuro se Node.js ha Estera Funzione il sistema di Interfaccia, ma se si ha, Erlang ha libreria C per processi esterni di interfaccia con il sistema, proprio come qualsiasi altro Erlang processo.

    • Secondo la documentazione, Node.js possibile sfruttare il C e C++ per esterni addons. nodejs.org/docs/v0.3.1/api/addons.html
    • Sembra Reia è morto, ma al suo posto è elisir… mi ricorda Groovy e Java; qui sarebbe Elisir e distribuzione di Erlang.
    • Che non mi impressiona più di tanto. La cosa è, in pratica sei codifica di un problematico cosa in C++ e aggiungerli come built-in. Non molto di un FFI è ciò che si sta effettivamente facendo è di estendere l’emulatore. (Va bene, una preferenza personale ;)) Il menzionato esterni libreria in erlang è il caso di fare async processi in altre lingue che si presentano come nodi O che parlano più di una porta aperta (si pensi bi-direzionale tubo, con dati strutturati). Tutti che si adatta bene in modalità asincrona di funzionamento. Ci sono anche Nif, che è essenzialmente ciò che Node.js ha, ma sono scoraggiato.
    • Da quello che ho capito, il nodo approccio è leggermente diverso. Mentre il nodo è molto bravo a gestione async IO le chiamate (ie richieste web), viene eseguito in un thread singolo ambiente. Quindi è grande presso di spedizione ma non è così male come CPU per l’elaborazione. A copertura della terra, si può prendere un altro processo/thread che gira nativo di codice C/C++. Se tutto quello che stai facendo è async IO le chiamate (ex IPC | bi-direzionale tubi) quindi node.js dovrebbe essere in grado di gestire il carico. Fintanto che non è codificato per spendere un sacco di tempo in attesa di chiamate sincrone.
  6. 5

    Sembra Erlang, funziona meglio per la distribuzione in un relativamente server di fascia bassa (512MB 4-core 2.4 GHz AMD VM). Questo è da SyncPad esperienza di confronto di Erlang vs Node.js implementazioni di loro lavagna virtuale del server di applicazione.

    • Sì, node.js sembra avere un brutto problema di perdita di memoria. Il nodo è piuttosto nuovo e sperimentale e né JavaScript né il motore V8 è stato progettato per tali scenari di server. Erlang, d’altra parte è stato progettato per questo dal basso verso l’alto e ha avuto molti anni per perfezionare se stessa e a maturare.
    • Quel link sembra morto, ma qui WayBackMachine web.archive.org/web/20120902014555/http://blog.mysyncpad.com/…
  7. 4

    C’è ancora una lingua sulla stessa macchina virtuale che erlang è -> Elisir

    È un’alternativa molto interessante per Erlang, controllare questo fuori.

    Inoltre ha una rapida crescita del web framework basato su di esso-> Phoenix Quadro

  8. 0

    Io Preferisco Erlang oltre il Nodo.
    Se si desidera che la concorrenza, con un Nodo può essere sostituito da Erlang o Golang a causa del loro peso leggero processi.

    Erlang non è facile da imparare, quindi richiede un sacco di fatica, ma la sua comunità è attivo così possibile ottenere aiuto da parte di che, questo è solo il motivo per cui la gente preferisce Nodo .

Lascia un commento