Para entender mais sobre compiladores e interpretadores precisamos saber o que são as linguagens de programação.
De forma bem resumida, a linguagem de programação é um método padronizado para comunicar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias. Linguagens de programação podem ser usadas para expressar algoritmos com precisão.
Dessa forma, já é possível entendermos como funcionam os compiladores e interpretadores.
Compiladores : Compilador é um programa ou um grupo de programas que escrito por uma linguagem (esta sendo necessária de compilação para sua execução) ao ser compilado gera outro código que é interpretado pelo computador. Este código compilado é chamado de código objeto, podendo ser um arquivo executável que é reproduzido em um sistema operacional, por exemplo. Este tipo de tradutor é um dos mais utilizados.
Os compiladores analisam o código em três partes, de forma sintática ou hierárquica, análise léxica ou linear e análise semântica.
Alguns compiladores contam com um pré-processamento. Este pré-processamento é responsável por modificar o código-fonte conforme necessidades que o compilador identifique que sejam necessárias, por exemplo, otimização de código.
Vantagens:
O código compilado é mais rápido de ser acessado;
Impossibilita ou pelo menos dificulta ser quebrado e visualizado o código-fonte original;
Permite otimização do código por parte do compilador;
Compila o código somente se estiver sem algum erro.
Desvantagens:
Para ser utilizado o código precisa passar por muitos níveis de compilação;
Assim como vantagem a possibilidade de não poder visualizar o código-fonte, pode ser uma desvantagem;
Processo de correção ou alteração do código requer que ele seja novamente recompilado.
Interpretadores: O interpretador ao contrário do compilador roda o código-fonte escrito como sendo o código objeto, ele traduz o programa linha a linha, o programa vai sendo utilizado na medida em que vai sendo traduzido. Cada execução do programa precisa ser novamente traduzido e interpretado.
O interpretador analisa sintaticamente e semanticamente o código, se estas duas etapas forem realizadas e executadas de forma correta o código está pronto para funcionar.
Vantagens:
Correções e alterações são mais rápidas de serem realizadas;
Código não precisa ser compilado para ser executado;
Consomem menos memória.
Desvantagens:
Execução é mais lenta do programa;
Necessita sempre ser lido o código original para ser executado;
Outras vantagens de interpretadores também é que em ferramentas que realizam rotinas simples e precisam sempre estar atualizadas, é possível baixar o código internamente e executar a rotina sem precisar atualizar tudo.
ResponderExcluirNo caso das linguagens de programação funcional como o Haskell, qual dos dois é utilizado? Há alguma situação em que são ambos? (pode ser para além das linguagens de programação funcional).
ResponderExcluirExiste algum compilador universal para todas linguagens de programação? Se sim qual o mais adequado para iniciantes?
ResponderExcluir