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

So lassen sich aus Java Klassen Instanzen erstellen

Java Klassen Instanzen erstellen

Lass uns jetzt aus den Java Klassen heraus Objekte anlegen. Im Einführungsbeispiel hast du bereits gelernt, wie du: Instanzvariablen bzw. Attribute anlegst Wie du aus einer normalen Java Klasse eine Programmstart Klasse machst In diesem Artikel erfährst du: Was Objekte bzw. Instanzen sind. Wie sich Objekte zusammensetzen. Wo und wie du Instanzen aus Java Klassen […]

So kannst du dein Java Programm mit der main Methode ausführen

Auf zum ersten Java Programm. Vielleicht fragst du dich jetzt gerade: Na, was haben wir denn bisher gemacht? War das etwa kein Java Programm? Wir haben bisher nur eine Klasse „Human“ für ein zuküntfiges Mensch-Objekt erstellt. Diesem Objekt haben wir eine Instanzvariable, namens size (Größe) zugeordnet. Und wir haben eine Instanzmethode, namens grow (wachsen) geschrieben. […]

Java Übung 26 – Das erste kleine Java Spiel

Java Übung Zahlenraten

In dieser Java Übung geht es darum ein kleines Java-Spiel zu erstellen. Und zwar Zahlen raten. Was kannst du dir darunter vorstellen? Du gibst einen bestimmten Wertebereich an. Zum Beispiel 0 bis 100. Und das Java Programm erstellt eine Zufallszahl in diesem Bereich. Dann fordert dich das Programm auf, die Zahl zu raten. Du gibst […]

So erstellst du deine ersten Java Klassen mit Eclipse

Java Klassen sind Baupläne für Java Objekte. Und da Java eine objektorientierte Programmiersprache ist, sind Java Klassen somit ein elementarer Bestandteil. In diesem Beitrag möchte ich dir zeigen, wie du eine Java Klasse in Eclipse erstellen kannst. Ich möchte dir außerdem zeigen, was physikalisch in deinem Projekt passiert. Ganz zum Schluss zeige ich dir noch, […]

So kannst du ein Java Programm starten und Argumente übergeben

Um ein Java Programm starten zu können, benötigst du immer die main-Methode. Das Programm startet immer genau an dieser Stelle. Alle lokalen Variablen, welche du in der Main Methode anlegst, kannst du dann im Programm nutzen. Auch alle Methoden, welche du innerhalb des Methodenrumpfes der main-Methode aufrust, werden ausgeführt. Was ist aber vor der main-Methode. […]

So richtest du einen Schreibschutz für deine Java Variablen ein

Stell dir vor: Du hast erfolgreich dein erstes Programm für die Personalabteilung aufgesetzt. Du hast deine ersten 1000 Datensätze schön sauber angelegt. Und nun kommt dein Kollege und überschreibt die Vornamen der ersten 100 Mitarbeitern. Na schöne Sch…. 🙂 Wie kann das passieren? Wie kann man das verhindern? Du brauchst eigentlich nur deine Java Variablen […]

Der Aufbau von Java Klassen

Java Klassen Aufbau

Jedes Java Programm besteht aus Java Klassen. Doch wie sind diese aufgebaut? Wie setzt sich die Struktur zusammen? Wo befinden sich Klassen hierarchisch? Was kommt in die Klassen rein und wie wird es integriert? Das sind die Fragen, welche ich in diesem Artikel beantworten werde. Doch bevor wir bei den Klassen ansetzen, müssen wir eine […]

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]