[Top] [rückwärts] [vorwärts] [Inhalt] [Index]

1.2.1 Sprache

Bevor wir uns den verschiedenen Aspekten des Sprachbegriffs zuwenden, ist eine Vorbemerkung erforderlich: Der Begriff ist schillernd und wird in unterschiedlichen Bedeutungen gebraucht, auch in diesem Buch. Denn zunächst war und ist eine Sprache, wie das Wort sagt, das Gesprochene. In der Informatik spielt aber gerade das gesprochene Wort bis heute keine Rolle, so daß ,,Sprache" hier jede Konvention zur Kommunikation bezeichnet. Damit haben auch Verkehrsampeln, Heulbojen und Autos (Pedalanordnung) ihre Sprachen. In der Informatik stehen natürlich solche Sprachen im Vordergrund, die für die Kommunikation zwischen Menschen und Rechnern (in allen vier Kombinationen) taugen. Diese haben traditionell Schriftform, in den letzten Jahren zunehmend auch graphische Form.

Die Syntax einer Sprache bestimmt, welche Aussagen darin zulässig sind, die Semantik, welche Bedeutung die zulässigen Aussagen (und nur diese) haben. In der Praxis heißt das: Um ein Programm in die Notation des Rechners übertragen zu können, muß es zunächst syntaktisch in Ordnung sein; dies prüft der Compiler. Das erzeugte Maschinenprogramm repräsentiert die Semantik des Programms; bei syntaktischen Fehlern wird kein Maschinencode erzeugt.

Man kann sich diese Begriffsabgrenzung auch an folgender Analogie klarmachen: Durch Presse und Plakate wird bekanntgemacht, welche Eintrittskarten an einem bestimmten Tage im Opernhaus gültig sind. Wer keine gültige Karte vorweisen kann, wird nicht eingelassen (Syntax-Fehler), wer es kann, hat auch Anspruch auf einen bestimmten Platz (das ist die Semantik der Eintrittskarte).

Die Oper, die er dann geboten bekommt, also die Bedeutung der Eintrittskarte über ihren formalen Sinn hinaus (Zuordnung eines Platzes), könnte man als die Pragmatik bezeichnen. Auch beim Programmieren liegt der Sinn ja letztlich nicht in einer Zeichentransformation, sondern in Auswirkungen auf die Welt, beispielsweise einer Zahlung, dem geordneten Verkehrsfluß auf einer Kreuzung oder dem ästhetisch befriedigenden Satz eines Textes. Die Informatik tut sich allerdings mit der Pragmatik schwer, denn sie liegt ja außerhalb ihrer ,,Mauern". Auch wir werden uns im Rahmen dieses Buches mit der Semantik begnügen.

Eine formale Sprache ist nun, wie unten gezeigt wird, viel weniger als eine Sprache im hier beschriebenen Sinne, nämlich kaum mehr als die Syntax. Zu Programmiersprachen gehört dagegen auch immer die Semantik; allerdings ist die Abgrenzung zwischen Syntax und Semantik oft verwischt, weil man nur das zur Syntax rechnet, was sich in einen bestimmten Definitionsmechanismus fassen läßt (nämlich den der kontextfreien Sprachen). In diesem Falle prüft der Compiler mehr, als die Syntax verlangt.

Ein Beispiel hierfür ist die Syntax des Tagesdatums. Eine ,,3" als Zehnerziffer der Tagesnummer ist nur unter bestimmten Bedingungen zulässig, sie darf nur von ,,0" oder ,,1" gefolgt sein. Will man nun die Syntax der Tagesnummer möglichst einfach definieren, so beschränkt man sich darauf, als erstes Zeichen eine Ziffer bis ,,3" oder ein Leerzeichen zuzulassen, als zweite eine beliebige Ziffer. Dann muß man aber durch zusätzliche Bedingungen Nummern wie 0 oder 32 verbieten.

Künstliche Sprachen

Künstliche Sprachen - im Gegensatz zu natürlichen Sprachen wie Deutsch oder Englisch - wurden Ende des 19. Jahrhunderts entwickelt, um Fakten, Denkabläufe und Schlußfolgerungen formal beschreiben und analysieren zu können. Neben diesen logikbasierten Sprachen (Aussagenlogik, Prädikatenlogik) entstanden mit der Entwicklung von Rechnern seit 1940 Programmiersprachen, die ebenfalls präzise definiert werden mußten.

Künstliche Sprachen werden nach Regeln aufgebaut (Syntax, Grammatik), und ihre Wörter und Sätze besitzen eine wohldefinierte Bedeutung (Semantik). Während sich bei natürlichen Sprachen die Wörter, die Regeln und die Bedeutungen im Laufe der Jahre ändern, besitzen künstliche Sprachen ein festes endliches Grundvokabular und eine feste Syntax und Semantik.

Beispiele

(a)
Aus dem Bereich der natürlichen Sprachen, denen eine klare Definition der Grammatik fehlt: Anfang und Schluß eines Dada-Gedichts (Kurt Schwitters: Der Bahnhof (1918)):

Man hat eine Leiter zur Sonne gestellt (1)
Die Sonne ist schwarz (2)
Die Mühle blüht (3)
... (...)
Du deiner dir dich (11)
Du deiner dich dir. (12)

Die beiden ersten Zeilen sind syntaktisch korrekt (nur der Schlußpunkt fehlt jeweils), die Semantik ist klar, der Inhalt ist allerdings zweifelhaft. Zeile 3 ist ebenfalls syntaktisch korrekt, die Semantik ist aber unklar. (Solche Fälle sucht man bei Programmiersprachen zu vermeiden, nicht immer mit Erfolg!) Die beiden letzten Zeilen sind syntaktisch nicht korrekt, ihre Semantik bleibt damit undefiniert.

(b)
Die natürlichen Zahlen (ohne Null), dargestellt im Dezimalsystem mit arabischen (eigentlich: indischen) Ziffern, bilden eine einfache künstliche Sprache mit folgender Festlegung:

Syntax: Jede Zahl ist eine Sequenz von Ziffern (0, 1, ..., 9), wobei die erste Ziffer nicht 0 ist.
Semantik: Der Wert einer Zahl ist definiert als der Wert ihrer letzten Ziffer, vermehrt um den zehnfachen Wert der links davon stehenden Zahl, falls diese vorhanden ist.
Die von Niklaus Wirth von der ETH Zürich Anfang der 80er Jahre eingeführte Programmiersprache Modula-2 ist eine künstliche Sprache, denn der Zeichenvorrat ist endlich, und es gibt eine endliche Regelmenge, die festlegt, ob ein Programmtext ein zulässiges Modula-2-Programm ist oder nicht. Im Gegensatz zu natürlichen Sprachen rechnet man bei künstlichen Sprachen auch das Grundvokabular zum Alphabet und spricht statt von den Sätzen von Wörtern der Sprache, im Falle von Programmiersprachen von Programmen, d.h. ein syntaktisch korrektes Programm ist ein Wort einer künstlichen Sprache.

Zeichen, Alphabete, Wörter, freies Monoid und Sprache

Ein Zeichenvorrat ist eine endliche Menge unterscheidbarer, in bestimmtem Kontext nicht weiter zerlegbarer Objekte (z.B. Buchstaben, Bilder, Symbole, Töne). Elemente eines Zeichenvorrats heißen Zeichen.

Ein Wort ist eine endliche Folge von Zeichen. Seien A ein Zeichenvorrat und ð eine lineare Ordnung auf A. Dann heißt die linear geordnete Menge (A, ) ein Alphabet.

Man beachte, daß das deutsche ABC kein Alphabet im Sinne der Bezeichnung ist, denn für einige Zeichen (z.B. Umlaute, ,,ß") fehlt teilweise die klare Regelung der Einordnung (vgl. die verschiedenen Formen von ,,Müller" im Telefonbuch). In Deutschland gibt es hierfür eine eigene Norm (DIN 5007).

Eine Ziffer ist ein Zeichen, das eine Zahl repräsentiert. Zahlen lassen sich auf verschiedene Art darstellen. Wir verwenden heute ganz vorrangig das Prinzip des Dezimalsystems, allgemeiner ein Positionssystem. Es hat folgende Kennzeichen: eine einheitliche Basis g aus der Menge der natürlichen Zahlen, unterschiedliche Ziffern für jede Zahl von 1 bis g-1 und eine spezielle Ziffer für Null.

Die Ziffern haben ein von ihrer Position abhängiges Gewicht (Wert): Die letzte (rechte) Ziffer hat das Gewicht 1, alle anderen Ziffern haben das g-fache Gewicht der rechts folgenden Ziffer. Eine Zahl k (gn-1 k < gn) ist darstellbar durch n Ziffern. Mit g = 10 haben wir das Dezimalsystem, mit g = 2 das Dualsystem.

Die Menge aller Wörter, die sich durch die Hintereinanderreihung endlich vieler, nicht notwendig verschiedener Zeichen aus einem vorgegebenen Alphabet A ergeben, wird mit A* (dem sogenannten freien Monoid über A) bezeichnet. Hierin ist auch das leere Wort enthalten, das aus keinem einzigen Alphabetzeichen besteht ( ist nur ein Symbol für ,,nichts"). Man bezeichnet nun jede Teilmenge L A* als Sprache über A.

Beispiel: Es ist {0, 1}* = {, 0, 1, 00, 01, 10, 11, 000, ...}.
L = {0, 1, 10, 11, 100, 101, ...} {0, 1}*, die Menge der Binärdarstellungen natürlicher Zahlen (mit der Null und ohne führende Nullen), ist eine Sprache über dem Alphabet {0, 1}.

Formale Sprachen

Die Syntax von künstlichen Sprachen wird durch sogenannte formale Sprachen über einem Alphabet beschrieben. Unter formalen Sprachen versteht man in der Informatik eine Sprache L zusammen mit einer Definitionsvorschrift, die konstruktiv ist. ,,Konstruktiv" bedeutet, daß die Definitionsvorschrift die Form einer sogenannten Grammatik hat, die L erzeugt, oder die Form einer Maschine, die L erkennt. Im folgenden wird zunächst ausführlich der in der Praxis wichtigere Ansatz des Spracherzeugens durch Grammatiken, später noch kurz der korrespondierende Ansatz des Spracherkennens durch Maschinen vorgestellt.

Zugehörige Aufgaben aus dem Aufgabenband: Aufgabe 1-8, Aufgabe 1-9.



[Top] [rückwärts] [vorwärts] [Inhalt] [Index]

Skriptum Informatik - eine konventionelle Einführung
von Hans-Jürgen Appelrath und Jochen Ludewig
Kontakt: medoc@informatik.uni-stuttgart.de
Version: 11.02.1999 Copyright © 1999, All rights reserved.