Skip to main content

Lexikalik, Syntax und Semantik in Programmiersprachen

Java ist eine Programmiersprache.
Und wie jede andere Programmiersprache ist auch Java, lediglich eine künstliche Sprache.
 
Normalerweise bieten künstliche Projekte immer jede Menge Spielraum für Eigenkreationen.
Bei der Programmierung ist dies nicht ganz so.
Denn Programmiersprachen sind auch immer sehr exakt.
 
Jede Programmiersprache und auch jede gesprochene Sprache folgt immer einer Abstraktionsreihenfolge, welche unbedingt eingehalten werden muss.
Ansonsten ist die Sprache nicht verständlich.

Die oberste Hierachieebene bei Programmiersprachen, wie Java ist die Lexikalik

Schau dir einmal diesen Satz an.

Ich heiße !TEVF7.

Nicht verständlich, oder?
Doch warum nicht.
Ganz klar, das letzte Wort bzw. die letzte Zeichenkette im Satz ist völlig unbekannt.
 
Eine Sprache muss immer lexikalisch korrekt sein.
Das bedeutet, dass alle Wörter in einem Satz oder Abschnitt – in einer Sprache bekannt sein müssen.
Und das letzte Wort gibt es in der deutschen Sprache nicht.
Somit ist dieser Satz lexikalisch falsch.
 
Hier ein Java Beispiel dazu:

Programmiersprache Lexikalik Java

Auto ist ein Wort, welches du sicher kennst.
Nur Java bzw. der Java Compiler kennt dieses Wort nicht.
Somit ist dieser Baustein und damit auch das Java Programm – lexikalisch falsch.
 
Erst wenn im Zuge einer Variablendeklaration ein fiktiver Name auftaucht, kann Java etwas damit anfangen.
Programmiersprache-Java-Lexikalik
 
Was ist mit Kommentaren?
Falls irgendwelche Wörter in ein Kommentarblock eingeschoben sind, erkennt der Java Compiler dies durch die entsprechende Kennzeichnung (//).
Und dadurch ist es für den Compiler wiederum lexikalisch einwandfrei.
Java Programmiersprachen Lexikalik

 

Die zweite Hierarchieebene in einer Programmiersprache ist die Syntax.

Unter Syntax versteht man die Anordnung der einzelnen Befehle bzw. der Bausteine in einem Java Programm.
 
Du kennst das aus der deutschen Sprache.
Da nennt sich so etwas Satzbau bzw. Grammatik.
Hier das Beispiel:

Mathias ich heiße.

Dieser Satz ist lexikalisch völlig richtig.
Denn jedes dieser Wörter existiert in der deutschen Sprache.
Die Zusammensetzung bzw. die Syntax ist aber völlig falsch.
 
Und auch in Java spielt die Syntax eine sehr wichtige Rolle.
 
Hier das Java Beispiel.
Es soll eine Variable vom Datentyp String deklariert werden.
Und deshalb muss zuerst der Datentyp und dann der Name ins Programm geschrieben werden.
Also String und dann der Name, zum Beispiel auto.

Hier auf dem Bild, ist es verkehrt herum.

Programmiersprachen Syntax Java

Bei jeder Variablendeklaration spielt die Anordnung vom Namen und Datentyp eine wichtige Rolle.
Denn jetzt ist es so, dass nicht eine Variable vom Datentyp String angelegt worde.
Stattdessen wurde eine Variable namens „String“ vom Datentyp „Auto“ angelegt.
Dieser Ausdruck ist nicht nur syntaktisch falsch.
Denn da der Datentyp „Auto“ diesem Java Programm völlig unbekannt ist – ist dieser Ausdruck auch lexikalisch falsch.
 

Die dritte wichtige Hierarchieebene in Java ist die Semantik

Semantik kannst du übersetzen mit inhaltliche Bedeutung oder Deutung.
 
Auch hier ein Beispiel:

Ich heiße Einkaufen.

Blöd , oder ? 🙂
Aber lexikalisch völlig in Ordnung.
Und auch vom Satzbau her gibt, es nichts zu meckern.
 
Der Sinn des Satzes ist aber völlig daneben.
 
Die Semantik beschäftigt sich damit, ob ein Satz oder eine Programmstruktur überhaupt Sinn ergibt.
 
Im folgenden Java Beispiel soll eine For-Schleife die natürlichen Zahlen von 1 bis 10 ausgeben.

public class Semantik {

	public static void main(String[] args) {

		// For-Schleife soll von 1 bis 10 zählen
		for (int i = -5; i < 0; i++) {
			System.out.println(i);
		}
	}
}

Zum echten Ausprobieren, habe ich die main-Methode implementiert.
Die for-Schleife ist lexikalisch und auch syntaktisch völlig in Ordnung.
Nur der Schleifenzähler startet bei – 5 und endet bei Null.
Somit wird die Schleife abrechen, bevor sie bei eins ist.
Und das bedeutet wiederum, dass die Zahlen 1 bis 10 niemals gezählt werden.
 
Der Ausdruck ist somit lexikalisch und syntaktisch richtig.
Und dennoch semantisch falsch.
 
 
Zusammenfassung:

  • Jede Programmiersprache ist äußerst exakt.
    Deshalb musst du beim Programmieren darauf achten, dass deine Programmbausteine lexikalisch, syntaktisch und auch semantisch – einwandfrei sind.
  • Die Lexikalik prüft als Erstes, ob die Wörter in dieser Programmiersprache überhaupt bekannt sind.
  • Die Syntax überprüft dann den ordnungsgemäßen Aufbau einer Anweisung.
  • Und schließlich muss die Anweisung auch einen Sinn für das Programm ergeben.
    Und diese inhaltliche Bedeutung wird durch die Semantik überprüft.

Ähnliche Beiträge

Ein Java Fenster erzeugen mit dem JFrame

Java-Fenster-erzeugen

Ein Java Fenster erzeugen mit Swing. Java Swing – was ist das? Zum Erstellen von grafischen Benutzeroberflächen, kurz GUI, bietet Java eine eigene Standardklasse an. Diese Klasse nennt sich Swing. Aus dieser Swing-Klasse heraus können Objekte erstellt werden. Diese Objekte lassen sich in vier verschiedene Kategorien einteilen. Fenster und Dialoge bilden das Grundgerüst einer grafischen […]

Java Vererbung – Die Hierarchien richtig planen

Java Vererbung Hierarchien

Java Vererbung hat nichts mit Biologie zu tun. Die Genetik besagt, dass bestimmte Merkmalsausprägungen von den Eltern auf die Kinder übergehen. Solche Merkmalsausprägungen sind: die Hautfarbe die Haarfarbe die spezifische Größe und weitere körperliche Merkmale. Und in Java – was ist da Vererbung? Lass es uns herausfinden. Was erwartet dich in diesem Beitrag? Zuerst schauen […]

So verwendest du die Java Codeblöcke zur Automatisierung

Java Codeblöcke

In diesem Beitrag geht es um den Einsatz von Java Codeblöcken oder Initialisierungsblöcken. Viele Wege führen nach Rom. Oder Alle Wege führen nach Rom. Heißt es in einem alten Sprichwort. Und so ähnlich ist es bei der Java Programmierung. In diesem Beitrag möchte ich dir einen weiteren Weg vorstellen, wie du Variablen eines Java Objektes […]

So organisierst und verwaltest du ganz bequem deine Java Projekte

Du kennst das auch. Denn du bist ja fleißig. Und weil du so fleißig bist, hast du mitunter auch mehrere Java Projekte gleichzeitig laufen. Und dann kommt es vor, dass du enorm viele Java Projekte am Laufen hast. Und dein Package-Explorer wird extrem unübersichtlich. In diesem Beitrag möchte ich dir zwei Varianten vorstellen, wie du […]

So kannst du Werte aus zwei oder mehreren Java Arrays verrechnen.

Java Arrays verrechnen

Wie kann man Werte aus zwei oder mehreren Java Arrays miteinander verrechnen? Zum Beispiel: Du möchtest alle Werte des ersten Arrays mit allen Werten des zweiten Arrays addieren Oder du möchtest die Summe aus beiden Arrays wissen und erst dann diese miteinander addieren. Was erwartet dich in diesem Beitrag? Zuerst werde ich dir zeigen, wie […]

So nutzt du getter und setter Methoden bei der Java Programmierung

Java Keyword private

In diesem Artikel möchte ich dir zeigen, wie du Instanzvariablen innerhalb der Java Klasse schützt. Und den Zugriff nur noch indirekt über getter und setter Methoden anbietest. Stell dir vor. Du hast ein Programm zur Lagerverwaltung geschrieben. Dieses Programm dient Möbelhäusern dazu, ihre Bestände zu verwalten. Und das Programm erwartet vom Nutzer gewisse Eingaben zu […]

10 ganz nützlichen Feature der Klasse Java Math

In diesem Beitrag geht es um eine spezielle Java Klasse. Die Klasse nennt sich Java Math. Diese ist in der Standardbibliothek von Java enthalten. Warum solltest du diese Klasse kennen? Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind. Aber auch für Nichtmathematiker ist etwas dabei. […]

Java Polymorphie – besserer Code und mehr Möglichkeiten

Java Polymorphie Vorteile

Polymorphie ist das Herzstück jeder objektorientierten Sprache. Nicht nur in Java – auch in Python, Javascript und in anderen Sprachen. Aber was bedeutet Polymorphie eigentlich? Polymorphie oder auch Polymorphismus genannt, kommt aus dem Griechischen. Es bedeutet Vielgestaltigkeit. Etwas freier übersetzt, kannst du es auch als Facettenreichtum bezeichnen. Im Grunde genommen zielt die ganze Java Vererbung […]