2017-01-05 2 views
-1

Je ne comprends pas pourquoi erlang lui-même est génial avec la simultanéitéComment Erlang est meilleur que l'autre langage en faisant la concurrence?

Existe-t-il d'autres langages tels que C# qui pourrait être aussi bien que erlang si nous faisons un truc?

Ou est-ce la fonction de langage très spécifique d'erlang que la plupart des langues n'ont pas? Pourrions-nous écrire C pour être comme erlang?

+3

SO n'est pas l'endroit pour une telle question. Vous pouvez trouver sur le net de nombreux débats et présentations sur ce sujet. Disons qu'Erlang propose un modèle pour la concurrence et l'implémente nativement. – Pascal

Répondre

2

Une propriété importante d'Erlang est qu'elle a été construite à partir du sol pour être une langue concurrente. Erlang prend en charge des centaines de milliers de processus légers dans une seule machine virtuelle. Parce que les processus d'Erlang sont complètement indépendants des processus du système d'exploitation, ils sont très légers, avec un faible coût par processus. Ainsi, lorsque vous utilisez Erlang pour la programmation orientée simultanée, vous obtenez beaucoup d'avantages hors de la boîte.

  • création/destruction de processus rapide
  • Capacité à supporter des millions de processus simultanés avec des caractéristiques largement inchangées.
  • Passage de message asynchrone rapide.
  • Copie de la sémantique de passage de message (partage simultané).
  • Surveillance du processus.
  • Réception de message sélective.

Cette simultanéité de style Erlang n'est pas impossible à faire en C, mais ce serait difficile à faire. Lire this blog pour plus d'informations sur la concurrence de style Erlang

+0

[Ceci est tout simplement faux si, pour aucune autre raison, la machine virtuelle Erlang qui implémente les processus légers est implémentée en C] (https://www.openhub.net/p/erlang/analyses/latest/languages_summary) –

+0

@JarrodRoberson: Presque tous les langages de haut niveau sont implémentés en C mais cela ne signifie pas que vous pouvez utiliser toutes les fonctionnalités de haut niveau de C. Il y a vingt ans de développement, d'expérience et d'ingéniosité derrière Erlang. Si vous l'essayiez en C, vous finirez avec l'implémentation sujette à erreur de la moitié d'Erlang. En bref, vous avez tort. –

+0

donc seulement les auteurs d'Erlang peuvent l'obtenir "juste", je respecte fortement votre opinion sur Erlang, mais je pense que c'est juste FUD. Accordé si vous ne savez pas ce que vous faites, vous échouerez, mais si vous comprenez le problème, il est tout à fait possible de le faire, tout comme les auteurs d'Erlang l'ont prouvé. C++ a commencé comme un pré-processeur de «haut niveau» pour C. Le googling simple montre qu'il y a beaucoup de travail pour implémenter des processus légers en C et dans d'autres langages, même en Java. * En bref, "si vous voulez l'essayer en C, vous finirez avec une erreur de mise en œuvre de la moitié de Erlang.", Est-ce que vous diffusez FUD. * –