Dans quoi est écrit Erlang?

111

Quelle est l'implémentation d'Ericsson d'Erlang et d'Erlang / OTP écrite et compilée? L'assemblage est-il, C ou Erlang lui-même?

Mise à jour 1: Merci à DrJokepu. Si je comprends bien, le compilateur source-VM Erlang est écrit en Erlang lui-même. Mais la VM est écrite en C.

Mise à jour 2: Hynek-Pichi-Vychodil a souligné beaucoup de détails.

  • Pilotes d'interaction VM et HW: en C.
  • Compilateur (vers VM) et bibliothèques: dans Erlang.
  • Extensions: Possible dans n'importe quelle langue en écrivant un port ou un nœud Erlang dans cette langue.
CDR
la source
17
Erlang est open source. Allez vérifier le code et jetez un œil!
rfunduk

Réponses:

140

Erlang lui-même est écrit en Erlang. Cela semble étrange? Oui, car ce n'est que partiellement vrai. OK regardez-le plus en détail:

  1. Le préprocesseur Erlang est écrit en Erlang.
  2. L'analyseur Erlang est écrit en Erlang.
  3. Le compilateur Erlang vers BEAM (byte-code VM) est écrit en Erlang.
  4. Le compilateur Erlang vers HiPE (extension VM native) est écrit en Erlang.
  5. Erlang VM BEAM et HiPE est écrit principalement en C.
  6. Les pilotes liés sont écrits principalement en C. (Ils sont connectés à la VM et servent à la communication avec le monde extérieur.)
  7. OTP est écrit en Erlang.
  8. Les autres ports ou nœuds peuvent être écrits dans n'importe quelle langue.
Hynek -Pichi- Vychodil
la source
91

À partir de la FAQ d'Erlang :

10.6 Comment le premier compilateur Erlang a-t-il été écrit?

(ou: comment Erlang a-t-il été amorcé? ) Dans les mots de Joe:

J'ai d'abord conçu une machine abstraite pour exécuter Erlang. Cela s'appelait la machine JAM; JAM = machine abstraite de Joe.

Ensuite, j'ai écrit un compilateur d'Erlang vers JAM et un émulateur pour voir si la machine fonctionnait. Les deux ont été écrits en prologue.

Au même moment, Mike Williams a écrit un émulateur C pour le JAM.

Ensuite, j'ai réécrit le compilateur erlang-to-jam dans Erlang et utilisé le compilateur prolog pour le compiler. Le code objet résultant a été exécuté dans l'émulateur C. Ensuite, nous avons jeté le prologue.

Tamas Czinege
la source
1
Merci! Quelle est la source de cette citation?
Max Heiber
15
  • 65,9% du code erlang est écrit en Erlang.
  • 13,4% de erlang est écrit en XML.
  • 13,6% de erlang est écrit en C.
  • 1,4% d'erlang est écrit en C ++
  • ...

Vous pouvez voir une statistique en direct et mettre à jour sur le site ohloh , ce rapport est généré à partir du référentiel principal erlang git.

Saeed Zarinfam
la source
Je suis juste curieux de savoir quelles parties sont écrites en C ++.
csyangchen
@csyangchen aucun, il s'agit de la détection du type de fichier du compteur de ligne faux-positif.
Hauleth
Certaines parties des liaisons WX sont écrites en C ++.
Roger Lipscombe
-1

Je peux dire qu'Erlang a été initialement écrit en C / C ++ car je ne peux pas dire que Java est écrit en java .... mais c'est un framework et certaines bibliothèques. A propos d'Erlang, car c'est le langage de programmation préféré et adapté au système Telecom ... afin de maintenir la rapidité (par exemple: dans les chat-bots) je sais que son compilateur ou PreProcessor est écrit en Erlang. Mais d'autres caractéristiques de la langue sont écrites dans des langues de bas niveau.

Gadrawin
la source