Je ne comprends pas vraiment, comment Erlang peut-il être plus efficace que C ++?
Réponses
Trop de publicités?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.
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
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.