Interpretadores, runtimes e máquinas virtuais

Compreender execução mediada por runtime e evitar a falsa ideia de que linguagens “interpretadas” são simplesmente lidas linha por linha.

Interpretadores, runtimes e máquinas virtuais

Objetivo

Compreender execução mediada por runtime e evitar a falsa ideia de que linguagens “interpretadas” são simplesmente lidas linha por linha.

Conceitos essenciais

Interpretador

Executa ou coordena a execução de uma representação do programa sem exigir necessariamente um executável nativo separado produzido antecipadamente pelo usuário.

Runtime

Fornece serviços como tipos, memória, exceptions, módulos, I/O e execução de representações intermediárias, conforme a tecnologia.

Python

CPython normalmente compila fonte para uma forma de bytecode interno e executa essa representação em sua máquina de execução. O arquivo .py não é instrução nativa direta da CPU.

PHP

O Zend Engine analisa/compila o fonte para opcodes internos e os executa; chamar PHP de apenas “linha por linha” seria simplificação inadequada.

Máquina virtual

Ambientes como JVM e CLR executam representações intermediárias e podem aplicar JIT/AOT, garbage collection e outros serviços.

Modelo mental

SOURCE → IMPLEMENTAÇÃO/RUNTIME → REPRESENTAÇÃO INTERNA → EXECUÇÃO → CPU

Exemplo e demonstração

Java é um exemplo conhecido de compilação para bytecode da JVM.

Fonte .java → javac → .class/bytecode → JVM → execução

Experimento / prática

  • Explique por que python programa.py ainda envolve código de máquina em algum nível.
  • Diferencie linguagem Python e implementação CPython.

Erros comuns

  • Python é executado diretamente pela CPU.
  • Runtime significa apenas “tempo que o programa demorou”.

Resumo

Ao concluir esta aula, revise o modelo mental e tente explicá-lo com suas próprias palavras antes de avançar.