29 votes

Pourquoi Erlang serait-il plus adapté à la programmation côté serveur dans les jeux Web que Java et C ++?

Je ne comprends pas vraiment, comment Erlang peut-il être plus efficace que C ++?

58voto

Marcelo Cantos Points 91211

Erlang est beaucoup moins efficace qu'en C++. Erlang est grande force est l'évolutivité, pas l'efficacité. Il va de façon linéaire à l'échelle de plusieurs Processeurs et, en raison de sa programmation et la communication modèle, très facilement à l'échelle des clusters de machines.

Juste pour être clair, Erlang ne plus qu'en C++; simplement, il s'adapte plus facilement qu'en C++. Un beaucoup plus facilement. Voir les chapitres 5 et 6 de la Programmation Simultanée en Erlang pour une très bonne explication de pourquoi il en est ainsi.

22voto

Jonas Points 22309

Je vois plusieurs raisons à cela:

  • Erlang est conçu pour Simultanéité
  • Erlang est conçu pour les Systèmes Distribués
  • Erlang est conçu pour être Doux Systèmes Temps Réel
  • Erlang est conçu pour la Disponibilité

Cependant, il n'est pas bon pour les calculs, mais il a une bonne disponibilité pour l'interfaçage avec C et C++ et autres langages. Utiliser le bon outil pour le bon travail.

Desined pour Simultanéité

Erlang est un concurrent à un langage de programmation orienté, et sont bien adaptés pour les applications qui peuvent être très parallellized c'est à dire les serveurs de jeu. Processus Erlang sont beaucoup plus léger et a une bonne performence dans le processus de communication. Cela signifie qu'une application mise en œuvre en erlang peut avoir beaucoup plus de processus que d'une application en C++ peut avoir de fils. Voir aussi ma question , Techniquement, pourquoi est-processus erlang plus efficace que les OS de threads.

Conçu pour les Systèmes Distribués

Erlang a également construit dans les caractéristiques qui font le programmeur plus productif lorsque vous traitez avec système distribué. Il est intégré dans les langues primitives pour l'envoi et la réception de messages entre les processus, et il est utilisé de la même façon, si le processus est situé sur une autre base ou de l'ordinateur. Aussi le programmeur n'a pas à traiter avec de l'ordonnancement et de la sérialisation quand les messages sont envoyés entre les processus, qui est intégré dans la langue.

Conçu pour les Doux Systèmes Temps Réel

Erlang est conçu pour être souple en temps réel des systèmes, et qui est utile quand on fait de jeu-serveurs. Par rapport à C++, il a construit dans la gestion de la mémoire qui sera beaucoup plus productif pour le programmeur. C++ et le malloc va souffrir de problèmes lors de l'utilisation de plusieurs threads, et peut être un goulot d'étranglement (Voir la présentation Erlang support SMP - derrière les scènes à (14:00)). Par rapport à Java, Erlang collecte des ordures se fait par processus (une beaucoup plus petite unité) et qui sera utile dans un système en temps réel.

Conçu pour la Disponibilité

Erlang est conçu pour les applications de télécommunication lorsque la disponibilité est essentielle. L'une des caractéristiques de disponibilité est que les applications peuvent être mises à jour au moment de l'exécution, avec hot code swapping. Cela peut être utile si vous souhaitez mettre à jour votre serveur de jeu alors qu'il est encore en ligne.

Je vous recommande de voir cette présentation: Erlang - Logiciel pour un monde concurrentiel

9voto

Daniel Luna Points 1381

Il ne s'agit pas d'efficacité lorsque Erlang est promu comme meilleur que C. Il s'agit de gestion des erreurs et de concurrence. Un serveur écrit en Erlang utilisant les principes OTP appropriés aura automatiquement d'excellents moyens de récupérer des erreurs.

On pourrait dire qu'Erlang est plus efficace pour le programmeur pour écrire une application serveur. Et quand il fonctionne, il sera plus stable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X