A
programming language implementation is a system for executing programs written in a
programming language.
There are two general approaches to programming language implementation:
- Interpretation: An interpreter takes as input a program in some language, and performs the actions written in that language on some machine.
- Compilation: A compiler takes as input a program in some language, and translates that program into some other language, which may serve as input to another interpreter or another compiler.
Notice that a compiler does not directly execute the program. Ultimately, in order to execute a program via compilation, it must be translated into a form that can serve as input to an interpreter.
When a piece of computer hardware can interpret a programming language directly, that language is called
machine code. A so-called
native code compiler is one that compiles a program into machine code. Actual compilation is often separated into multiple passes, like
code generation (often in for of assembler language),
assembling (generating native code),
linking, loading and execution.
If a compiler of a given
high level language produces another high level language it is called
translator (source to source translation), which is often useful to add extensions to existing languages or to exploit good and
portable implementation of other language (for example C), simplifying development.
Many combinations of interpretation and compilation are possible, and many modern...
Read More