From the post:
Erlang is a complex system, and I can’t do its inner workings justice in a short article, but I wanted to give some insight into what goes on when a module is compiled and loaded. As with most compilers, the first step is to convert the textual source to an abstract syntax tree, but that’s unremarkable. What is interesting is that the code goes through three major representations, and you can look at each of them.
Covers the following transformations:
- Syntax trees to Core Erlang
- Core Erlang to code for the register-based BEAM virtual machine (final output of compiler)
- BEAM bytecode into threaded code (loader output)
Just in case you wanted to know more about Erlang than you found in the crash course.
A deeper understanding of any language is useful. Understanding “why” a construction works is the first step to writing a better one.