# Compiladores > [!NOTE] Compiladores > Um compilador é um programa de computador que traduz código escrito em uma linguagem de programação (a linguagem fonte) para outra linguagem de programação (a linguagem alvo). Geralmente, a linguagem alvo é uma linguagem de baixo nível, como linguagem de máquina ou linguagem Assembly, que pode ser executada diretamente pelo processador do computador. > > **Função Principal:** > O principal objetivo de um compilador é permitir que os programadores escrevam código em linguagens de alto nível, que são mais fáceis de entender e escrever, e depois traduzir esse código para uma forma que o computador possa executar. > > **Processo de Compilação (Simplificado):** > 1. **Análise Léxica:** O código fonte é lido e dividido em "tokens" (unidades básicas como palavras-chave, identificadores, operadores). > 2. **Análise Sintática:** Os tokens são organizados em uma estrutura hierárquica (árvore de sintaxe abstrata) para verificar se a estrutura do código segue as regras gramaticais da linguagem fonte. > 3. **Análise Semântica:** O compilador verifica o significado do código, como tipos de dados e declarações de variáveis, para garantir que ele faça sentido logicamente. > 4. **Geração de Código Intermediário:** Uma representação intermediária do código é criada, que é independente da máquina alvo. > 5. **Otimização de Código:** O código intermediário é otimizado para melhorar a eficiência (velocidade de execução, uso de memória). > 6. **Geração de Código Alvo:** O código otimizado é traduzido para a linguagem de máquina ou Assembly da arquitetura específica. > > **Diferença para Interpretadores:** > Ao contrário dos compiladores, que traduzem todo o código fonte de uma vez antes da execução, os interpretadores traduzem e executam o código linha por linha. Linguagens como Python e JavaScript são frequentemente interpretadas, enquanto C++ e Java são tipicamente compiladas (embora Java use um modelo híbrido com bytecode). **:: Referência ::** [[Vozes da minha cabeça]] # Notas