Diskussion:Warum jener mechanische Prozeß richtige Ergebnisse erzeugt (Code)

Aus Philo Wiki
Version vom 18. April 2008, 01:22 Uhr von Andyk (Diskussion | Beiträge) (Die Seite wurde neu angelegt: == Husserl wäre ein Informatiker geworden == Wenn ich das so lese, kann ich mir sehr gut vorstellen, wie Husserl in Überlegungen zum Phänomen 'Code' passt. Ich denke...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

Husserl wäre ein Informatiker geworden

Wenn ich das so lese, kann ich mir sehr gut vorstellen, wie Husserl in Überlegungen zum Phänomen 'Code' passt. Ich denke, er wäre fasziniert gewesen und hätte seine Überlegungen bestätigt gefunden in den Errungenschaften und Auseinandersetzungen über Algorithmen, Methoden und formalen Grundlagen in der Informatik.

Rechen-REGELN

Aus aktullem Anlass (ich besuche auch noch eine LV "Formale Grundlagen der Informatik") möchte ich eine formale Grammatik vorstellen, die es mittels Regeln ermöglichen soll, so etwas ähnliches wie eine Multiplikation zu bewerkstelligen. Beispiel: a*aaa=aaaa

In formalen Sprachen unterscheidet man zwischen Terminalsymbolen und Nicht-Terminalsymbolen:

  • Terminalsymbole stellen Symbole dar, die nicht mehr verändert werden können, also: Endresultate sind.
  • Nicht-Terminalsymbole wandelt man vermittels Regeln in Terminal- oder in andere Nicht-Terminalsymbole um.
  • Man beginnt mit einem Startsymbol (z.B.: S) das automatisch ein Nicht-Terminalsymbol ist.
  • Schlussendlich muss das entstandene "Wort" vollkommen aus Terminalsymbolen bestehen.

Die Herausforderung besteht darin, die richtigen Regeln (=Grammatik) für eine formal beschriebene Sprache zu finden. In meinem Beispiel lautet die Sprache:

L= a^{m} * a^{3n} = a^{m+3n} | m,n >= 1

(leider geht hier der MediaWiki-Math-Code nicht) Aber das bedeutet im Prinzip nur (hier kommt die Husserlsche Bedeutung von uneigentlichen Symbolen zum Tragen, wenn man ihren Umgang beherrscht) , dass das kleinste Wort der Sprache so aussieht: a*aaa=aaaa und der zweite Term (hier aaa) immer ein Vielfaches von 3 sein muss. Außerdem muss die Anzahl der 'a'-Symbole nach dem = der Summe der Anzahl der 'a'-Symbole vor dem = entsprechen. Kurzschreibweise: a*a³=a^4

Nun hat man sich die Regeln zu überlegen, die alle gültigen Wörter dieser Sprache produzieren kann. Ich präsentiere nun eine mögliche Lösung:

  • Die Menge der Terminalsymbole ist: {a,*,=}
  • Die Menge der Non-Terminalsymbole ist: {A,S,X}

Regeln:

  1. S --> aXa
  2. X --> aXa
  3. X --> *aaaAaaa
  4. A --> aaaAaaa
  5. A --> =

Zeichenmanipluation aufgrund von Regeln

Man startet immer mit dem StartSymbol und gibt danach an welche Regel man anwendet. Dementsprechend wird das Zeichen auf der linken Seite vom Pfeil mit der rechten Seite vom Pfeil ersetzt:

START: S Regel 1: aXa Regel 3: a*aaaAaaaa Regel 5: a*aaa=aaaa

Als Ergebnis haben wir das kleinste Wort der Sprache L: a*a³=a^4 Dieses Regelwerk kann man dem Computer beibringen und er kann zum Beispiel überprüfen, ob jemand richtig gerechnet hat, wenngleichauch die Rechenprozesse beim Menschen nicht nach diesen Regeln ablaufen, würde ich mal behaupten (und gerade das ist ja das Spannende daran).