A
translator is a computer program that performs the translation of 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 the
assembly language 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/
ASIC microchip implementations of the same program, and from software descriptions of a microchip to the
logic gates needed to build it.