Saturday, 5 November 2016

difference between compiler & interpreter ?

What is a Compiler?

First of all you need to understand that computers and humans speak different languages. While humans speak languages like English, French, Hindi, Spanish, Chinese, Japanese, Arabic etc.; computers speak only one language i.e. binary. Alphabet of computers contains only two letters, namely zero andone. Computers are machines and for them it is much easier to work using a simpler encoding of 0s and 1s.
We humans feel most comfortable if we could issue instructions by writing plain English  or Hindi programs for computers.
The problem is that we are not comfortable with binary and computers find our languages too difficult to understand. To get around this problem a middle path of an intermediate language is used to convey human commands to the computers. This intermediate language is called —the programming language.
Programming language is not plain English. It is essentially a predefined syntax of writing logical computer instructions which humans can also understand.
We also need something to convert programming language into binary language for the consumption by computer. This is where compiler comes in scene.
Compiler is a software that checks a computer program (called source code) and lists all the errors found. When humans remove all these errors, compiler converts the program into binary code (also known as machine code or object code). Computers can understand binary code and therefore they can execute instructions written by humans using programming language.
Source code and assembly code.
Source code and assembly code.
The following video will further help you in understanding the concept and working of a compiler:
Compiler vs. Interpreter
Now we already know what a compiler does. Task of interpreter is also more or less the same but interpreter works in a different fashion. The difference between the functioning of compiler and interpreter will be clear from the table of comparison given below:
#COMPILERINTERPRETER
1Compiler works on the complete program at once. It takes the entire program as input.Interpreter program works line-by-line. It takes one statement at a time as input.
2Compiler generates intermediate code, called the object code or machine code.Interpreter does not generate intermediate object code or machine code.
3Compiler executes conditional control statements (like if-else and switch-case) and logical constructsfaster than interpreter.Interpreter execute conditional control statements at a much slower speed.
4Compiled programs take morememory because the entire object code has to reside in memory.Interpreter does not generate intermediate object code. As a result,interpreted programs are more memory efficient.
5Compile once and run anytime. Compiled program does not need to be compiled every time.Interpreted programs are interpreted line-by-line every time they are run.
6Errors are reported after the entire program is checked for syntactical  and other errors.Error is reported as soon as the first error is encountered. Rest of the program will not be checked until the existing error is removed.
 7A compiled language is more difficult to debug.Debugging is easy because interpreter stops and reports errors as it encounters them.
 8Compiler does not allow a program to run until it is completely error-free.Interpreter runs the program from first line and stops execution only if it encounters an error.
 9Compiled languages are more efficient but difficult to debug.Interpreted languages are less efficient but easier to debug. This makes such languages an ideal choice for new students.
10Examples of programming languages that use compilers: C,  C++, COBOLExamples of programming languages that use interpreters: BASIC, Visual Basic, Python, Ruby, PHP, Perl, MATLAB, Lisp
Following image shows how different languages are either compiled or interpreted:
Difference between compiler and interpreter.
Difference between compiler and interpreter.
Difference between Compiler and Interpreter
So, what did we understood from the above table of comparison? We now know that the reason a compiled runs faster because it gets converted into machine code all at once. Computer can easily understand machine code and therefore can run the whole program quickly. But this also means that theentire compiled code has to reside in the memory —and thereby making the compiled programs more memory guzzling. With memory available in abundance, nowadays, this is no longer a concern. But in earlier days of programming, when memory was an expensive resource, program size up to every bit and byte used to matter.
In comparison, interpreter is a more human-friendly program. It works quite a bit like humans work. It begins program execution right at the first line and will go on showing you the result of the program until it will hit an erroneous line of code. As a result, for programmer it is much easier to locate error and to understand the nature of error. However, interpreter is slow. An interpreted programs gets interpreted every time it runs.

No comments:

Post a Comment