O que é um compilador?
Um compilador é um tipo especial de programa de computador que converte um arquivo de texto legível por humanos em um formato que o computador possa entender com mais facilidade. Em seu nível mais básico, um computador pode entender apenas duas coisas, um 1 e um 0. Nesse nível, um ser humano operará muito lentamente e encontrará as informações contidas na longa seqüência de 1s e 0s incompreensíveis. Um compilador é um programa de computador que preenche essa lacuna.
No começo, os compiladores eram programas muito simples que só podiam traduzir símbolos nos bits , os 1s e 0s, compreendidos pelo computador. Os programas também eram muito simples, compostos por uma série de etapas que foram originalmente traduzidas manualmente em dados que o computador podia entender. Como era uma tarefa que consumia muito tempo, partes da tarefa foram automatizadas ou programadas e o primeiro compilador foi gravado. Este programa reuniu ou compilou as etapas necessárias para executar o programa passo a passo.
Esses compiladores simples foram usados para escrever um compilador mais sofisticado. Com a versão mais recente, mais regras podem ser adicionadas ao programa do compilador para permitir uma estrutura de linguagem mais natural para o programador humano operar. Isso tornou os programas de escrita mais fáceis e permitiu que mais pessoas começassem a escrever programas. À medida que mais pessoas começaram a escrever programas, mais idéias sobre programas de escrita foram oferecidas e usadas para criar compiladores mais sofisticados. Dessa maneira, os programas do compilador continuam a evoluir, melhorar e se tornar mais fácil de usar.
Os programas de compilador também podem ser especializados. Certas estruturas de linguagem são mais adequadas para uma tarefa específica do que outras, portanto, compiladores específicos foram desenvolvidos para tarefas ou idiomas específicos. Alguns compiladores são de vários estágios ou de múltiplas passagens . Uma primeira passagem pode levar uma linguagem muito natural e aproximar-se de uma linguagem compreensível por computador. Um segundo ou mesmo um terceiro passe pode levá-lo ao estágio final, o arquivo executável.
A saída intermediária em um compilador de vários estágios é geralmente chamada de pseudo-código , pois não pode ser usada pelo computador. O pseudo-código é muito estruturado, como um programa de computador, não flui livremente e é detalhado como uma linguagem mais natural. A saída final é chamada de arquivo executável , pois é o que é realmente executado ou executado pelo computador. Dividir a tarefa dessa maneira facilitou a criação de compiladores mais sofisticados, pois cada subtarefa é diferente. Também tornou mais fácil para o computador apontar onde havia problemas para entender o que estava sendo solicitado a fazer.
Erros que limitam o compilador na compreensão de um programa são chamados erros de sintaxe . Erros na forma como o programa funciona são chamados de erros lógicos . Os erros de lógica são muito mais difíceis de detectar e corrigir. Erros de sintaxe são como erros de ortografia, enquanto erros de lógica são um pouco mais parecidos com erros gramaticais.
Programas de compilador cruzado também foram desenvolvidos. Um compilador cruzado permite que um conjunto de instruções de arquivo de texto escrito para um computador projetado por um fabricante específico seja compilado e executado em um computador diferente por um fabricante diferente. Por exemplo, um programa que foi escrito para ser executado em um computador Intel às vezes pode ser compilado de forma cruzada para ser executado em um computador desenvolvido pela Motorola. Isso freqüentemente não funciona muito bem. No nível em que os programas de computador operam, o hardware do computador pode parecer muito diferente, mesmo que pareçam com você.
A compilação cruzada é diferente de ter um computador emular outro computador. Se um computador está emulando um computador diferente, está fingindo ser esse outro computador. A emulação é freqüentemente mais lenta que a compilação cruzada, pois dois programas estão sendo executados ao mesmo tempo, o programa que está fingindo ser o outro computador e o programa que está sendo executado. No entanto, para que a compilação cruzada funcione, é necessário o texto original em linguagem natural que descreve o programa e um computador que seja suficientemente semelhante ao computador original em que o programa possa funcionar para ser executado em um computador diferente. Isso nem sempre é possível, portanto, ambas as técnicas estão em uso.