Translator (computing)
A translator or programming language processor is a generic term that can refer to anything that converts code from one computer language into another. A program written in high-level language is called source program. These include translations between high-level and human-readable computer languages such as C++ and Java, intermediate-level languages such as Java bytecode, low-level languages such as the assembly language and machine code, and between similar levels of language on different computing platforms, as well as from any of the above to another. 

The term is also used for translators between software implementations and hardware implementations (ASICs  microchips) of the same program, and from software descriptions of a microchip to the logic gates needed to build it.

Different types of translators 

There are 3 different types of translators as follows:

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.  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.
A compiler is processor-dependent and platform-dependent. 
It has been addressed by alternate names as the following: special compiler, cross-compiler and, source-to-source compiler.

Interpreter 

The interpreter is similar to a compiler, as it is a translator used to convert high-level programming language to low-level programming language. The difference is that it converts the program one line of code at a time and reports errors when detected, while also doing the conversion. 
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 processor-independent, you can work between different hardware architectures.

Assembler 

An assembler is a translator used to translate assembly language into machine language.  It has the same function as a compiler for the assembly language but works like an interpreter.  Assembly language is difficult to understand as it is a low-level programming language.  An assembler translates a low-level language, such as an assembly language to an even lower-level language, such as the machine code.

See also 
 Binary translator (binary-to-binary, typically code)
 Assembly language translator (low-level source-to-source, code)
 Source-to-source translator (high-level source-to-source, code)
 Rewriter (source-to-source, typically code)
 File converter (binary-to-binary, typically data)
 Transcoder (binary-to-binary, data)

References

Further reading 
  (2+xiv+270+6 pages)
 
 
 

Programming language implementation