Language Translator in Computer and its Types?


👤 Diwas Poudel    🕒 19 Nov 2022    📁 TECH

Computer Language Translator

Computers are electronic devices that can only understand machine-level binary code (0/1 or on/off), and it is extremely difficult to understand and write a program in machine language, so developers use human-readable high level and assembly instructions. To bridge that gap, a translator is used, which converts high-level instructions to machine-level instructions (0 and 1).

The translator is a programming language processor that converts a high-level or assembly language program to machine-understandable low-level machine language without sacrificing the code's functionality.

translator

Why Computer Language Translator?

The computer only understands machine code. It is unable to understand any low, assembly, or high-level language. There must be a program to convert the source code into object code so that your computer can understand it. This is the job of the language translator. The programmer creates source code and then converts it to machine-readable format (object code)

Purpose of Computer Language Translator

The main purpose of the translator is to make the machine understand the program written in a low/assembly/high-level language.

Also Read: Top Real-world application written in C++

Types of Computer Language Translators

There are 3 types of computer language translators: They are:

  1. Compiler
  2. Interpreter
  3. Assembler 

Compiler

The compiler is a language translator program that converts code written in a human-readable language, such as high-level language, to a low-level computer language, such as assembly language, machine code, or object code, and then produces an executable program.

how-compiler-works

In the process of creating an executable file, the compiler goes into various phases like Lexical Analysis, Syntax Analysis, Semantic Analysis, Intermediate Representation(IR) Generation,(Intermediate Representation)IR Optimization, Code Generation, and Optimization.

Shortly,
In the process of compiling, the first code is sent to a lexer which will scan the source code and split it into tokens and kept inside of computer memory, and send them to the parser where patterns are recognized and are converted into an AST (abstract syntax tree) which describes the data structure of the program representing then optimizer(if required) optimize away unused variable, unreachable code, roll back if possible, etc, then code generator converts to machine instruction code specific to the target platform and linker putting together all code into an executable program. Also, there is an error handler in all the phases which handles errors and reports. 

Some of the well-known compilers are:

Some common compiled languages are C++, C

Characteristics of Compiler

  • Source code is converted to machine code before runtime. So, code execution at runtime is faster.
  • Takes a lot of time to analyze and process the program. The compiling process is complicated.
  • But Program execution is Fast
  • Cannot create an executable program when there is a compile type error in the program.
Also Read: Computer / Laptop Ports in Detail

Advantage of Compiler

  • The whole program is compiled and it seems to be more secure than Interpreted Code. Code once compiled and when you view the compiled code then you will not be able to understand it.
  • Compiled Code is faster because compiled code is near to machine code.
  • The program can run directly from object code and doesn't need source code.
  • The compiler translates commands into machine language binaries, no other program or application is needed to be installed to execute the executable file of sources codes. The only thing needed is that each software has to be compiled for certain operating systems. If an application is compiled for a particular OS architecture, the user simply needs to OS that operates on the same OS architecture.

Disadvantage of Compiler

  • For the executable file to be created, the source code must be error-free.
  • For a large application, it may take a larger time to compile the code as compared to small programs.
  • When you compiled an application then it creates a new compiled file which takes additional memory and space.

Interpreter

The interpreter converts high-level language to machine-level language, while the compiler accomplishes the same but in a different method. The Interpreter's source code is transformed into machine code at run time. The compiler, however, converts the code to machine code, i.e. an executable file, before the program starts.

The interpreter program executes directly line by line by running the source code. So, it takes the source code, one line at a time, and translates it and runs it by the processor, then moves to the next line, translates it and runs it, and repeats until the program is finished.

Some of the popular interpreted languages are Php, Python, Javascript, Ruby

Characteristics of Interpreter

  • Spends less time converting to machine code.
  • No compilation stage is present in the interpreter while generating machine instructions.
  • Program execution is slower because it gets converted to machine code at runtime.
  • Easy for debugging and finding errors.

Advantage of Interpreter

Some of the main advantages of interpreters are as follows:

  • Because interpreted code is not machine-dependent, so interpreted code can operate on any system and be shared between platforms without incompatibility issues.
  • The interpreter does not compile the code like a compiler, allowing you to publish the work to a live environment more quickly.
  • An interpreter does not create additional new files like a compiler, which saves memory and space.

Disadvantage of Interpreter

Some of the main disadvantages of Interpreter are as follows:

  • Interpreter is slower
  • As interpreted codes can easily be read by humans so we can say data and code are insecure.
  • To run the code, a client or anybody else who has access to the shared source code must have an interpreter installed on their system.
Also Read: Different Parts of Motherboard

Assembler

Assembler converts code written in assembly language into machine-level code. Assembly language contains machine opcode mnemonics so that assemblers translate from mnemonics to direct instruction in 1:1 relation.

As we know the computer understands machine code only but programming is difficult for developers in machine language. So, low-level assembly language(ASM) is designed for a specific processor family that represents different symbolic code instructions.

Characteristics of Assembler

  • As there is a 1:1 relationship exists between mnemonics to direct instruction, translating is very fast.
  • It requires less amount of memory and execution time.
  • It does complex hardware-specific jobs in an easy way.
  • It is ideal for a time-critical job.

Different Between Compiler, Interpreter, and Assembler

Compiler Interpreter Assembler
It converts programs written in a high-level language into machine language before runtime It converts programs written in a high-level language into machine language at runtime. It converts the assembly language program into machine-level language.
Used By: C, C++ Used By: Python, PHP, Ruby, PostScript, LISP, VB Used By: GNU, GAS
Compiled code runs faster but compiling time may take a longer time. For every time, the interpreter translates every time code is run so it is slower.
Runs fast as the translating of two low-level languages depends on the processor instructions set only.

 

Also read: Can I delete photos after uploaded to Google Photos?

Compiler vs Interpreter

Compiler Interpreter
Translate High-level language program into machine code before runtime Translate High-level language program into machine code at runtime
The compiler needs lot of time for the whole source code to be analyzed
It takes less time for the source code to analyze
The overall program execution time is relatively faster.
Overall program execution time is relatively slower.
The compiler only generates an error message only after scanning the whole program. And all the errors are shown at the same time.
Interpreter only shows one error at a time and if solved and again after interpreting the code then shows the next error if exists. 
Debugging is relatively more difficult since there can be an error anywhere in the code.
It is easier to debug since it continues to translate the program until the error is fixed. Show only one error at a time, and if solved then shows the next error if exists.
The compiler generates intermediate code.
The interpreter does not generate intermediate code.
The compiler compiles the code before execution.
Compilation and execution take place simultaneously.
Memory requirements are more because time is required for the creation of intermediate object code. This intermediate object code resides in memory.
Requires less memory as it does not create intermediate object code.
Difficult error detection and removal
Easy for error detection and removal
The programming language that uses Compiler: C, C++, Java, C#, Scala
The programming language that uses Interpreters: Python, Perl, Ruby, PHP
Compilers software are larger in size.
The interpreter software is generally smaller in size.
Focus on compile once, run anytime
Focus on compiling every time.
The program doesn't run until all the error is fixed.
A program runs the code and stops only when an error is found.
Also Read: 19 Reason Why Windows OS is popular?

Frequently Asked Questions

1 Is Assembly Language Portal? 
Ans: No, the assembly languages are not portable since they are tied to specific computer architecture.A program written and developed in one assembly language should be rewritten to run on another machine.
 
2 Which type of language is Assembly Language?
Ans: Assembly Language (ASM) is a low-level programming language.
 
3 How is an interpreter slower than a compiler?
Ans: Interpreting code is slower than compiled code.
In compiler Case: When the program is successfully compiled, an object code file is created. This object code file is now executed. So, Unless we modify the source code, there is no need for recompilation. And directly execute from compiled code which seems to be faster because it is near to machine-level language.
In interpreter Case: Every time we want to run a program, it is interpreted again and again. So, at runtime only code is translated to machine-level language.
 
4 What is the difference between compilation and execution?
Ans: Compilation happens before execution in the compiling process. Source code gets compiled and produced execution file (like. dll and .exe ) file and this file gets executed at runtime. Compiler interacts with OS memory manager to perform compilation. Execution is done by the processor at the time of program execution.
 
5 What is the first stage of the compilation process?
Ans: Lexical Analysis is the first stage of the compilation process.
 
6 How many parts of the compiler are there?

Ans: Compiler has 3 important parts.

  • FrontEnd
  • Middle End
  • BackEnd
7 Is the linker part of the compiler?

Ans: Some have distinct linkers and some do not. The linker is one of the important parts of the compiler which combines object code files and static file and produce an executable file.

8 What is Common Intermediate Language(CIL)?

Ans: All the application that is targeting the .net framework is compiled first to an Intermediate language called CIL, which is a machine-independent language, and only at the run time do those intermediate languages gets converted to native machine code.

The intermediate language in the Java environment is bytecode.

9) Is Java Compiled Language?

Ans: There are two steps in the Java compilation process. At first source code is converted to byte code by the compiler and at runtime that byte code is verified by byte verifier and it decides it may compile and/or interpret the bytecode using the Java Interpreter/JIT Compiler. (source: StackOverflow)

10) Is a language translator a system software?

Ans: System Software is those types of software designed to provide a platform for other software. This software provides an environment for the operating and programming where the users interact for creating application software. This includes Operating systems, Translator(Language processors), Simulators, Emulators, Utility software, etc. So, translators like compilers, translators, and interpreters are all system software.

system software