On Wed, May 8, 2024 at 2:29 PM Douglas McIlroy <
douglas.mcilroy(a)dartmouth.edu> wrote:
Dennis was one-up on Digitek in having a self-maintaining compiler. Thus,
when he implemented an optimization, the source would grow, but the
compiler binary might even shrink thanks to self-application.
Another somewhat non-intuitive aspect of optimizing compilers is that
simply adding optimizations can cause an increase in compilation speed by
reducing the amount of IL in the program being compiled. Less IL due to
optimization means less time spent in later phases of the compilation
process.
Regarding native compilers for small machines, IBM had compilers for
Fortran, COBOL, and PL/I that ran in 32K on System/360 and produced
tolerably good code (yes, one could do better with handwritten assembler).
And they generated real code, no threaded code cop-out. And we're talking
full PL/I here, not the subset that ANSI later standardized. The compilers
were table-driven as much as possible, heavily overlaid, and used three
scratch files on disk (split-cylinder allocated to minimize seek time).
-Paul W.