Programmer's Abstract Machine Models: Understanding the Meta of Software

This article explores the "Abstract Machine Models" (AMMs) programmers utilize when writing software. The author recounts personal experiences designing programming tools, highlighting the intimate connection between hardware architecture and programming languages. They argue that a programmer's mental AMM isn't simply a language or hardware model but an abstraction incorporating extra-functional behaviors like time, memory, and I/O. Analyzing languages like Haskell, the author distinguishes between descriptive and specification models and details AMMs' application across various programming languages and hardware platforms. The article further explores AMMs' roles in evaluating programming skills and building software ecosystems, analyzing how different types of language designers influence AMMs. Finally, the author summarizes AMMs' importance in software engineering and points towards future research directions.
Read more