Freitag, 9. Juni 2017

Duality of Syntax

Es gibt ein Konzept, das meiner Meinung nach zu wenig Beachtung findet und ich will mal einige Gedanken dazu hier mal festhalten. Dieses Konzept findet so wenig Beachtung, dass es nicht mal einen festen Begriff dafür gibt. Ich nenne es Duality of Syntax, diese Bezeichnung habe ich aus dem "Let over Lambda" Buch, es ist ein exzelentes Buch über Programmierkunst. In Deutsch könnte man dieses Konzept also "Zweideutigkeit" nennen, dieser Begriff passt aber nicht wirklich, da das Konzept sehr viel mehr umfasst als blosse Zweideutigkeiten.
Bei Duality of Syntax geht es darum, dass ein Ausdruck, also eine Beschreibung oder Handlungsanweisung, versetzt in ein anderes Kontext eine ganz andere Bedeutung bekommt. Klingt einfach und das ist auch zentrall in sehr vielen Bereichen:
  • Natürliche Sprache
    Hier ist es am weitesten Entwickelt, da es eine ganz natürliche Sache für einen Menschen ist. Trotzdem gab es Versuche eindeutige Sprachen zu entwickelt, bekannter Beispiel ist Lojban, die praktisch frei von Mehrdeutigkeiten sind. Diese Versuche sind bisher immer fehlgeschlagen, da man folgende Bereiche somit in Endeffekt völlig ausschaltet:
    • Humor
      Humor basiert immer auf Mehrdeutigkeiten, ohne Mehrdeutigkeiten kann man keinen Witz erzählen und umgekehrt je mehr unterschiedlicher Bedeutungen eine Aussage hat, desto witziger klingt diese.
    • Denken, Lernen und Studieren
      Ein mensch denkt, in dem er Aussagen, aus in einem Kontext das ihm vertraut in einen Kontext bringt, das ihm neu ist. Diese Übertragung von Aussagen ist nachdenken, so erfährt man etwas über bisher unbekannte Themen. Es ist für einen Menschen unmöglich etwas zu erlernen, ohne diese Parallelen zu bekanntem zu ziehen. Es wird aber selten erwähnt, dass man in Wirklichkeit dabei immer Aussagen von einem Kontext in das andere versetzt, wie genau dieser Prozess funktioniert wird auch weder in der Schule, noch in der Universität genau angeschaut. Es füllt sich für alle irgend wie richtig an, aber wirklich gut damit umgehen können nur die wenigsten, der Rest nennen es dann "Talent" oder ähnlich.
    • Kreativität und Erfindung
      Man erfindet Dinge, in dem man bekannte Aussagen oder Vorgänge in ein völlig neues Kontext bringt, oft in das Entegegengesetzte. Auch in der Kunst interessiert die eindeutige Information niemanden, also z.B. wer konkrett auf dem Bild ist, da diese sehr wenig Wert hat. Erst wenn Aussage oder Information übertragbar sind, die Kunst irgend wie abstrakt ist, man es als zumindest in die eigene Fantasieweld übertagen kann, ist es schön. Natürlich hat jeder Mensch eigene Fantasiewelt, so eine Aussage muss also universal übertragbar sein.
    • Werbung
      In der Werbung wird sehr viel mit Mehrdeutigkeiten gearbeitet, weil man solche Aussagen leichter merken kann, oft in Verbindung mit Dingen bringt, die überhaupt nichts damit zutun haben, die sind daswegen auch Witzig und es fühlt sich auch sehr natürlich an. Yes! We can!
  • Literatur
    Hier wird Duality of Syntax sehr aktiv ausgenutzt, oft sogar unwissend. In der Literatur kann ein Buch wirklich gut sein, nur wenn es in einfachen verständlichen Sätzen geschrieben ist, weil diese Sätze leichter in die Fantasie- und Verständnisswelt eines Lesers übertragbar sind. Der Leser hat dann das starke Gefühl, dass das was er liest, genau dass ist, was der Author schreiben wollte und sich vorgestellt hat. Die Sätze müssen aber übertragbar sein, wenn die Sätze eindeutig einem Kontext zugeordnet sind, funktioniert das nicht. Das Buch, dass dieses Konzept auf die Spitze treibt, ist natürlich die Bibbel, da ist jede Aussage klar und doch so mehrdeutig wie es nur geht. Wenn man selbt über Bücher nachdekt, die einen sehr bewegt haben, dann wird man dieses Konzept dort gleich sehen. Es ist einem meistens nicht klar, das bei so einem Buch die Fantasie und das Gefühl den man hatte ganz andere sind, als das was der Author im Sinne hatte als er es schrieb. Nur durch die Übertragbarkeit der Aussagen wird das Buch gut. Unterschiedliche Sprachen eignen sich auch unterschiedlich für Duality of Syntax und zu hohe Eignung ist kann negativ sein, weil die Verbindung zum Kontext zu schwach wird und die Aussagen am Ende keinen Inhalt mehr haben. Auch z.B. Steven King hat in seinen Büchern dieses Konzept sehr aktiv genutzt, weil beim Leser in der Fantasie immer mehr neues entsteht und diese Fantasie durch einfache und dort rein übertragbare Sätze immer weiter verstärkt wird, das kann man in seinem Buch "On writting" nachlesen.

    Was auch interessant ist, dass die Übertragbarkeit der Sätze durch eine Übersetzung stark verändert wird, manchmal ist die Übersetzung dadurch sogar besser, aber meistens viel schlechter, weil erstens der Übersetzer die Übertragbarkeit meistens einschränkt, durch den Versuch möglichst authentisch zu übersetzen durch geben eines klaren Kontextes, und zweitens unterschiedliche Sprachen habben ganz unterschiebliche Übertragungsmöglichkeiten. Seltsamerweise wissen die wenigsten Übersetzer von diesem Konzept und auch wenn die das wissen, dann ist eine Übersetzung mit Berücksichtigung davon einfach zu aufwendig.
  • Informatik
    Interessanter Weise wird dieses Konzept in der Informatik völlig ignoriert, das sieht man z.B. daran, dass es praktisch keine Programmiersprachen gibt, die dieses Konzept vollständig unterstützen. Tatsächlich kenne ich nur zwei Programmiersprachen die das wirklich können, und zwar Common Lisp (auch andere Lisp Dialekte) und Prolog. Alle anderen Sprache unterstützen nur ganz rudimentäre Einzelaspekte dieses Konzepts, z.B. durch Objektorientierung mit virtuellen Funktionen (C++) oder durch generische Interfaces (Go). Wenn ich mir recht überlege auch Forth erlaubt Duality of Syntax, obwohl es eigentlich überhaupt keine Unterstützung dafür hat, in gewissem Sinne ist Programmiersprache Forth an sich ein mehrdeutiges Missverständniss. 
    Das einzige Programmierbuch das ich kenne, dass dieses Konzept wirklich anspricht, ist Let over Lambda, natürlich ist das Buch auch über Common Lisp, sonst könnte man ja nicht mal zeigen, dass dieses Konzept funktioniert. Dabei geht es darum, dass man Code unmodifiziert in unterschiedlichen Kontexten benutzen kann, dieser Code tut dann auch jedes mal etwas ganz anderes, ist aber der syntaktisch der selbe Code. Das ist anders als bei Funktionen, die nur auf anderen Daten arbeiten können, aber immer das selbe tun. Hier tut der Code auch tatsächtlich etwas anderes. Ein sehr primitives Beispiel stellen die Left-Side-Expressions oder LValues dar, manche Sprachen erlauben das, z.B. Perl hat LValues und man kann den Ausdruck substr($s, 2, 5) sowohl im lesendem Kontext als auch im schreibendem Kontext, also rechts und links von einer Zuweisung benutzen. Dabei ist der Ausdruck substr($s, 2, 5) exakt der sebe, aber das Ergebniss ist prinzipiell anders. Leider kann man solche Ausdrücke nicht überall schreiben, man kann damit nicht experementieren und der Nutzen von diesen Ausdrücken ist sehr limitiert.
  • Games
    In Spielen überträgt man das was man ausserhalb der Spiele kennt in das Spiel hinein, also man sucht vertrautes und verständliches, aber auch interessantes. Bei Duality of Syntax in Spielen geht es um die Handlungen die man im Spiel machen kann und Versuch diese Dinge in verschiedenen Situationen im Spiel auszuführen, also z.B. beistimmten Gegenstand in unterschiedlichsten Bereichen zu nutzen, oder in einem Fighting Game eine Kombination aus Bewegungen in unterschiedlichen Situationen auszuführen. Bei einem gutem Spiel kann man die selben Aktionen in unterschiedlichsten Situationen auszuführen und man bekommt ganz unterschiedliche, ja manchmal sogar entgegengesetzte Ergebnisse. Und bei einem sehr gutem Spiel kann man dabei Neues entdecken, auch wenn die Entwickler es überhaupt nicht vorgesehen haben. Prominentes Beispiel dazu zind Combos in Fighting Games, man hat versucht die Eingabe etwas zu vereinfachen und die Spieler haben herausgefunden, dass man dadurch mehrere Aktionen kombinieren kann, bei manchen Aktionen ging das, bei anderen nicht. Die Entwickler haben es aber nicht von sich aus so entwickelt, viele nannten Kombos auch Bugs, weil das Spiel auf einer Art funktioniert, die die Entwickler nicht vorhergesehen haben. Das ist Duality of Syntax, man hat eine ganz klare Abfolge von Aktionen die man machen kann in ein Kontext gebracht, in dem man davon einen Vorteil hat, auch wenn dies so nicht gedacht war. Und es macht auch einfach Spaß, Aktionsabfolgen in verschiedenen Situationen auszuprobieren und dabei unerwartete Ergebnisse zu bekommen.

Duality of Syntax?

Neues und interessantes zu finden und zu erlenen und dabei Spaß zu haben ist im Endeffekt nur duch effektive Nutzung von Duality of Syntax möglich. Warum lernt man das nicht in der Schule? Warum gibt es keine Bücher darüber? Warum unterstützen es sogut wie keine Programmiersprachen? Fragen über Fragen
Aber man kann im Endeffekt daraus eine sehr nützliche Regel ableiten: nur mit Humor ist etwas vollständig!
Wenn man in der Sprache die man spricht oder in der man programmiert, dem Spiel den man spielt, dem Sport den man treibt, dem Stoff den man lernt und sonst in der Aktivität die man tut keinen Witz machen kann, wird Duality of Syntax nicht gut genug unterstützt und die Sache ist nicht entwicklungsfähig, oder man hat sie nicht gut genug verstanden. Ziel muss es sein, in allem was man tut, einen Spaß machen zu können, denn wenn es nicht geht, ist es eine Einbahnstraße, man kann sich damit dann nicht weiter entwickeln. Humor ist eine gute Möglichkeit zu messen, wie gut man Aussagen übertragen kann und somit ob etwas Potential zur Weiterentwicklung hat. Auch übertriebene Übertragbarkeit sieht man sofort, da es dann zu weit von jeglichem Kontext weg ist und somit auch nicht mehr witzig. Wichtig ist nur zu verstehen, dass man nicht über die Sache, sondern mit Hilfe der Sache lacht, die Sache an sich in ihrem eigenem Universum muss mehrdeutig und lustig sein.

Keine Kommentare:

Kommentar veröffentlichen