Question

Je suis curieux de savoir si Erlang pourrait être tué par Node.js qui pourrait être extrême populaire, rapide et ont travailleurs web . C'est possible? Pourquoi?

  

Mais qu'en est-multiprocesseur   concurrency? Ne sont pas nécessaires visse   à des programmes d'échelle à plusieurs noyaux   des ordinateurs? Les processus sont nécessaires pour   échelle à des ordinateurs multi-core, non   fils de partage de mémoire. le   fondamentaux des systèmes évolutifs sont   rapide en réseau et non bloquant   design le reste passe du message. Dans   les versions futures, le nœud sera en mesure de   fourche de nouveaux processus (en utilisant le Web   API travailleurs) qui va bien dans la   conception actuelle.

Était-ce utile?

La solution

Node.js et Erlang sont des bêtes très différentes sur la savane.

Exemples:

Node.js est centrée autour d'un modèle de multi-tâches coopératif, qui rappelle Python ou Twisted Rubys eventmachine. Erlang, au contraire, est un système complet avec préventivement multitâche ordonnanceurs et ainsi de suite.

JavaScript de Node.js qui est un langage orienté objet basé sur un prototype avec une base impérative et plusieurs idées fonctionnelles. Erlang met en œuvre, essentiellement, un lambda-calcul augmentée dans le style fonctionnel habituelle.

Node.js est centrée principalement autour d'une seule machine, où chaque requête est traitée dans l'ordre. Les travailleurs Web à venir et l'extension multi-node vous permettent d'utiliser tous les processeurs de la machine. Erlang est conçu pour intégrer de façon transparente multiple nœuds , qui sont destinés à être utilisés pour permettre à un groupe de (plusieurs) machine physique Erlang être en communication de façon transparente les uns aux autres.

Node.js prend la position habituelle de faute d'atténuation proactive dans la plupart des langues. Erlang d'autre part prend faute d'atténuation réactive position: le système est construit pour survivre même si des erreurs autrement portés disparus se produire. Dans le pire des cas, en laissant une autre machine physique prendre le relais.

Node.js repose en grande partie sur JIT pour obtenir la vitesse. Erlang est un langage compilé plus standard. Les ramifications est que Erlang peut être mieux adaptée pour un temps réel doux comme le temps horloge murale d'un morceau de code est généralement plus prévisible.

Discussion:

Il doit être clair pour vous que l'approche du problème proposé est très différent des deux langues. Par conséquent, il est probablement utile de garder à la fois autour pour cette raison. En d'autres termes, je ne pense pas une langue remplacera complètement l'autre. Node.js a une force de familiarité. Erlang a une force distincte w.r.t. robustesse.

disclaimer. Je pirater Erlang

Autres conseils

Pas tout à fait probable.

  • Avec des structures de données mutables de JS, il y a beaucoup d'autres façons de se tirer dans le pied lors de la manipulation des données partagées.
  • solutions Erlang peut être facilement et de manière transparente en cluster; Node.js ne semble pas fournir un soutien comparable.
  • Erlang VM fournit apparemment plus d'outils pour examiner les systèmes en cours d'exécution.
  • Erlang est compilé statiquement et a un soutien de typage statique; cela augmente généralement la fiabilité.
  • V8 tourne vite seulement à cause de JIT et JIT consomme souvent beaucoup de mémoire. VM Erlang peut probablement gérer une charge au même budget du processeur et de la mémoire.

Node.js a sûrement un certain nombre d'aspects positifs, mais aucun d'entre eux semblent être va évincer Erlang de sa place. Je espère que Node.js évinceront à la place PHP:)

Node.js est une réponse à la question « Comment voulez-vous construire un système concurrent efficace par boulonnage une boucle d'événement sur une langue ridiculement quelques lignes de code ». Et la question elle-même est un peu trop brillant,.

Erlang est une réponse beaucoup plus complète à la problème de la concurrence, la langue, le compilateur, les bibliothèques, tout est construit autour de la tolérance aux pannes, la distribution et la concurrence à partir du sol.

Une liste complète des avantages de Erlang? C'est une longue liste, je n'ai pas beaucoup de temps. Quelques exemples:

  • un léger mécanisme évolutif concurrency (processus) au lieu d'un léger (événements) plus un poids lourd (travailleurs web)
  • hiérarchies de superviseur entre les processus
  • douces capacités en temps réel (en raison de la conception du langage, compilateur et support d'exécution)
  • processus maintenir une pile d'appels, les événements Node.js oublient d'où ils viennent, ce qui rend les messages d'erreur / traces de pile beaucoup moins perspicace
  • pas besoin de parenthèses imbriquer / indentation dans le style passant de continuation pour créer callbacks, la boucle d'événement et le passage de continuation sont gérées par le compilateur / runtime

Node.js a l'avantage d'utiliser JavaScript, donc il sera probablement battu Erlang en termes de popularité où Node.js est assez bon, ce qui est dans beaucoup d'endroits.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top