Embora o termo "primos" não seja um termo técnico estrito na ciência da computação, podemos pensar nas seguintes ferramentas como parentes próximos aos compiladores:
1. Interpretadores: * Relacionamento: Os intérpretes são como compiladores, mas em vez de produzir código de máquina, eles executam o código -fonte diretamente.
*
Diferença: Os compiladores traduzem todo o programa de uma só vez, enquanto os intérpretes executam cada linha um por um.
*
Exemplo: Python, JavaScript, Ruby
2. Montadores: * Relacionamento: Os montadores traduzem a linguagem de montagem (código de baixo nível) em código da máquina, atuando como uma ponte entre o código legível pelo homem e o idioma do computador.
*
Diferença: Os compiladores trabalham com idiomas de alto nível, enquanto os montadores lidam com instruções de baixo nível.
*
Exemplo: Nasm, MASM
3. Transpilers: * Relacionamento: Transpilers, ou compiladores de origem a fonte, convertem o código de uma linguagem de programação para outra.
*
Diferença: Em vez de produzir código da máquina, eles produzem código em um idioma de alto nível diferente.
*
Exemplo: Babel (Código JavaScript de transpilos), TypeScript (transpilos para JavaScript), CoffeeScript (transpilos para JavaScript)
4. Pré -processadores: * Relacionamento: Os pré -processadores modificam o código -fonte antes de ser compilado. Eles podem definir macros, incluir arquivos externos e lidar com a compilação condicional.
*
Diferença: Eles são usados como uma etapa de pré -processamento antes do processo de compilação real.
*
Exemplo: C pré -processador, SASS (pré -processador de CSS)
5. Decompiladores: * Relacionamento: Os decompiladores são o oposto dos compiladores. Eles tentam reverter o código da máquina de engenharia em um idioma de alto nível.
*
Diferença: Os decompiladores geralmente perdem informações durante o processo, resultando em código menos legível.
*
Exemplo: Ida Pro, Ghidra
6. Linkers: * Relacionamento: Os ligantes combinam código compilado de vários arquivos em um único arquivo executável.
*
Diferença: Eles não fazem parte do próprio processo de compilação, mas são cruciais para a construção de um programa completo.
*
Exemplo: GNU LD, Linker da Microsoft
Todas essas ferramentas têm um objetivo semelhante de converter código de um formulário para outro, tornando -os parentes próximos à família Compiler. No entanto, cada um deles tem tarefas específicas e trabalha em diferentes níveis de abstração.