blog posts

compiler and interpreter

What is the difference between compiler and interpreter?

Programming code is translated for computer systems through an interpreter or compiler. In fact, with the help of an interpreter or compiler, the programmer turns a high-level programming language into a simple and understandable language. Today in Ded9 we are going to examine the differences between the interpreter system and the compiler, so stay tuned.

What is a compiler?

A compiler is a computer program that converts code written in high-level programming languages ​​into machine code. In other words, this computer program translates code that is readable to humans into binary languages ​​zero and one; In such a way that the computer system processor also understands them and finally the computer system processes the machine code to perform a specific operation.

The compiler must follow the syntax of the language in which it was written; However, the compiler is just a program and is not able to fix the errors in that program, so if something goes wrong, you must change the syntax of your software, otherwise the program will not compile properly.

What is an Interpreter?

An interpreter is a computer program that converts each line of a statement from a high-level program into machine code, which includes source code, pre-compiled code, and scripts. The performance of the compiler and the interpreter are similar; In a way, both of them actually convert high-level programming languages ​​into machine code. The compiler converts the code to machine code before running the program (making the .exe file), but the interpreter will convert the code to machine code at the same time as running the program.

The main differences between the compiler and the interpreter

1- Programming phases

compiler

  • The compiler analyzes the accuracy of all the statements of the programming language and will give an error if it is incorrect.
  • If there is no problem , the source compiler will convert the code to machine code.
  • The compiler will link the code of various files to an executable program known as .exe files.

Interpreter

  • No linking of files or generation of machine codes is done.
  • Source Statements are line by line during program execution.

2- Advantages

compiler

  • The program code has already been translated into machine code, so the execution time will be short.

Interpreter

  • Interpreters are easier to use, especially for novice programmers.

3- Disadvantages

compiler

  • You can not change the compiler without referring to the source code.

Interpreter

Interpreting programs can be on computer systems that have corresponding interpreters.

4- Car codes

compiler

  • The machine language, called Machine Code, will be saved to disk.

Interpreter

  • Machine codes will not be saved in any way.

5- Running Time

compiler

  • Compiled code performs faster.

Interpreter

Interpretation codes are slower.

6- Model

compiler

  • The compiler is based on the Translation linking-Loding model.

Interpreter

  • The interpreter works according to the interpretive method.

7- Program Generator

compiler

  • The compiler produces the computer program as an .exe file; This program can be independent without the need for the main program.

Interpreter

  • The program interpreter does not output, but will always evaluate the main program at runtime.

8- Execution

compiler

  • Execution of the program is separate from the compilation process and after compiling all the components of a program is done.

Interpreter

  • Execution of the program is part of the interpretation process, which is line by line.

9- Storage space

compiler

  • The program runs separately from the compiler so there is no need to store the compiler in memory.

Interpreter

  • The interpreter is stored in memory during the process of interpreting the programming code.

10- Field of use

compiler

  • Compiler languages ​​are limited to a specific machine and are not transferable. Popular C and C ++ programming languages ​​use the compile model.

Interpreter

  • Interpreter languages ​​are used in web environments where high loading speeds are important. In fact, in compiler languages, the analysis is comprehensive so the compilation time (even small code) is longer.

11- Code optimization

compiler

  • The compiler takes all the code by default, so they can perform optimization operations to speed up the code.

Interpreter

  • Interpreters consider programming code to be linear, so they perform poorly in optimizing it.

12- Dynamic Typing

compiler

  • Because the compiler cannot predict upcoming events during turnaround times, dynamic typing will be difficult.

Interpreter

  • Interpreter languages ​​support dynamic typing.

13- Application

compiler

  • Compiler languages ​​are the best choice for the production environment.

Interpreter

  • Interpreter languages ​​are a good option for applications and software development environments.

14- Execution of error

compiler

  • Compilers detect all errors and warnings at compile time, so it will not be possible to run the program without fixing errors.

Interpreter

  • The interpreter reads a line of code and identifies existing errors; So you have to correct the errors to interpret the next line.

15- Input

compiler

  • The whole program should be a compiler input.

Interpreter

  • A line of code from the program can also be a interpreter input.

16- Output

compiler

  • Compilers produce mid-level machine code.

Interpreter

  • The interpreter produces no intermediate level machine code.

17- Error

compiler

  • The compiler displays all errors at compilation time.

Interpreter

  • All errors are line by line.

18- Programming languages

compiler

  • Programming languages ​​such as C, C ++ and C #, Scala and Java use the compiler.

Interpreter

  • Programming languages ​​such as PHP, Perl, and Ruby use an interpreter.

The role of the compiler

  • The compiler builds executable code from source code.
  • The compiler converts software written in higher-level language into instructions that the computer can understand. In other words, the compiler converts the text written by the programmer into a format that can be understood by the computer CPU.
  • The compilation process is relatively complex, so analyzing and processing the program will be time consuming.
  • The execution result of the compilation operation will be a kind of binary code (01) for the machine.

The role of the interpreter

  • The interpreter translates the code line by line during Run-Time.
  • Programs written in high-level language will be fully go into machine-level language.
  • The interpreter spends relatively less time analyzing and processing the program.
  • The programmer can evaluate or modify the running program using the interpreter.
  • Execution of the program is slower than the compiler.

What are high-level languages?

High-level languages ​​such as C, C ++, Java, etc. are very similar to English and make the programming process easier. Of course, high-level languages ​​must go into machine language by a compiler or interpreter before execution; High-level languages ​​are also known as source code.

What is a car code?

Machine code is similar to hardware, and each computer system has its own machine language. Machine language programs are made up of binary patterns (such as 110110), each of which represents an operation that a computer system must perform. In fact, machine language programs are executable, so it is possible to run them directly.

What is Object Code?

In the process of compiling source code, the machine code generated for different processors such as Intel, AMD, and ARM will be different. In order for the code to be transferable, the source code must first be an Object Code.

They are also (like machine codes) mediocre codes that will not be understood by computer processors. Of course, these codes will go into machine codes of the platform when the program is running.