Na computação, um tradutor é um programa que converte um programa escrito em uma linguagem de programação (o idioma de origem) em outra linguagem de programação (o idioma de destino). Este processo é chamado de tradução. Existem vários tipos de tradutores, cada um com uma abordagem diferente:
*
compilador: Um compilador traduz todo o código -fonte para o código da máquina (ou uma representação intermediária como bytecode) * antes de * o programa ser executado. O código da máquina resultante pode ser executado diretamente pelo processador do computador. Os compiladores geralmente produzem código otimizado para melhor desempenho, mas o próprio processo de compilação pode levar tempo. Os exemplos incluem GCC (GNU Compiler Collection) e Clang.
*
Interpretador: Um intérprete traduz e executa a linha de código -fonte por linha, sem criar um arquivo executável independente. Isso permite um feedback mais rápido durante o desenvolvimento, porque os erros são identificados assim que forem encontrados. No entanto, o código interpretado geralmente funciona mais lento que o código compilado. Os exemplos incluem os mecanismos de intérprete e JavaScript da Python em navegadores da Web.
*
assembler: Um assembler é um tipo específico de tradutor que converte a linguagem de montagem (uma linguagem de programação de baixo nível) em código da máquina. A linguagem de montagem usa mnemônicos (abreviações curtas) que representam instruções da máquina, tornando-a um pouco mais legível pelo homem que o código de máquina puro.
*
Transpiler (ou compilador de origem a fonte): Um transpiler traduz o código-fonte de uma linguagem de programação de alto nível em outra linguagem de programação de alto nível. Não gera código da máquina diretamente. Isso é útil para portar código entre diferentes idiomas ou para modernizar o código legado. Os exemplos incluem Babel (transpiling JavaScript ES6+ para ES5) e compiladores de texto datilografados (transpiling tipycript para javascript).
A principal diferença entre esses tipos está em * quando * e * como * a tradução acontece. Os compiladores traduzem tudo o que é iniciado, os intérpretes traduzem e executam linha por linha, e os transpilers traduzem entre idiomas de alto nível. Os montadores são uma forma especializada de compilador com foco em uma linguagem de nível muito baixo.