Diferenças entre compiladores e intérpretes

Antes de o Java aparecerem linguagens de programação C #, os programas de computador eram apenas compilado ou interpretado. Idiomas como Assembly Assembly, C, C ++, Fortran, Pascal quase sempre foram compilados em código de máquina. Idiomas como Basic, VbScript e JavaScript eram geralmente interpretados.

Então, qual é a diferença entre um programa compilado e um interpretado?

Compilando

Para escrever um programa, siga estas etapas:

  1. Edite o programa
  2. Compile o programa em arquivos de código da máquina.
  3. Vincule os arquivos de código da máquina a um programa executável (também conhecido como exe).
  4. Depurar ou executar o programa

Em alguns idiomas, como Turbo Pascal e Delphi, as etapas 2 e 3 são combinadas.

Os arquivos de código de máquina são módulos independentes de código de máquina que requerem vinculação para criar o programa final. O motivo de ter arquivos de código de máquina separados é a eficiência; compiladores só precisam recompilar Código fonte que mudaram. Os arquivos de código da máquina dos módulos inalterados são reutilizados. Isso é conhecido como fazer o aplicativo. Se você deseja recompilar e reconstruir todo o código-fonte, isso é conhecido como Build.

instagram viewer

O linking é um processo tecnicamente complicado, no qual todas as chamadas de função entre diferentes módulos são conectadas, os locais de memória são alocados para variáveis e todo o código é disposto na memória e, em seguida, gravado no disco como um programa completo. Geralmente, é uma etapa mais lenta do que a compilação, pois todos os arquivos de código da máquina devem ser lidos na memória e vinculados.

Interpretação

As etapas para executar um programa através de um intérprete são

  1. Edite o programa
  2. Depurar ou executar o programa

Este é um processo muito mais rápido e ajuda os programadores iniciantes a editar e testar seu código mais rapidamente do que usando um compilador. A desvantagem é que os programas interpretados são muito mais lentos que os programas compilados. 5 a 10 vezes mais devagar que todas as linhas de código precisam ser relidas e processadas novamente.

Digite Java e C #

Ambos os idiomas são semi-compilados. Eles geram um código intermediário que é otimizado para interpretação. Essa linguagem intermediária é independente do hardware subjacente e facilita a porta programas escritos para outros processadores, desde que um intérprete tenha sido escrito para esse hardware.

Java, quando compilado, produz bytecode que é interpretado em tempo de execução por uma Java Virtual Machine (JVM). Muitas JVMs usam um compilador Just-In-Time que converte bytecode em código de máquina nativo e, em seguida, executa esse código para aumentar a velocidade de interpretação. Com efeito, o código-fonte Java é compilado em um processo de dois estágios.

O C # é compilado no Common Intermediate Language (CIL), anteriormente conhecido como Microsoft Intermediate Language MSIL. Isso é executado pelo Common Language Runtime (CLR), parte da estrutura .NET, um ambiente que fornece serviços de suporte, como coleta de lixo e compilação Just-In-Time.

Java e C # empregam técnicas de aceleração, portanto a velocidade efetiva é quase tão rápida quanto uma linguagem compilada pura. Se o aplicativo gastar muito tempo fazendo entradas e saídas, como ler arquivos de disco ou executar base de dados consultas, então a diferença de velocidade é quase imperceptível.

O que isso significa para mim?

A menos que você tenha uma necessidade muito específica de velocidade e precise aumentar a taxa de quadros em alguns quadros por segundo, pode esquecer a velocidade. Qualquer um dos C, C ++ ou C # fornecerá velocidade suficiente para jogos, compiladores e sistemas operacionais.