Existem muitos idiomas populares. Porém, os cientistas da computação nos dizem que, para entender o comportamento dos programas nessas línguas de maneira definitiva e inequívoca, argumentar sobre o comportamento do programa (por exemplo, provar sua identidade), precisamos traduzi-los para outra linguagem bem compreendida. Eles chamam essa linguagem de "semântica". Os autores propõem uma das muitas semânticas. Eles explicam o significado de suas construções e como você pode traduzir seu idioma para o deles. Depois que você fizer isso, todos entenderão seu programa certamente, eles dizem.
Parece bom, ainda assim, eu não entendo alguma coisa. Eles nos dizem que introduzem outro idioma para entender o primeiro? Por que o entendemos melhor do que o original? Por que essa semântica é melhor que isso? Por que não aprender semântica de C imediatamente em vez de inventar outra linguagem, para descrever a semântica de C? O mesmo se aplica à sintaxe. Por que não faço a mesma pergunta em relação à sintaxe?
PS: Nos comentários, ouvi dizer que semântica não significa outra língua ou tradução para ela. Mas a Semântica Formal para VHDL diz que se você entende algo de apenas uma maneira, não o entende e o "significado do significado" pode ser especificado se fornecermos a uma linguagem um mecanismo que a traduza para outra linguagem (conhecida). Ou seja, "semântica é uma relação entre sistemas formais". Hennessy, em Semântica de linguagens de programação , diz que a semântica permite o processamento formal do "significado" do programa, quando a semântica é fornecida como BNF ou Diagrama de sintaxe. O que é um sistema formal, se não um idioma?
PS2 Posso dizer que a síntese de HW de determinado programa HDL na interconexão de portas é um processo de extração semântica? Depois, traduzimos a descrição (de alto nível) para o idioma (de baixo nível) que entendemos.
Respostas:
Porque, para definir a semântica de C, você precisa de algum tipo de idioma, por exemplo, inglês. O inglês pode ser ambíguo, e especialmente é a semântica do C99.
A noção de semântica da ciência da computação é geralmente uma descrição matemática de um programa, e essa descrição não é exatamente uma tradução. Existem vários tipos de semântica, que podem ser sobre coisas diferentes:
Infelizmente, por enquanto, entender universalmente um programa por meio de sua semântica não é fácil nem é a intenção de tudo. Não é o primeiro porque, bem, essas contas podem ser confusas. Não é o último, porque a semântica fornece de fato uma descrição comum e inequívoca, mas não é usada para entender um programa.
Se a leitura da semântica não é tão significativa, é muito importante ler e concordar com a semântica nos elementos básicos da linguagem, por exemplo, para explicar sem ambiguidade como C'sobras primitivas.continue
Em conclusão:
Tecnicamente não, a linguagem é matemática. Também é basicamente o mesmo para todas as linguagens de programação; portanto, mesmo a introdução de uma nova linguagem, se for a mesma para todas, seria praticamente aceitável.
Por ser matemática, pode ser mais difícil de entender, mas é muito mais preciso e completo.
Existem trabalhos sobre analisadores verificados, mas a questão do que significaria uma semântica de um analisador não é trivial.
fonte