We generally write a computer program using a high-level language. A high-level language is one which is understandable by us humans. It contains words and phrases from the English (or other) language. But a computer does not understand high-level language. It only understands program written in 0's and 1's in binary, called the machine code. A program written in high-level language is called a source code. We need to convert the source code into machine code and this is accomplished my compilers and interpreters. Hence, a compiler or an interpreter is a program that converts program written in high-level language into machine code understood by the computer.
The difference between an interpreter and a compiler is given below:
|Translates program one statement at a time.||Scans the entire program and translates it as a whole into machine code.|
|It takes less amount of time to analyze the source code but the overall execution time is slower.||It takes a large amount of time to analyze the source code but the overall execution time is comparatively faster.|
|No intermediate object code is generated, hence interpreters are memory efficient.||Compilers generate intermediate object code which further requires linking, and hence require more memory.|
|Continues translating the program until the first error is met, in which case it stops. Hence debugging is easy.||It generates the error message only after scanning the whole program. Hence debugging is comparatively hard.|
|Programming language like Python, Ruby use interpreters.||Programming language like C, C++, and Java use compilers.|
Original text found at Programmiz, adapted by Paul Oser