1. BEAM me up, Scotty
Prepare ship...prepare ship...for LUDICROUS SPEED!!!!
Born to be a developer with an interest in distributed system.
I have developed with many languages like C++, C#, js and ruby. I had fallen in love
with functional programming, especially with Elixir and Erlang.
● Twitter: https://twitter.com/gpad619
● Github: https://github.com/gpad/
● Medium: https://medium.com/@gpad
CTO & founder of coders51
BEAM is the virtual machine at the core of the Erlang Open Telecom Platform (OTP).
BEAM is part of the Erlang Run-Time System (ERTS), which compiles Erlang and
Elixir source code into bytecode, which is then executed on the BEAM. BEAM
bytecode ﬁles have the .beam ﬁle extension.
Originally BEAM was short for Bogdan's Erlang Abstract Machine, named after
Bogumil "Bogdan" Hausman, who wrote the original version, but the name may also be
referred to as Björn's Erlang Abstract Machine, after Björn Gustavsson, who wrote and
maintains the current version. Both developers worked on the system while at Ericsson.
The predecessor of the BEAM was JAM (Joe's Abstract Machine), which was the ﬁrst
virtual machine for the Erlang language and was written by Joe Armstrong.
● 1982 -1985 - First experiment with 20 diﬀerent languages.
● 1985 - 1986 - Experiments with Lisp,Prolog, Parlog etc. Conclusion: The language
must contain primitives for concurrency and error recovery.
● 1987 - First experiment with Erlang.
● 1990 - Erlang is presented at ISS'90, which results in several new users.
● 1992 - Erlang is ported to VxWorks, PC, Macintosh etc. Three applications using
Erlang are presented at ISS'92.
● 1993 - Distribution is added to Erlang, which makes it possible to run a
homogeneous Erlang system on a heterogeneous hardware.
18. Why BEAM
Erlang is a programming language used to build massively scalable soft real-time
systems with requirements on high availability. Some of its uses are in telecoms,
banking, e-commerce, computer telephony and instant messaging. Erlang's
runtime system has built-in support for concurrency, distribution and fault
20. Why BEAM
Erlang processes are implemented entirely by the Erlang VM and have no
connection to either OS processes or OS threads. So even if you are running an
Erlang system of over one million processes it is still only one OS processes and
one thread per core. So in this sense the Erlang VM is a "process virtual machine"
while the Erlang system itself very much behaves like an OS and Erlang process
have very similar properties to OS processes, for example isolation. There is
actually an Erlang VM, based on the BEAM, which runs on the bare metal and is
in fact an OS in its own right, see Erlang on Xen.
GenServer reacts to message it receives. Executes some
actions and return to itself the new state.
Supervisor monitors and is linked to its children and
when detect their death it restart (using diﬀerent
OTP is set of Erlang libraries and design principles providing
middle-ware to develop these systems. It includes its own
distributed database, applications to interface towards other
languages, debugging and release handling tools.
26. Why OTP
● A lot of other patterns ...
● Always think in async and distributed way (timeout)
● The community think about to increase (CRDT, GenStage, Broadway, etc…)
37. Batteries Included
Erlang and all OTP (gen_server, logger, mnesia, distribution, etc …)
Tool to build and deploy your application (mix, eunit, etc …)
Some libraries supported by “core team” (ecto, phoenix, telemetry, etc …)