Programmiersprache für linguistische Applikationen:

Comskee baut semantische Netze

14.12.1984

MÜNCHEN (mer) - Bei einer Programmiersprache für linguistische Applikationen sind mehrere, teils widerstrittige Aspekte zu berücksichtigen. DV-Probleme, die in der modernen Sprachwissenschaft behandelt werden, sind schwierig und reichen - wie etwa die Übersetzung natürlicher Sprachen - bis in den Bereich der künstlichen Intelligenz. Die zu verarbeitenden Daten haben oft ein überdurchschnittlich großes Volumen, müssen aber dennoch effizient und flexibel manipuliert werden können. Vor allem nicht-deterministische Algorithmen verlangen nach assoziativen, textbezogenen Zugriffsmethoden.

Nach einer Analyse der Programmierungsbedürfnisse von Anwendern der Sprachdatenverarbeitung wurde die Sprache "Comskee" im Sonderforschungsbereich 100 "Elektronische Sprachforschung" an der Universität des Saarlandes entwickelt und ist seit 1978 im Einsatz. Die Portabilität der Comskee-Programme auf VAX-Rechner und 16-Bit-Mikros soll ab 1985 möglich sein, und ist derzeit zwischen Siemens BS2000 und Telefunken TR440/BS3 gegeben.

Comskee gehört von der Art seiner Kontrollstrukturen her zu den ALGOL-artigen Programmiersprachen wie auch beispielsweise Pascal und PL/1; allerdings gegenüber den genannten Sprachen in erweiterter und verbesserter Form. Dazu gehören mehrfach kontrollierte Loops, Durchmusterungsschleifen oder selbstbegrenzende Kontrollstrukturen. Das Hauptgewicht der Sprache liegt aber auf den Datentypen und den zugehörigen Operationen.

Hier ist zuerst der Datentyp "string" zu erwähnen, der für dynamisch lange Zeichenkettenreihen steht. Der Comskee-Programmierer braucht sich bei der Deklaration einer Variablen vom Typ "string" nicht um ihre spätere Länge zu kümmern; diese ist nur durch den zur Verfügung stehenden Speicherplatz begrenzt.

Interessant sind auch die Operationen, mit denen eine Stringvariable oder Ausdrücke vom Typ "string" bearbeitet werden können. Besondere Beachtung verdient hierbei der Teilstringzugriff, der sowohl lesend als auch schreibend geschehen kann.

Der zu ersetzende Teilstring wird dynamisch behandelt. Der Austausch eines kleineren durch einen größeren Teilstring ist ohne weiteres möglich - oder auch umgekehrt. Ein zweiter Aspekt ist der kontextuelle Zugriff auf Strings. Kontextuelle Teilstringersetzung beziehungsweise -auswahl und Pattern-Replace-Mechanismen sind in Comskee integriert.

Auch die Dateibearbeitung, die - im Gegensatz zu anderen Programmiersprachen - voll in die Syntax integriert ist, verbindet wieder den Datentyp "string" mit dem Zugriff auf Massenspeicher. Ein Vorteil von Comskee liegt darin, daß auf eine eigene Formatsteuerung wegen der Stringmanipulationsmechanismen verzichtet werden kann. Das erleichtert zum einen das Erlernen der Sprache und hält sie andererseits auch von überflüssigem syntaktischem Ballast frei.

Die Comskee-"Wörterbücher" stellen ein Sprachmittel dar, mit dem sich von einfachen Wörterbüchern über semantische Netze bis hin zu Datenbanken alles darstellen läßt, was durch eine einfache File-Struktur nicht mehr erreichbar ist.

Ein weiterer, ebenfalls unter dem Gesichtspunkt der Datenbankanwendungen wichtiger Datentyp ist der "Set". Anders als zum Beispiel die Powersets von Pascal sind Sets in Comskee voll dynamisch, das heißt, ihre Größe wird noch nicht einmal zum Deklarationszeitpunkt festgelegt.

Die Elemente eines Comskee-Sets sind immer Strings. An Operationen stehen neben der Zuweisung an eine Mengenliste die binären Operationen Vereinigung, Durchschnitt, Mengen-Differenz und die Relationen "gleich", "Teilmenge" und "Element" zur Verfügung. Des weiteren gibt es eine Durchmusterungsschleife, die in der allgemeinen Syntax für Schleifenstrukturen integriert ist. Mit diesem Loop ist es möglich, die Elemente eines Comskee-Sets sequentiell und in der lexikographischen Reihenfolge zu bearbeiten.

Vergleich zwischen Comskee und Pascal/R

Wie bei Comskee, besteht auch bei Pascal/R das Hauptanliegen darin, Datenbankfunktionen in eine höhere Programmiersprache zu integrieren. Allerdings ist ein Unterschied in der Zielrichtung zu erkennen: Bei Pascal/R stand der Datenbankaspekt eindeutig im Vordergrund, während dieser bei Comskee mehr ein Nebenprodukt ist, das sich bei der Einführung des für die linguistische Datenverarbeitung relevanten Datentyps "Wörterbuch" mit ergab. Allerdings kommt dies nicht von ungefähr, da ja viele linguistische Anwendungen sehr nahe mit Datenbankanwendungen verwandt sind.

Bei den einzelnen Datenbankfunktionen ist zu bemerken, daß Pascal/R wesentlich mehr bereits in die Sprache eingebaute Funktionen enthält, so etwa das Mischen von Relationen oder den inhaltlich selektiven Zugriff. Solche Operationen müssen bei Comskee in Schleifen ausprogrammiert werden. Das strenge Typkonzept haben - in unterschiedlicher Fassung - beide Sprachen; allerdings hat sich in vielen Anwendungen von Comskee gezeigt, daß die Daten meist so wenig beziehungsweise so komplex strukturiert sind, daß auf die Strukturierungsmöglichkeiten, die die Record-Struktur bietet, zugunsten der flexibleren Strukturierung von Strings mittels Trennzeichen verzichtet wird. Hier werden die Vorteile von Comskee deutlich: In Pascal mit seinen statischen Variablengrößen ist es schwierig, so dynamische Daten, wie es zum Beispiel Textstücke sind, in einer Variablen oder in einem Record unterzubringen.

Comskee-Highlights

- Modularer Programmaufbau mit Kontrollstrukturen, Blöcken, Prozeduren und Funktionen sowie Modulen. Auf jeder Ebene gilt das Schachtelungsprinzip.

- Dynamische Datentypen wie Strings (Zeichenketten), Sentences (Listen von Strings), Sets (Mengen von Strings), Flexible Arrays (durch Strings adressierbare Listen), Files (Dateien, Zugriffe sequentiell und durch indizierte Variable).

Der Platzbedarf von Variablen muß weder festgelegt noch beschränkt werden. Zu jeder Zeit können die Werte an beliebiger Stelle verkürzt oder verlängert werden.

- Angepaßte Operationen und Zugriffsmechanismen gibt es zu allen Datentypen (auch zu den statischen Numbers und Bits).

In Ausdrücken und als Index sind vielfältige Verknüpfungsformen möglich. Auch Konstanten sowie Teile von Strings, Sentences und Bitlisten können verwendet werden.

- Die vorhandenen Datenstruktur- und Operationskonzepte erlauben den Einsatz von Comskee als Datenbankgenerator.

- Die erzeugten Datenbanken können die Größe des gesamten verfügbaren Plattenspeicherplatzes einnehmen.

- Es wird nur der nötige Speicherplatz beansprucht.

- Durch modifizierte B-BaumTechnik sehr schneller Zugriff.

- Logische Mengenoperationen sind integriert (zum Beispiel für Retrievalfunktionen).

- Der erzeugte Maschinencode kann als "Shared Code" erzeugt werden.

- Die von Comskee erzeugten Programme und Datenbanken können unter der Steuerung des universellen Transaktionsmonitors UTM ablaufen.

- Es werden keine größeren Programmier- oder Maschinenkenntnisse vorausgesetzt. Die Realisierung von komplexen Problemen kann von Anwendern (Linguisten, Textverarbeitern, Datenbankadministratoren) selbst in Angriff genommen werden.