Pergunta

Faça idiomas como, por exemplo.Ruby (se estiver executando MRI, quero dizer, não compilado em código de bytes) é realmente analisado sempre que uma execução de, por exemplo, método ou corpo de loop é necessária?Quero dizer, para executar um loop, você precisa analisar seu corpo N vezes?

Sempre pensei que todos esses programas estavam sendo analisados ​​uma vez no bootstrap, transformados em uma árvore de instruções “fortemente tipada”, etc.Isso não é verdade?

Foi útil?

Solução

Serei apenas cruel agora e direi que quase TODAS as linguagens de programação são interpretadas, seja um interpretador de software (Ruby, Python, Java) ou de hardware (C, C++) :)

Para uma resposta real, embora eu não saiba sobre a implementação interna do Ruby, tenho certeza que eles não analisam a instrução repetidamente.Embora não usem bytecode na implementação original (ou eles já migraram?), eles usam alguma representação intermediária (você pode ver isso muito bem quando deseja escrever extensões C para ele), apenas executando-as repetidamente.

Outras dicas

Interpretado é uma palavra com uma definição muito vaga.Até as instruções do código de máquina são interpretadas pelo processador.

Em geral é feita uma distinção entre linguagens que são compiladas antes de serem executadas e linguagens que não possuem um processo de compilação e são executadas dentro de outro programa, denominado interpretador.Os últimos tipos de linguagens são frequentemente chamados de linguagens interpretadas.

A linha não é tão clara em alguns casos:

  • Algumas linguagens podem ser compiladas ou interpretadas, por ex.PHP.
  • Algum código interpretado pode ser compilado em tempo de execução em instruções de máquina nativas (Compilação JIT).
  • Algumas linguagens compiladas podem ter um exec funcionalidade que permite que o código seja gerado e executado em tempo de execução, ignorando o processo normal de compilação.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top