When you write: let x = 5 + 3 print(x) it feels like the computer should simply read it, understand it, and execute it. But computers don't naturally understand source code the way we do. A programming language implementation has to take that source code and progressively transform it into something it can work with. That process is one of the most interesting parts of how programming languages work. And you don't need to know advanced compiler theory to understand ...