Semantische Lücke

Die Semantische Lücke beschreibt den semantischen, also bedeutungsbezogenen Unterschied zwischen zwei Beschreibungen eines Objekts, der dadurch entsteht, dass verschiedene Repräsentationsformen (Sprachen) gewählt werden. Dieser in der Informatik verwendete Begriff wird im Allgemeinen dort deutlich, wo ein Abbild des realen Lebens in eine formale, maschinell verarbeitbare Repräsentation übertragen werden muss [1] [2].

Präziser bezeichnet der Begriff den Unterschied zwischen Formulierung von Kontextwissen in einer mächtigen Sprache (z. B. Natürliche Sprache) und dessen formaler und automatisiert reproduzierbaren Repräsentation in einer weniger mächtigen formalen Sprache (z. B. Programmiersprache). In der natürlichen Sprache lassen sich Zusammenhänge ausdrücken, die in einer formalen Sprache nicht auswertbar sind. Aus diesem Grund ist der Unterschied der Ausdrucksmächtigkeit auch nicht formal beschreibbar.

Die Church-Turing-These stellt dazu fest, dass mit einer Maschine genau die formalen Operationen durchführbar sind, die auch ein rechnender Mensch durchführt. Allerdings ist die Auswahl der notwendigen Operationen zur korrekten Durchführung einer Berechnung nicht vollständig durch ein solches formales Regelwerk sichergestellt. Ist die zugrundeliegende Aufgabe nämlich nicht uneingeschränkt berechenbar, liefert ein formales Vorgehen entweder kein oder nur ein unvollständiges Ergebnis, beziehungsweise die Regelanwendung terminiert nicht. Im Gegensatz dazu ist es einem Menschen möglich, derartige Aufgaben, wie das Halteproblem, zu formulieren und zu erkennen.

Diese Diskrepanz der Wissensmodellierung ergibt sich aus der kontextbedingten, nicht entscheidbaren Mehrdeutigkeit gesprochener Sprache, die in der Chomsky-Hierarchie als erweiterter Kontext bezeichnet wird. Praktisch einsetzbare Programme, die Wissen automatisiert reproduzieren, sind hingegen auf Eindeutigkeit und Entscheidbarkeit angewiesen. Aus diesem Grund ist die semantische Lücke vermutlich mit den aktuell zur Verfügung stehenden Mitteln nie vollständig zu schließen. Vielmehr muss für jede Anwendung eine Abstraktion von den elementaren Low-Level-Informationen und Werkzeugen hin zum High-Level-Expertenwissen über den Anwendungskontext entwickelt werden. Dies entspricht der Programmierung und Parametrierung eines Algorithmus.

Formale Sprachen in der Praxis

In der Praxis werden Anwendungen mit Programmiersprachen formalisiert. Die Basis der aktuell gängigen Von-Neumann-Architektur bildet die Boolesche Algebra, in der alle Operationen ausgedrückt werden, die überhaupt mit unseren Rechnern möglich sind. Hinzu kommen Mechanismen zur Speicherung der binären Daten und zur Festlegung der Abarbeitungsreihenfolge, was einer Turingmaschine entspricht. Dieses unterste Niveau ist durch das aktuell technisch Machbare vorgegeben, etwas anders verhielte es sich z. B. mit dem Quantenrechner. Auf einer solchen Turingmaschine lassen sich komplexe Algorithmen nur schwer, und moderne Anwendungen wie Betriebssysteme oder Textverarbeitungen praktisch nicht mehr implementieren. Daher werden Werkzeuge zur Erleichterung der Arbeit in Form von Programmiersprachen benötigt. Die erste Stufe bilden dabei Maschinen- bzw. Assemblersprachen, die z. B. Arithmetische, und Speicheroperationen in Befehlen kombinieren und lesbar bereitstellen. In höheren Programmiersprachen werden nun immer komplexere Abfolgen dieser low-level Operationen zu immer leichter verständlichen Befehlen zusammengefasst. Da diese Befehle jedoch wiederum nur auf einem Von-Neumann-Rechner ausführbar sind, bildet die Turingmaschine nach wie vor das Limit des Machbaren, egal wie komplex die höhere Programmiersprache scheinbar ist. Das heißt, die dazu üblichen Werkzeuge Compiler oder Interpreter alleine schließen die semantische Lücke nicht.

In anderen Sprachen
English: Semantic gap
português: Fosso semântico