1. Syntax und Semantik
Sprachen dienen als Grundlage für Kommunikation. Das kennen wir alle aus unserem Alltag. So kommunizieren beispielsweise Menschen untereinander mit Hilfe von natürlichen Sprachen, wie Deutsch und Englisch, oder auch durch Formelsprachen, wenn wir beispielsweise an die Physik oder Mathematik denken. Auch in der Informatik wird kommuniziert, und zwar nicht nur zwischen Mensch und Maschine durch Programmiersprachen, Kommandobefehle und ähnliches, sondern auch die Maschinen untereinander kommunizieren beispielsweise über Protokolle. Damit die Maschinen die verschiedenen Daten, die sie von außen bekommen verarbeiten können, benötigen sie formale Sprachen. Dazu zählen im speziellen Programmiersprachen, wie Java, Python oder Delphi, aber auch HTML und SQL.
Syntax:
Die Syntax entspricht den grammatikalischen Regeln einer Sprache. Es ist klar definiert, welche Wörter zur Sprache gehören und welche nicht.
Semantik:
Bei der Semantik geht es um den Inhalt bzw. die Bedeutung der notierten Wörter.
Durch die gegebene Syntax ist genau definiert, welche Ausdrücke zulässig sind und was durch diese geschehen soll. Dies erkennt man beispielsweise beim Programmieren, wenn ein Fehler angezeigt wird, weil ein Befehl nicht erkannt wurde. Die Syntax ist nicht korrekt und wir bekommen eine Fehlermeldung. In Python sieht das beispielsweise wie folgt aus:
Nachfolgend nun ein praktisches Beispiel zur Unterscheidung von Syntax und Semantik:
Fruit flies like bananas.
Je nachdem, wie man den Satz liest, welche Grammatik man also zugrunde legt, kommt man auf zwei verschiedene Bedeutungsmöglichkeiten.
Aufgabe:
Auf welche zwei verschiedenen Arten kann man den Satz übersetzen und verstehen?
Die Syntax spielt hier eine entscheidende Rolle für die semantische Bedeutung.
Zwei weitere Beispiele wären:
- Paul sah den Mann auf dem Hügel mit dem Teleskop.
- Öffne die Kiste mit dem Schlüssel.
Als Grundlage wird ein Alphabet benötigt, mit dessen Hilfe Wörter einer Sprache formuliert werden können.
Aufgabe 1:
Überlege dir ein syntaktisch korrektes, aber semantisch sinnfreies Beispiel in Form eines kurzen Quelltextes.
Lösung
Beispiele: Endlosschleifen, sinnfreie bedingte Anweisungen (für Fälle die unmöglich sind)
Aufgabe 2:
Lies dir die folgenden Sätze durch. Jeder Satz ist grammatikalisch korrekt, hat also eine korrekte Syntax. Bewerte nun, ob der Satz auch semantisch korrekt ist. Wenn nicht, erkläre, warum der Satz zwar syntaktisch korrekt, aber semantisch falsch ist.
- Der Computer schläft unter der Lampe.
- Der Himmel ist blau, weil die Sonne scheint.
- Der Würfel ist rund.
Lösung
- Semantisch falsch: Ein Computer kann nicht schlafen und nicht unter einer Lampe liegen. Es fehlt die logische Bedeutung.
- Semantisch korrekt: Dieser Satz ist logisch nachvollziehbar, da der blaue Himmel durch die Streuung des Sonnenlichts erklärt wird.
- Semantisch falsch: Ein Würfel ist per Definition nicht rund. Die Begriffe widersprechen sich logisch.
Aufgabe 3:
Stell dir vor du arbeitest als Koch und hast ein Rezept für einen Kuchen bekommen. Dein Assistent hat das Rezept nach den Regeln der Sprache syntaktisch richtig aufgeschrieben, aber der Kuchen ist am Ende ungenießbar.
- Erkläre, warum dieses Rezept syntaktisch korrekt ist.
- Beschreibe, warum es semantisch fehlerhaft ist.
- Übertrage dieses Beispiel auf die Informatik. Welche Konsequenz hätte ein solch fehlerhaftes "Rezept" (Quellcode) für einen Computer?
Lösung
- Die Anweisungen sind in der deutschen Sprache korrekt formuliert.
- Die Zutaten sind logisch unsinnig für einen Kuchenrezept. Zucker und Salz wurden vertauscht und die Zutat Essig statt Milch ergibt keinen Sinn. Auch die Backzeit ist für einen Kuchen viel zu lang.
- Ein syntaktisch korrekter, aber semantisch fehlerhafter Code führt zu unerwarteten Ergebnissen. Ein Programm würde fehlerfrei kompilieren und starten, aber das Ergebnis wäre unsinnig. Das Programm "funktioniert" also, aber es erfüllt seine Aufgabe nicht.