Die seltsame Sprache zwischen Mensch und Computer

Wie bringt man einen Computer dazu, das zu tun, was man wünscht? Man formuliert alles in Programmiersprachen. Die abstrakten Befehle übersetzt der Computer in Einsen und Nullen. Informatiker Oscar Nierstrasz gab am Vortrag des Collegium generale einen Einblick in die Welt der Codes.

Von Bettina Jakob 30. Oktober 2009

Sokrates ist ein Mensch. Alle Menschen sind sterblich. Ist infolgedessen Sokrates sterblich? Ja, lautet die logische Antwort – auch für einen Computer, wenn man ihn erst mit den richtigen Fakten und Regeln zu deren Verarbeitung füttert. Diese berühmte Frage wurde in der Informatikerwelt als Beispiel genutzt, um zu zeigen, wie die Programmiersprache «Prolog» aus dem Jahr 1972 aufgebaut ist. Ein Computer versteht keine natürliche Sprache wie der Mensch sie zur Kommunikation nutzt, die Maschine kann nur formelle Sprachen interpretieren. Und genauso formell sieht die Konversation über Sokrates’ Sterblichkeit in dieser Programmiersprache aus:

mensch(sokrates).
sterblich(X) :- mensch(X).
?- sterblich(sokrates).
yes

Fragt man in diesem geschlossenen System nach der Sterblichkeit von Elvis, wird man ein «No» erhalten. «Elvis ist solange unsterblich, bis die Bedingungen so programmiert werden, dass sie auch Elvis als Menschen definieren», sagte Oscar Nierstrasz an seinem Vortrag im Rahmen Vorlesungsreihe des Collegium generale «Wovon man nicht sprechen kann, darüber muss man schweigen: Natürliche und formale Sprachen in den Wissenschaften.» Nierstrasz ist Informatiker und Professor am Institut für Informatik und angewandte Mathematik.


Muten kryptisch an: Die Codes der Programmiersprachen. (Bild: istock.com)

Von Nullen und Einsen

Eigentlich ist es ganz einfach – der Computer versteht nur 0 und 1. Alle Informationen, die ein Programmierer in die Maschine speist, werden vom Computer in dieses einfach binäre System von Einsen und Nullen umgewandelt. Damit nicht der Programmierer selbst unendlich viele 1 und 0 eingeben muss, braucht er die Programmiersprache, um dem Computer Befehle zu geben und diese auf einem hohen Abstraktionsniveau auszudrücken. Im Wesentlichen profitiert der Programmierer von diesem Zwischenschritt, welcher ihm erlaubt, die Computersprache zu verstehen und sie auch in nützlicher Zeit einzugeben. «Der erste Computer aus dem Jahr 1944 wurde noch mit Papercodes bedient, einer Befehlsprache auf Papierstreifen, die nur die wenigsten Menschen verstanden», erklärte Nierstrasz. Heute ermöglichen Programmiersprachen die Entwicklung der vielfältigsten, komplexesten und auch buntesten Anwendungen.

In Klassen eingeteilt

Programmiersprachen haben grundsätzlich das gleiche Ziel: «Aus abstrakten Modell sollen Konzepte und daraus Applikationen werden», wie Nierstrasz erklärte. Und zwar für die unterschiedlichsten Problemstellungen, was auch die verschiedenen Klassen unter den Programmiersprachen erklärt: Imperative Sprachen basieren auf einer Serie von Befehlen, die funktionale Programmiersprache arbeitet mit Funktionen, die einander ausführen, die logischen Sprachen – wie das eingangs erwähnte Prolog –jonglieren mit Fakten und Regeln auf deren Basis neue Fakten gefunden werden sollen. Die objekt-orientierten Programmiersprachen modellieren Anwendungen als Menge von Objekten, die untereinander kommunizieren.

Immer näher zum Nutzer

«Heute gibt es rund 8000 Programmiersprachen», so der Informatiker. Im Laufe der Zeit haben diese verschiedene Generationen durchlaufen – «und sie werden laufend weiterentwickelt, um immer näher an die Bedürfnisse der Nutzerin und des Nutzers zu kommen», so Oscar Nierstrasz. Und so lässt sich heute interaktiv ein virtuelles Männchen durch Google Streetview führen und uns Strassen und Häuser an jedem beliebigen Ort der Welt zeigen – während früher die Web-Seiten auf dem Bildschirm bewegungslos und starr waren.

Oben