# What are Translators?
Translators are software programs that convert code written in one programming language into another form. There are several types of translators, each serving a different purpose in the software development process:
There are basically three types of translators
- Compiler
- Interpreter
- Assembler
Extra translators
- Preprocessor
- Linker
- Transpiler
#1 Compiler
A compiler is a translator used to convert high-level programming language to low-level programming language. It converts the whole program in one session and reports errors detected after the conversion.
- A compiler translates the entire source code of a program written in a high-level programming language (like C++, C, etc.) into machine code (binary code) that can be directly executed by the computer's processor.
- The process involves multiple stages such as lexical analysis, parsing, semantic analysis, optimization, and code generation.
- Once compiled, the resulting executable file can be run independently of the compiler.
- The compiler takes time to do its work as it translates high-level code to lower-level code all at once and then saves it to memory.
- Generates an executable file that can be run independently of the original source code.
- Example:
GCC (GNU Compiler Collection)
for languages like C, C++, etc.
#2 Interpreter:
The compiler takes time to do its work as it translates high-level code to lower-level code all at once and then saves it to memory. Just like a compiler, is a translator used to convert high-level programming language to low-level programming language. It converts the program one at a time and reports errors detected at once while doing the conversion. With this, it is easier to detect errors than in a compiler. An interpreter is faster than a compiler as it immediately executes the code upon reading the code.
It is often used as a debugging tool for software development as it can execute a single line of code at a time. An interpreter is also more portable than a compiler as it is not processor-dependent, you can work between hardware architectures.
- An interpreter translates and executes the source code of a program line-by-line or statement-by-statement, without producing an intermediate machine code.
- It reads each line of code, converts it into machine code or intermediate representation, and executes it immediately.
- Interpreters are often slower than compilers but provide features like dynamic typing and runtime error checking.
- No separate executable file is generated; the code is executed directly.
- Example:
Python
interpreter, JavaScript interpreter in web browsers.
#3 Assembler:
- An assembler translates assembly language code, which is a low-level symbolic representation of machine code, into actual machine code.
- Assembly language is more readable and easier to understand compared to machine code, but it still closely reflects the architecture of the target processor.
- Generates an object file or directly produces machine code.
- Example:
NASM (Netwide Assembler)
for x86 architecture.
#4 Preprocessor:
- A preprocessor is a type of translator that processes the source code before compilation or interpretation.
- It performs tasks such as macro expansion, file inclusion, and conditional compilation directives (#define, #include, #ifdef, etc.).
- Preprocessors are commonly used in C and C++ programming languages to facilitate code organization and manage platform-specific differences.
#5 Linker:
- A linker is a tool that combines multiple object files and libraries into a single executable or library file.
- It resolves references between different parts of the program, such as function calls and variable accesses, by generating appropriate addresses and updating symbol tables.
- Linkers are an essential part of the compilation process, especially for large-scale projects with multiple source files and external dependencies.
#6 Transpiler (Source-to-Source Compiler):
- A transpiler translates source code from one programming language to another.
- It maintains the functionality of the original code while converting it into a different syntax of language.
## Advantages/Disadvantages of Translators
Advantages of Compiler:
- The whole