Es gibt viele beliebte Sprachen. Informatiker sagen uns jedoch, dass wir, um das Verhalten von Programmen in diesen Sprachen definitiv und eindeutig verstehen zu können, diese in eine andere, gut verstandene Sprache übersetzen müssen (z. B. um ihre Identität zu beweisen). Sie nennen solche Sprache "eine Semantik". Autoren schlagen eine von vielen Semantiken vor. Sie erklären die Bedeutung ihrer Konstruktionen und wie Sie Ihre Sprache in ihre übersetzen können. Sobald Sie das tun, wird jeder Ihr Programm sicher verstehen, sagen sie.
Sieht gut aus, aber ich verstehe etwas nicht. Sagen sie uns, dass sie eine andere Sprache einführen, um die erste zu verstehen? Warum verstehen wir es besser als das Original? Warum ist diese Semantik besser als das? Warum nicht gleich die Semantik von C lernen, anstatt eine andere Sprache zu erfinden, um die Semantik von C zu beschreiben? Gleiches gilt für die Syntax. Warum stelle ich nicht die gleiche Frage zur Syntax?
PS In den Kommentaren höre ich, dass Semantik keine andere Sprache oder Übersetzung bedeutet. Die formale Semantik für VHDL besagt jedoch, dass Sie etwas nicht verstehen, wenn Sie es nur auf eine Weise verstehen, und dass die "Bedeutung der Bedeutung" angegeben werden kann, wenn wir eine Sprache mit einem Mechanismus bereitstellen, der es in eine andere (bekannte) Sprache übersetzt. Das heißt, "Semantik ist eine Beziehung zwischen formalen Systemen". Hennessy in der Semantik der Programmiersprachen sagt, dass die Semantik die formale Verarbeitung der "Bedeutung" des Programms ermöglicht, wenn die Semantik als BNF- oder Syntaxdiagramm geliefert wird. Was ist ein formales System, wenn nicht eine Sprache?
PS2 Kann ich sagen, dass die HW-Synthese eines bestimmten HDL-Programms zu einer Verknüpfung von Gattern ein Prozess der Semantikextraktion ist? Wir übersetzen (High-Level-) Beschreibungen in die (Low-Level-) Sprache, die wir später verstehen.
Antworten:
Denn um die Semantik von C zu definieren, braucht man eine Sprache, zum Beispiel Englisch. Englisch kann mehrdeutig sein, insbesondere die C99-Semantik.
Der Begriff der Semantik in der Informatik ist im Allgemeinen eine mathematische Beschreibung eines Programms, und diese Beschreibung ist nicht genau eine Übersetzung. Es gibt verschiedene Arten von Semantiken, die sich auf verschiedene Dinge beziehen können:
Ein wenig traurig für den Moment, ein Programm durch seine Semantik allgemein zu verstehen, ist weder einfach noch die Absicht von allem. Es ist nicht das erstere, denn diese Mathematik kann chaotisch sein. Letzteres ist nicht der Fall, da die Semantik zwar eine gemeinsame und eindeutige Beschreibung liefert, aber nicht zum Verständnis eines Programms verwendet wird.
Wenn das Lesen der Semantik nicht so aussagekräftig ist, ist es sehr wichtig, die Semantik der Grundelemente der Sprache zu lesen und zu vereinbaren, um beispielsweise eindeutig zu erklären, wie Cprimitive Werke.fortsetzen
Abschließend:
Technisch gesehen ist die Sprache Mathe. Außerdem ist es im Grunde für alle Programmiersprachen gleich, so dass die Einführung einer neuen Sprache, wenn sie für alle gleich ist, ziemlich in Ordnung wäre.
Weil es Mathe ist, ist es vielleicht schwieriger zu verstehen, aber es ist viel präziser und vollständiger.
Es gibt Arbeiten zu verifizierten Parsern, aber die Frage, was eine Semantik eines Parsers bedeuten würde, ist nicht trivial.
quelle