Applications of Compiler Design
Applications of Compiler Design
1. Implementation of high-level
programming
A high-level programming language defines a programming abstraction: the
programmer specifies an algorithm in the language, and the compiler must translate it
to the target language. Higher-level programming languages are sometimes easier to
develop in, but they are inefficient, therefore the target applications run slower. Low-
level language programmers have more control over their computations and, in
principle, can design more efficient code. Lower-level programs, on the other hand, are
more difficult to build and much more difficult to maintain. They are less portable,
more prone to errors, and more complex to manage. Optimized compilers employ ways
to improve the performance of generated code, compensating for the inefficiency of
high-level abstractions.
2. Optimization of computer architectures
Aside from the rapid evolution of computer architectures, there is a never-ending
demand for new compiler technology. Almost all high-performance computers leverage
parallelism and memory hierarchies as essential methods. Parallelism may be found at
two levels: at the instruction level, where many operations are performed at the same
time, and at the processor level, where distinct threads of the same program are
executed on different processors. Memory hierarchies address the fundamental
problem of being able to produce either extremely fast storage or extremely huge
storage, but not both.