Please enable JavaScript.
Coggle requires JavaScript to display documents.
Semântica Dinâmica: O Significado dos Programas (Sebesta, Cap. 3.5) -…
Semântica Dinâmica: O Significado dos Programas (Sebesta, Cap. 3.5)
3.5.1 Semântica Operacional
Definição: Descreve o significado de um programa simulando sua execução passo a passo em uma máquina abstrata. Foco no "COMO" executa.
Conceitos: O estado do programa (valores das variáveis) é modificado a cada passo da computação.
Avaliação: Big-Step: mostra o resultado final. Small-Step: mostra cada passo intermediário.
Vantagens: Intuitiva e útil para construir interpretadores.
Desvantagens: Pode ser excessivamente detalhada e complexa.
3.5.2 Semântica Denotacional
Definição: Mapeia construções da linguagem a objetos matemáticos (funções). Foco no "O QUE" o programa significa.
Conceitos: O significado do todo é derivado do significado das partes (composicionalidade).
Exemplo: Um laço while é definido como o ponto fixo de uma função matemática.
Vantagens: Abstrata, elegante e poderosa para análise teórica.
Desvantagens: Requer matemática avançada (Teoria dos Domínios).
3.5.3 Semântica Axiomática
Vantagens: Excelente para verificação formal e garantia de confiabilidade.
Conceito Chave: A Pré-condição Mais Fraca (Weakest Precondition) é a condição mínima que garante o resultado esperado.
Axiomas/Regras: Usa a Lógica de Hoare: {P} Comando {Q} (pré-condição, comando, pós-condição).
Definição: Descreve o significado através de asserções lógicas para provar a correção do programa. Foco em "PROVAR O QUE" o programa faz.
Desvantagens: Provar a correção de programas grandes é um processo difícil.
Comparações e Relação com LPs
Diferenças: Operacional: processo. Denotacional: significado. Axiomática: prova.
Aplicação (Operacional): Influencia a criação de interpretadores e máquinas virtuais (Ex: JVM).
Aplicação (Denotacional): Influencia o design de linguagens funcionais (Ex: Haskell).
Aplicação (Axiomática): Base para ferramentas de análise de código e verificação de software.