← Back to context

Comment by vidarh

10 years ago

> In any complex software system, building powerful, composable and modular abstractions is critical for managing complexity.

Yes, but as Wirth showed already in the 70's, you don't even need an IR in order to do this, much less separate passes.

For a highly optimizing compiler like yours the complexity might have been unavoidable anyway, though (a lot of the simplicity of Wirth's compilers comes from a long held insistence that no optimization could be added to the compiler unless it sped up the compilation of the compiler itself - in other words, it needed to be simple enough and cheap enough to apply to the compiler source code to pay for itself... needless to say this implicitly means that most Wirth-compilers omit a lot of optimizations that are usually included elsewhere, though some of his students did implement some impressive "unofficial" optimizing variations of his compilers that were also blazing fast)