Benutzer:Realgeizt/Cyberplatonismus/Anmerkungen

Aus Philo Wiki
< Benutzer:Realgeizt
Version vom 20. Oktober 2010, 22:31 Uhr von Realgeizt (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „==„Platon – Wittgenstein – Programmiersprachen – Platon“ – Anmerkungen== (Den Ursprungstext, auf den hier Bezug genommen wird, findet man unter [http:…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

„Platon – Wittgenstein – Programmiersprachen – Platon“ – Anmerkungen

(Den Ursprungstext, auf den hier Bezug genommen wird, findet man unter Benutzer:Yadseut/Cyberplatonismus)

Dieser Text möchte im ersten Abschnitt eine Verdeutlichung und im zweiten eine Entgegnung auf die Darlegungen von Yadseut bieten.


Über die implizite Verfasstheit sprachlichen Wissens

In Übereinstimmung mit den Bemerkungen Yadseuts möchte ich mit einem Beispiel verdeutlichen, dass ein Sprecher nicht über explizites sprachliches Wissen verfügen muss.

Platons Sokrates lässt als Wissen nur das gelten, was auch expliziert werden kann, indem er sagt:

„Und nicht wahr, was wir wissen, davon können wir doch auch aussprechen, was es ist?“
—(Platon: Sämtliche Werke. Band 1, Berlin [1940], S. 188)

Laches aber weiß, dass er weiß, nur eben nicht, was er weiß, und bezeugt:

„[E]s hat mich jetzt ein gewisser Ehrgeiz auf das Gesagte erfaßt, und ich bin in Wahrheit ganz ärgerlich, daß ich so gar nicht imstande bin, meine Gedanken auszusprechen. Denn in Gedanken meine ich, schon den Begriff von der Tapferkeit zu haben; aber ich weiß nicht, wie sie mir soeben entschwunden ist, so daß ich sie mit Worten nicht fassen und sagen kann, was sie ist.“
—(Platon: Sämtliche Werke. Band 1, Berlin [1940], S. 194)

Die Unmöglichkeit der Explikation bedeutet aber eben nur, dass er nicht bewusst auf das Wissen zugreifen kann – im mentalen Lexikon muss es trotzdem gespeichert sein.

Ich bediene mich eines Vergleichs aus der Morphologie: Jeder von uns kann problemlos beliebige Verben ins Perfekt setzen, aber vermutlich werden die wenigsten die genauen Regeln, nach denen sie dabei vorgehen, angeben können. Nehmen wir etwa die Anwendung des Präfix ge- im Perfektpartizip: Jeder weiß, es heißt (der Akzent markiert die Betonung):

  • (a) ich káufe – ich habe gekauft; aber
  • (b) ich vertréibe – ich habe vertrieben

Warum aber erscheint einmal das ge- und einmal nicht? Der Grund liegt in folgender Regel: Ist der Präsensstamm auf der ersten Silbe betont, so wird beim Perfektpartizip das ge- präfigiert (a), ansonsten bleibt es aus (b). Den Einwand, dass diese Regel vielleicht bloß beispielhaft erlernt wurde, kann man leicht entkräften, indem man Fantasiewörter erfindet, und diese flektiert / flektieren lässt:

  • (a) ich gúnke – ich habe gegúnkt (und nicht: ich habe *gunkt)
  • (b) ich vergúnke – ich habe vergúnkt (und nicht: ich habe *vergegunkt, oder gar: ich habe *gevergunkt)

Manch ein sprachbewusster Leser wird sich nun denken: „Klar kenne ich diese Regel“, allerdings widerlegt das allein noch nicht die aufgestellte These. Man wird zugeben müssen, dass es muttersprachliche Sprecher gibt, die diese Regel nicht kennen (sprich: nennen können), aber trotzdem gleichermaßen korrekte Perfektpartizipien bilden können. Und die Möglichkeit solcher Sprecher zeigt die Möglichkeit impliziter, regelhafter Verfasstheit sprachlichen Wissens.


Computersprache und natürliche Sprache

Den Vergleich mit Programmiersprachen hingegen halte ich aus mehreren Gründen für etwas problematisch:


Der Vorgang bei der Programmierung, dass der Code einer höheren Programmiersprache vom Compiler (über Zwischenschritte) in eine Binärform (also eine Folge von 0 und 1) übersetzt wird, sollte eher in Analogie zur menschlichen Kommunikation überhaupt gesehen werden: Diese bedient sich des biologischen Sprachapparats, der wiederum auf physikalischer Grundlage zur Kommunikation eingesetzt wird. Jede Abstraktionsebene baut auf der vorherigen auf und verdeckt die spezifischen Details der darunter liegenden Ebenen.

Man spricht zwar für gewöhnlich von der Übersetzung von Hochsprache in Maschinencode, diesen Vorgang darf man sich allerdings nicht allzu sehr wie die natürlichsprachlichen Übersetzung vorstellen. In jeder natürlichen Sprachen gibt es (abgesehen von basalen strukturellen Unterschieden) ein ganz eigenes Lexikon, das nicht 1:1 dem System anderer Sprachen entspricht. Saussure nennt dazu folgendes Beispiel:

„[D]as franz. mouton kann dieselbe Bedeutung haben wie das engl. sheep, aber nicht denselben Wert, und das aus mancherlei Gründen, besonders deshalb, weil, wenn von einem Stück Fleisch die Rede ist, das zubereitet und auf den Tisch gebracht wird, das Englische mutton und nicht sheep sagt. Der Unterschied des Wertes zwischen sheep und mouton kommt daher, weil das erstere neben sich ein zweites Glied hat, was bei dem franz. Wort nicht der Fall ist.“
—(Ferdinand de Saussure: „Grundfragen der allgemeinen Sprachwissenschaft“. Übers. von Herman Lommel. 2. Aufl. Berlin: de Gruyter 1967 [1916], S. 138.)

Das ist auch mitunter ein Grund, warum Übersetzungen eine so große Herausforderung darstellen, und manche Linguisten und Philosophen sogar von der prinzipiellen sprachlichen Unübersetzbarkeit sprechen (vgl. sprachlicher Relativismus oder in weiterer Folge auch die Sapir-Whorf-Hypothese).


Ein Compiler hingegen funktioniert nur deswegen so reibungslos, weil jedem „Wort“ aus der höheren Sprache ein exakt definierter Wert in der niedrigeren Sprache zukommt. Man kann sich hier auch einfach die Übersetzung vom Dezimalsystem ins Binärsystem vorstellen. Zahlen der beiden Systeme sind genau deswegen so leicht austauschbar (übersetzbar), weil eben genau feststeht, dass 15 (dezimal) immer 1111 (binär) bedeutet.

Nehmen wir einmal eine abstrakte Funktion, wie sie in jeder höheren Programmiersprache gefunden werden kann, z. B. sort(): Eine Funktion, die eine Eingabe sortiert und in irgendeiner Weise wieder ausgibt. Wenn ich als Programmierer eine solche Funktion bereitgestellt bekomme, kann ich sie verwenden, ohne wissen zu müssen, wie sie genau implementiert wurde. Ob also diese Sortierungsfunktion „under the hood“ diesen oder jenen Algorithmus verwendet, kann mir für dessen Funktionalität im Wesentlichen egal sein. Eines ist aber zu beachten: Man muss den genauen Wert der Funktion kennen (Wert ist hier im Saussureschen Sinn gemeint, nicht der Rückgabewert im Programm), d. h. man muss genau wissen, in welchen Situationen diese Funktion eingesetzt werden kann und in welchen nicht. In dieser Hinsicht verhalten sich Computersprachen sogar ganz konträr zur menschlichen Sprache, denn sie erlauben keine ungenaue Ausdrucksweise, kein ungefähres Wissen, was dieses oder jenes „Wort“ heißen könnte. Verwendet man ein „Wort“ in einem Programm auch nur ein bisschen falsch, so kann es zu den schlimmsten Programmfehlern kommen, weil der Computer ganz genau so reagiert, wie man es ihm sagt. Um bei dem Beispiel der Sortierfunktion zu bleiben: Wenn ich nicht weiß, dass diese Funktion etwa nur auf Zahlen definiert ist, und versuche, damit eine Liste von Worten zu sortieren, so werde ich in irgendeiner Weise einen Fehler hervorrufen. Der Programmierfehler könnte sich in anderen Szenarien auch viel subtiler äußern, sodass das Programm, statt einen Fehler auszugeben, sich bloß auf undurchsichtige und unerwünschte Weise verhält. Das ist auch der Grund, warum bei der Programmierung so viel Wert auf genau Spezifikation und Dokumentation (Kommentierung) der einzelnen Teile Wert gelegt wird: Damit es absolut keine Unschärfen gibt.


Allerdings ist diese Stringenz in der Praxis nicht immer durchgehalten. Die Kommunikation verschiedener Maschinen untereinander im Zuge des Internet hat eine best practice notwendig gemacht, die sich „robustness principle“ nennt:

[B]e conservative in what you do, be liberal in what you accept from others.
—(RFC 761: Transmission Control Protocol. Jon Postel (Hrsg.), Jänner 1980.)

Das Prinzip ist eine Folge der Problematik, mit allerlei nicht notwendigerweise korrekten inputs konfrontiert zu werden (d.h. ein anderer Computer hält sich gewissermaßen nicht genau an das vorgegebene Protokoll, an die etablierten „Sitten“). Es enthält aber nicht nur den Hinweis, großzügig bei der Interpretation des input zu sein, sondern es fordert auch, selber unzweideutig und klar im output zu sein, worin die Wichtigkeit der Vermeidung von Unschärfe in der maschinellen Kommunikation zum Ausdruck gebracht wird.

Der Vergleich zwischen Computersprache und natürlicher Sprache lässt mich schließlich an ein Zitat von Charles Babbage denken, der mit seiner Analytical Engine eine Vorstufe des modernen Computers entwickelt hat. Neugierig auf die Funktionsweise seiner Maschine, wurde er von Außenstehenden darüber befragt, und er selber berichtete später:

On two occasions I have been asked,—"Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" ... I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
—(Charles Babbage: Passages from the Life of a Philosopher. Longman and Co., S. 67)

Diese Zitat wird oft in humoristischem Zusammenhang gebracht, denn natürlich vermag seine Maschine keine Wunder zu vollbringen. Wenn man sie falsch programmiert, wird sie auch falsche Ergebnisse produzieren. Man nennt dieses Prinzip „Garbage In, Garbage Out“. Aber im Zusammenhang mit unserer Diskussion kann dieses Zitat vielleicht den fundamentalen Unterschied zwischen Computersprachen und natürlichen Sprachen verdeutlichen: In der menschlichen Kommunikation ist es nicht immer notwendig, dass jeder Begriff genau definiert ist, und dass alle Sprecher in ihren Definitionen exakt übereinkommen – bei Computern schon.

"I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question", sagte Babbage. Aber vielleicht ist es ja der Transfer menschlicher Intelligenz und Interpretationsfähigkeit auf seine Analytical Engine, die zu dieser scheinbar widersinnigen Erwartungshaltung geführt hat.