The ultimate product of software development is this: CPU executable binary code. Decades ago we used to “write” this more or less directly into memory. But that was very tedious and error prone. Code was hard to reason about, hard to change. Abstractions in code So we looked for ways to make coding easier. Enter a higher level of abstraction: Assembler. By representing machine code instructions as text and throwing in macros productivity increased. It was easier to read programs, easier to think ......