This article needs attention from an expert in computer science. Please add a reason or a talk parameter to this template to explain the issue with the article. WikiProject Computer science (or its Portal) may be able to help recruit an expert.
A translator is a computer program that translates a program written in a given programming language into a functionally equivalent program in a different computer language, without losing the functional or logical structure of the original code (the "essence" of each program). These include translations between high-level and human-readable computer languages such as C++, Java and COBOL, intermediate-level languages such as Java bytecode, low-level languages such as assembler and machine code, and between similar levels of language on different computing platforms, as well as from any of these to any other of these. Arguably they also include translators between software implementations and hardware/ASICmicrochip implementations of the same program, and from software descriptions of a microchip to the logic gates needed to build it.
If the translator translates a high level language into a lower level language it is called a compiler. Notice that every language can be either translated into a (Turing-complete) high level or assembly language.
If the translator translates a high level language into an intermediate code which will be immediately executed it is called an interpreter.