Questão de Programação — Linguagens de programação — Quadrix 2024
- Código
- qg347470
- Banca
- Quadrix
- Órgão
- CFP
- Ano
- 2024
- Nível
- Médio
- Cargo
- Técnico Administrativo - Suporte Técnico em Informática
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: Errado. O PHP é uma linguagem interpretada (ou híbrida, com compilação para bytecode em versões modernas via OPcache), e não converte o código-fonte diretamente em código de máquina antes da execução. O código PHP é processado pelo interpretador Zend Engine no servidor, que o traduz para instruções executáveis em tempo de execução — não há geração de um arquivo binário nativo como ocorre em linguagens compiladas tradicionais (C, C++, Go).
Para entender por que a afirmação está errada, é preciso dominar a diferença entre os modelos de execução das linguagens de programação. Uma linguagem compilada (como C, C++, Go, Rust) passa por um compilador que traduz todo o código-fonte para código de máquina (binário) antes da execução, gerando um arquivo executável. Já uma linguagem interpretada (como PHP, JavaScript, Python) é executada por um interpretador que lê e executa o código-fonte linha por linha (ou instrução por instrução) em tempo de execução, sem gerar um arquivo binário nativo. Existem ainda as linguagens híbridas (como Java e C#), que compilam o código-fonte para um bytecode intermediário, que depois é interpretado/executado por uma máquina virtual (JVM, CLR).
O PHP, especificamente, é uma linguagem interpretada — o código-fonte é processado pelo interpretador Zend Engine, que o converte em opcodes (instruções de máquina virtual) e os executa imediatamente. Em versões mais recentes, o OPcache pode armazenar esses opcodes em cache para acelerar a execução, mas isso não é a mesma coisa que compilar para código de máquina nativo. O PHP nunca gera um executável binário independente; ele depende do interpretador instalado no servidor.
Um exemplo prático: quando você escreve um script PHP (arquivo.php) e o acessa via navegador, o servidor web (Apache, Nginx) aciona o interpretador PHP, que lê o arquivo, interpreta as instruções e gera a saída HTML dinamicamente. Se o código tiver um erro de sintaxe, ele só será detectado na execução — diferente de uma linguagem compilada, onde o erro seria apontado na fase de compilação, antes de gerar o executável.
A pegadinha da banca está em inverter o modelo de execução: ela afirma que o PHP converte o código-fonte diretamente em código de máquina antes da execução, o que é característica de linguagens compiladas. O candidato que confunde os modelos de execução cai facilmente nessa armadilha. Guarde a distinção: compilada = gera binário nativo antes de executar; interpretada = executa o código em tempo real, sem gerar binário; híbrida = compila para bytecode e executa via máquina virtual.
Critério | Linguagem Compilada (C, C++, Go) | Linguagem Interpretada (PHP, Python, JS) | Linguagem Híbrida (Java, C#) |
|---|---|---|---|
Processo de execução | Compila todo o código-fonte para código de máquina antes de executar | Interpreta e executa o código linha por linha em tempo real | Compila para bytecode intermediário, executado por máquina virtual |
Geração de binário | Gera arquivo executável nativo | Não gera binário nativo | Gera bytecode (não binário nativo) |
Detecção de erros | Erros apontados na compilação, antes da execução | Erros detectados apenas na execução | Erros de sintaxe na compilação; erros de runtime na execução |
Exemplo | C, C++, Go | PHP, JavaScript, Python | Java, C# |
Afirma que o PHP converte o código-fonte diretamente em código de máquina antes de ser executado pelo servidor. Isso é falso: o PHP é uma linguagem interpretada, executada pelo Zend Engine, que traduz o código para opcodes em tempo de execução. Não há geração de código de máquina nativo nem arquivo executável. A alternativa descreve o comportamento de linguagens compiladas (C, C++, Go), não do PHP.
A afirmação está errada porque o PHP não converte o código-fonte em código de máquina antes da execução. O PHP é interpretado: o interpretador Zend Engine lê o código-fonte, converte em opcodes e executa imediatamente no servidor. Não há etapa de compilação para código de máquina nativo. Portanto, o item é Errado.
Para questões sobre modelos de execução, monte uma tabela mental: compilada (C, C++, Go) → gera binário nativo antes de executar; interpretada (PHP, JavaScript, Python) → executa o código em tempo real, sem binário; híbrida (Java, C#) → compila para bytecode e executa via máquina virtual. A banca adora inverter essas características — se a alternativa disser que uma linguagem interpretada "compila para código de máquina", está errada.
Gabarito: letra E (Errado).
Link permanente: /questoes/qg347470