Fundamentos do processo de compilação
Linguagens de programação são notações formais, definidas por um conjunto de regras sintáticas e semânticas, que permitem aos seres humanos especificar uma sequência de instruções para um computador executar.
Elas servem como uma ponte de comunicação entre o pensamento humano, que é abstrato, e a máquina.
Computadores operam em um nível fundamentalmente simples e direto. A CPU executa operações “atômicas”, como:
- Somar números binários
- Mover dados entre pequenas unidades de memória de alta velocidade chamadas registradores
- Acessar posições da memória principal
Toda a complexidade dos softwares que usamos é construída a partir dessas operações básicas.
Quanto mais alto nível for uma linguagem de programação, maior será a sua distância do nível operacional da máquina. Linguagens como Python ou Java oferecem abstrações poderosas (objetos, garbage collection, etc.) que simplificam o trabalho do programador.
Consequentemente, o compilador (ou interpretador) para essas linguagens precisa ser mais complexo e eficiente para traduzir essas abstrações de alto nível na sequência correta de operações simples que o processador entende.