Compiler
A compiler is a computer program that transforms a source code written in a programming language into another computer language. In order for it to be exploited by the machine, the compiler translates the source code, written in a language of high level of abstraction, easily understood by the human, to a language of lower level, a language of assembly or machine language. In the case of semi-compiled language, the source code is translated into an intermediate language, in binary form, before being itself interpreted or compiled. Conversely, a program that translates a low-level language into a higher-level language is a decompiler. A compiler performs the following operations: lexical analysis, pre-processing, syntactic analysis, semantic analysis, code generation and code optimization. When the compiled program can be run on a computer whose processor or operating system is different from that of the compiler, it is called cross-compilation. The compilation is often followed by a link editing step, to generate an executable file.