engineering a compiler
compiler translates a program from one language to another. it should strive to: - preserve the meaning of the input program. - discernably improve the input program
ahead of time compiler - translate before running
just in time compiler - translate while running
!q same as interpreter?