Syntax und Semantik
Die Begriffe Syntax und Semantik bezeichnen in unserer Veranstaltung des Zusammenhang zwischen dem notierten Quellcode und dem daraus resultierenden Verhalten des Programms.
Syntax
Syntax bezeichnet die Struktur oder Grammatik des Programms. Die erste Herausforderung beim Lernen einer neuen Programmiersprache ist es, syntaktisch korrekte Programme zu formulieren. Zu einer Programmiersprache gehören viele Funktionalitäten. Für die Veranstaltung und das grundlegende Verständnis der Syntax ist jedoch nur die Basis relevant.
Semantik
Semantik meint die Bedeutung oder Ausführung eines Programms. Es ist einfacher, ein syntaktisch korrektes Programm zu schreiben, als eines, das exakt das macht, was man möchte. Dazu muss man verstanden haben, welche syntaktischen Elemente eines Programms welchen Effekt auf den Programmzustand haben. Dann kann man aus den verschiedenen syntaktischen Elementen die gewünschte Semantik zusammensetzen.
Es gibt drei Techniken, um die Semantik eines Programms zu beschreiben:
Bei der operationalen Semantik wird ein Programm in Elementaroperationen und Programmzustände unterteilt. Dann wird schrittweise beschrieben, welche Auswirkungen die Elementaroperationen auf den Zustand haben und in welcher Situation welche Elementaroperation ausgeführt wird. Es geht also um die Beziehung zwischen Operation und Zustand. Diese Technik wird zum Beispiel für das Herstellen von Compilern verwendet.
Bei der denotationalen Semantik werden mathematische Funktionen verwendet. Der Fokus liegt darauf, wie eine Eingabe einen Zustand verändert. Diese Semantik eignet sich besonders gut dazu, um herauszufinden, ob ein Programm wirklich genau das tut, was es machen soll.
Bei der verbalen Semantik wird ein Programm, wie der Name schon sagt, verbal beschrieben. Dabei sollten die einzelnen Konzepte und Funktionalitäten einer Programmiersprache möglichst präzise erklärt werden. Diese Art der Beschreibung eignet sich vor allem dafür, den Umgang mit einer Programmiersprache zu lernen.
Beispiel
Eine syntaktisch korrekt formulierte Funktion wäre:
public static void foo(){ int bar = 10; System.out.println("bar: "+bar); }
Ob eine Funktion, die ausschließlich den Text "bar: 10" ausgibt (Semantik), nützlich ist, ist jedoch eine andere Frage.