2015-06-05 5 views
7

Wofür stehen die Buchstaben B. E. A. und M.? Ich erinnere mich an eine Erklärung des Akronyms "BEAM", aber ich habe es nicht wieder gefunden.Wofür steht BEAM in iex für die Programmiersprache Elixir?

Es kommt in Fehlercodes auf:

➜ gentoo iex 
Erlang/OTP 17 [erts-6.4.1] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false] 

Interactive Elixir (1.0.4) - press Ctrl+C to exit (type h() ENTER for help) 
iex(1)> import Math 

08:05:02.839 [error] Loading of /var/opt/proj/elx/ubuntu/Elixir.Math.beam failed: :badfile 

** (CompileError) iex:1: module Math is not loaded and could not be found 

08:05:02.846 [error] beam/beam_load.c(1104): Error loading module 'Elixir.Math': 
    non-ascii garbage '78705400' instead of chunk type id 


    (elixir) src/elixir_exp.erl:123: :elixir_exp.expand/2 
iex(1)> 

So sieht es aus wie es mit einer .beam Datei eine Art von Problem ist, wahrscheinlich aufgrund meiner Verwendung von vi. (Anmerkung Elixir Programmierer notive: Bearbeiten Sie .beam Dateien, es schmerzhaft ist.)

This question erklärt, was die BEAM virtuelle Maschine ist, aber nicht das, was die Buchstaben stehen. Und es scheint schwierig, viel über die Etymologie schnell oder auf den Punkt Erlang central herauszufinden. Supposedly BEAM ist die geheime Sauce von Erlang und Elixir.

+0

//, Das war überraschend schwierig, sogar auf Google zu suchen, und es ist ziemlich spezifisch. Ich bin mir nicht sicher, warum die Downvotes. –

Antwort

18

Es steht für "Bogdan/Björns Erlang Abstract Machine" - es ist nur der Name der VM, ähnlich wie JVM (Java Virtual Machine).

Fast jeder benutzt "den neuen BEAM", wo BEAM für Bogdan/Björns Erlang Abstract Machine steht. Dies ist die virtuelle Maschine, die in der kommerziellen Version unterstützt wird.

http://www.erlang.org/faq/implementations.html

Der Name findet wahrscheinlich seine Routen aus der Warren Abstract Machine - eine abstrakte Anweisung für Prolog festgelegt, die Sie bei etwa lesen: http://en.wikipedia.org/wiki/Warren_Abstract_Machine

Die WAM beeinflusst JAM (Joe Abstract Machine - benannt nach Joe Armstrong), der Vorläufer von BEAM war.

Sie können mehr in der "die Entwicklung von Erlang" Artikel auf der Erlang website lesen.

+0

//, Warum nennt er es eine "abstrakte" Maschine? Ich meine, wer würde jemals eine virtuelle Maschine machen, die nicht "abstrakt" ist? –

+1

@ 37coins Bitte lesen Sie meine Änderungen. – Gazler

+0

//, CooI. Zum Zeitpunkt der Veröffentlichung der Frage, google.com/?q=erlang+beam+acronym nicht wirklich viel auf dem Weg der spezifischen Etymologie, und ich dachte, es könnte etwas für eine schnelle Suche auf Stackoverflow für die neugierig. –