Distinguish, differentiate, compare and explain what is the main difference between Compiler and Interpreter in Computer Programming. Comparison and Differences.
A compiler is a translator from a high-level language to the assembly code of a particular CPU. A compiled program works on the particular CPU and Operating System that it was compiled for. Internally, the compiler has several stages:
1. A parser checks that the source code follows the syntax of the language. A tree is constructed representing the program code. At this stage, syntax errors are generated.
2. The type checker checks that the expressions in the program are correctly typed and how much space is a need for each variable. At this stage, the errors generated concern variables (and other names) that are not declared and code that incorrectly types.
3. The code generator then translates the program to assembly code. Compilers usually include an assembler so the output is usually in binary (call object code) rather than assembly code. The two main tasks are
i) deciding which register to use (as, unlike LMC, modern CPUs have many registers) and
ii) choose the CPU instructions.
An interpreter is simpler than a compiler. It includes the parser but instead of the code generator, the interpreter goes through the internal representation of the source code (such as an abstract syntax tree) and ‘executes’ the code directly.
Although in principle any language can be compiled or interpreted, languages that are usually compiled tend to be dynamically typed and scoped, while compiled languages are statically typed and lexically scoped.
Difference between Compiler and Interpreter
|1||Scans the entire program before translating it into machine code.||Translates and executes the program line by line.|
|2||Converts the entire program to machine code and executes a program only when all the syntax errors are removed.||Executes one line at a time, after checking and correcting its syntax errors and then converting it to machine code.|
|3||The compiler is slow in debugging or removal of mistakes from a program.||An interpreter is good for fast debugging.|
|4||Takes less time for program execution.||Comparatively, takes more time for program execution.|