Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does BEAM stand for in iex for the Elixir programming language?

What do the letters B. E. A. and M. stand for? I recall seeing an explanation of the acronym "BEAM", but I have not managed to find it again.

It comes up in error codes:

➜  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, it looks like there's some sort of problem with a .beam file, probably due to my use of vi. (Note to notive Elixir programmers: Do not edit .beam files, it is painful.)

This question explains what the BEAM virtual machine is, but not what the letters stand for. And it seems difficult to find out much about the etymology quick or to the point on Erlang central. Supposedly BEAM is the secret sauce of Erlang and Elixir both.

like image 207
Nathan Basanese Avatar asked Jun 05 '15 15:06

Nathan Basanese


People also ask

What is BEAM Elixir?

June 2020) Elixir is a functional, concurrent, general-purpose programming language that runs on the BEAM virtual machine which is also used to implement the Erlang programming language.

What is Elixir coding used for?

Elixir, a dynamic, functional programming language, is designed for building scalable and maintainable applications with a simple, modern, and tidy syntax. Although it is easy to understand, Elixir's approach to concurrency and its data type nuances require some getting used to.

What is Elixir best for?

Elixir is great for web applications of any size, web APIs (such as JSON or GraphQL), event-driven systems, distributed systems, internet of things, embedded systems, and much more.

Who created Elixir programming language?

José Valim is co-founder of Plataformatec, creator of the Elixir programming language and member of the Ruby on Rails Core Team. He is an active member of the open source community, frequently speaking about his passion for software development, and author of Crafting Rails Applications.


1 Answers

It stands for "Bogdan/Björn's Erlang Abstract Machine" - it is just the name of the VM, much like JVM (Java Virtual Machine).

Almost everyone uses "the new BEAM", where BEAM stands for Bogdan/Björn's Erlang Abstract Machine. This is the virtual machine supported in the commercial release.

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

The name probably finds its routes from the Warren Abstract Machine - an abstract instruction set for Prolog which you can read about at: http://en.wikipedia.org/wiki/Warren_Abstract_Machine

The WAM influenced JAM (Joe Abstract Machine - named after Joe Armstrong) which was the precursor to BEAM.

You can read more in the "the development of Erlang" article on the Erlang website.

like image 187
Gazler Avatar answered Sep 28 '22 01:09

Gazler