Programming Language Translators
Contents
Assembler
An assembler translates assembly language into machine code. One line of assembler will create a single line of machine code, because the assembler mnemonic is converted into the binary instruction.
Compiler
A compiler translates code written in a high level programming language into object code, the machine code of a particular machine. It 'compiles' the entire source code before translating it. The compiler has several advantages over interpreters, such as: the object code is saved, meaning there is no need to re-compile; compiled code executes faster than interpreted code; the object code can easily be distributed without the compiler; and compiled code is more secure, as it is harder to reverse engineer than interpreted code.
Interpreter
An interpreter also translates code written in a programming language into object code, but unlike a compiler it does this one line of code at a time. This makes it slower to run than a compiler, but interpreters are useful for partially testing or debugging programs.
Compiler vs Interpreter
Compiler over Interpreter
- Object code is saved, so you only need to compile once so no need to re-compile. Obviously if the code is changed it will need to be re-compiled.
- Executes faster than interpreted code, because interpreted code is interpreted and execute one at a time. Compiled code is simply executed.
- Object code can be distributed (without the compiler).
- Secure because the source code is hidden, the compiler generated object code is not easily reverse engineered.
- Compilers can be more efficient, for example an interpreter must interpret and then execute each time it passes through a loop. Compiled code can just execute each time through the loop.
Interpreter over Compiler
- Easier to partially test or debug programs, it will run until an error is reached. This will therefore allow you to test code that you haven't completely finished.