Difference between Compiler and Interpreter

By | November 20, 2021
Compilar vs Interpreter

These days, developers only use high-level programming languages to create amazing software, web applications, and operating systems. These high-level languages are easy to learn and even a non-developer can easily read the code and understand what that code is supposed to do. But the computer on which we run our program or code does not understand high-level programming languages. Computers can only read binary or machine data presented in the form of 0’s and 1’s, so to interpret the code written in a high-level language, computers require translators. Compiler and Interpreter are the two most popular computer translator programs, which convert the high-level language code to machine code and execute it.

And in this article, you will learn the difference between Compiler and interpreter and see how they are different.

Vamware

Difference between Compiler and Interpreter

C++, Java, Python, and JavaScript are high-level programming languages. These languages are more human-friendly & readable, and use English as a core language for syntax. But Computers do not care whether the programming is close to English or any other language it only understands 0 and 1, that’s why we need a translator. Translators are the programs that convert the High-level language program into low or machine-level code so the computer can run the program.

Here in this article, we will compare two famous translators Interpreter and Compiler.

Let’s start with a brief introduction of the Compiler and Interpreter.

What is a Compiler?

Many programming languages support compiler as a translator tool, to convert its high-level language code to machine code.

A compiler is a computer program that can convert any language to another language, and generally, it is used to convert the high-level language code to low-level machine code, so the targeted computer or os can program.

The Compiler reads the source code and compiles it at once while compiling if the Compiler found any error it would not goanna execute a single line.

There are many types of compilers the two popular ones are

  1. Cross Compiler
  2. Source to Source compiler

A cross compiler is used to convert the code of one platform/CPU/Operating system, to another. For example, a compiler that runs on a PC and generates a source code for android or any other platform is a cross compiler.

The Source to Source compiler is used to convert the code from one language to another for the same platform. It is also known as transcompiler or transpiler. This type of compiler is generally used by Programming languages(C, C++, and Java) to convert and execute high-level language code.

Working of Compiler

The complete working of the compiler is divided into several steps which are also known as Compilation Phases.

Phase1: Lexical Analysis

Phase2: Syntax Analysis

Phase3: Semantic Analysis

Phase4: Intermediate Code Generation

Phase5: Optimization

Phase6: Target Code Generation

In Lexical Analysis Phase the compiler scans the code from left to right and top to bottom and generates & groups the tokens.

In Syntax Analysis Phase, the compiler generates an Abstract Syntax Tree (AST) using tokens generated in the first phase. And it also checks and verifies the structure and grammatical syntax of the source code. In this phase, if the compiler finds any error in the source code, it raises a compilation error.

After the Syntax Analysis, the compiler performs the Semantic Analysis. In this Phase, the compiler uses the Abstract Syntax Tree generated in Syntax Analysis Phase and checks the semantic errors of the program.

In the 4th Phase of Compilation, compilers perform the Intermediate Code Generation. Here the compiler generates an intermediate code that is closer to the Machine code and platform-independent. This intermediate code is converted to the targeted machine code in the 5th and 6th phases of compilation.

In Code Optimization Phase, the compiler optimizes the Intermediate Code in such a way that it only consumes less resource with better efficiency.

The Last Phase of compilation is Target Code Generator, where the compiler converts the intermediate optimized code to targeted machine language so the computer CPU can execute the program.

Advantages of Compiler

  • The compiler translates the complete source code at once, which makes the code execution fast.
  • The compiler converts the source code program to the targeted computer-executable file, which is always ready to run.
  • The compiler also works on code optimization that makes the complete program faster and memory efficient.

Disadvantages of Compiler

  • Even for a single change in the program, the complete program needs to recompile.
  • The compiler generally compiles the source code to the targeted platform, which can not be run on another.

What is an Interpreter?

An interpreter is also a computer translator program that converts the high-level program code to machine code and executes it line by line simultaneously. The approach of the Interpreter code execution process is very similar to a human reading a sentence from a book.

The interpreter reads the program’s source code line by line and executes each line immediately. If there is an error in between the program, the source code above that error line statement will still execute.

 Working of Interpreter

The interpreter read the source code line by line from top to bottom, convert the code line to intermediate code representation and immediately execute it.

The interpreter also compiles the program, store it as a machine-independent code and execute it.

Advantages of Interpreter

  • It’s very easy to find errors in using interpreters.
  • The interpreter executes the source code line as soon as the code is parsed.

Disadvantages of Interpreter

  • As the Interpreter executes each line after translation this makes the complete execution of the program slower, because the processor has to wait for the translation after each execution.
  • The interpreter does not create an executable file for the targeted machine.
  • The interpreter also does not optimize the code.

Compiler vs Interpreter: Head to Head Comparison

Compiler Interpreter

Object Code

It converts the Source code into an Object code file and saves it It does not save the Object code file

Performance

The Compiler runs programs faster The interpreter works slow as compared to Compiler

Model

It follows the translation linking-loading Model It follows Interpretation Method.

exe program

It can generate exe program. It does not generate exe program

Program Execution

The program execution in Compiler divide into many phases first the program gets compiled completely and then execute. Execution is an integral part of Interpreter. An interpreter read and execute the code lines simultaneously

Errors

The Compiler shows all the errors at once Interpret shown only one error at a time

Dynamic programming

The Compiler does not support Dynamic programming Interpreter Supports dynamic programming

Input

The compiler reads and translates the complete source code at once. The interpreter reads, translates, and executes source code line by line.

Output

It generates intermediate code It does not generate code.

Programming language supports

Programming languages like C, C++, C# Java Uses Compiler Perl, Python, PHP uses an interpreter

 

Roles of Compiler

  • Compiler read, and translate the source code to the targeted machine-executable code.
  • It can be used to convert high-level code to low-level code or one platform code to another platform code.
  • It divides the complete working into multiple phases which take time but it generates a fast executable program.
  • It saves memory and optimizes code efficiency.

Roles of Interpreter

  • It read, translate and execute the program statement line by line.
  • With an interpreter, we can make changes in the program during execution.
  • The individual line execution is fast but the complete execution of the program is relatively slow.

Conclusion

Let’s sum up our article on the difference between compiler and interpreter. Both are the computer’s translator, the compiler translates the program source code to the targeted machine code so the machine could execute the program. On the other hand, the interpreter parse and execute the code itself. With the compiler, we can generate an executable file that can run on different computers with a similar OS, but the interpreter does not create an executable file.

 

People are also reading:

Leave a Reply

Your email address will not be published. Required fields are marked *