Alan Kay, Ivan Suther­land und viele weit­ere Forsch­er in den 60iger und 70iger Jahren sahen in dem Com­put­er die Chance, die geistig-konzeptuelle Arbeit des Men­schen und seine Kreativ­ität zu unter­stützen. Dafür ersan­nen sie viele Vorschläge für ihrer Ansicht nach hil­fre­iche Com­put­er­sys­teme.

Bei bei­den spielte das Konzept der Objek­te eine wesentliche Rolle. War es bei Alan Kay mehr die Vorstel­lung, Objek­te als recht unab­hängige Dinge zu denken, die sich Nachricht­en zusenden und darauf in ihrer eige­nen Weise reagieren, präsen­tierte Ivan Suther­land mit­tels des von ihm entwick­el­ten Sys­tems Sketch­pad die unmit­tel­bare Inter­ak­tion mit Objek­ten am Bild­schirm via Licht­grif­fel.

Bei­den ist der ein­fache und in gewiss­er Weise direk­te Umgang mit Objek­ten gemein. Im Sys­tem Smalltalk geschieht dies mit­tels ein­er sehr ein­fachen Pro­gram­mier­sprache — Smalltalk. Da das Sys­tem Objek­te für Graphik, Dateien und vieles mehr anbi­etet ist es sehr ein­fach, eine sim­ple Sim­u­la­tion, eine Berech­nung oder gar einen Edi­tor zu schreiben. Der Anwen­der muss nur mit­tels der Sprache Smalltalk diese Objek­te über Nachricht­en ver­net­zen. Der gut bevölk­erte “See” der Objek­te im Sys­tem bietet auch heute noch viele Möglichkeit­en — die Erschaf­fung neuer Objek­te inklu­sive.

Im Falle des Sketch­pad von Ivan Suther­land war das Medi­um die graphis­che Repräsen­ta­tion von Objek­ten wie Punk­te und Lin­ien, die auf dem Bild­schirm erschienen. Daraus kon­nten geometrische Struk­turen erstellt wer­den, indem diese Punk­te und Lin­ien mit dem Licht­grif­fel ange­sprochen und zusam­menge­fügt wer­den kon­nten. Diesen so erstell­ten Objek­ten kon­nte der Anwen­der Randbe­din­gun­gen (“Con­straints”) zuord­nen, um deren Erfül­lung diese Objek­te sich selb­st küm­merten. Solche geometrischen Objek­te waren beliebig skalier­bar und waren Bausteine für kom­plexere Struk­turen.

Heutige Soft­ware stellt sich oft als eine über­bor­dende Menge von Menüs und Optio­nen dar. Kon­textmenüs und Modi zwin­gen den Anwen­der auf eine Logik, die die Autorin­nen und Autoren eines Sys­tems als sin­nvoll erachteten. Mit Glück wurde dafür die zugrun­deliegende Prob­lematik bzw. das The­menge­bi­et beachtet. Ein pos­i­tives Beispiel sind Game-Engines, die heute alle mehr oder weniger der­sel­ben Logik fol­gen.

Natür­lich ist die Diskus­sion bzgl. graphis­ch­er Benutze­r­ober­flächen vs. Kom­man­dozeile nicht neu — und ich kann mich an Zeit­en erin­nern, als viele Kol­legin­nen und Kol­le­gen einen Emacs oder Vim jeglichen “mod­er­nen” Maus-und-Klick-Edi­toren den Vorzug gaben. Aber mir geht es hier nicht um Bedi­enungskom­fort — es geht um die inten­tionale Kom­mu­nika­tion mit der Mas­chine.

Sprache, worauf schon der Philosoph Wittgen­stein hin­weist, ist ein wesentlich­er, bedin­gen­der Fak­tor und Aus­druck für das Denken. Aus mein­er Sicht ist Sprache nicht nur das gesproch­ene (oder geschriebene) Wort, es ist genau­so die Idee, wom­it ich als erfahrungs­basiertes Wesen dem Com­put­er, der nicht erfahrungs­basiert ist, klar machen will, was ich möchte oder brauche.

Wenn wir also annehmen, dass der Men­sch mit Ideen und Konzepten in seinem Denken arbeit­et, und diese sich durch die Sprache aus­drück­en, so kann man ver­muten, dass Objek­te eine gute Schnittstelle für die Men­sch-Mas­chine Kom­mu­nika­tion sind. Die Dinge, mit denen wir zu tun haben, gaben wir Namen, mit Prädikat­en beschreiben wir sie, geben ihnen Qual­itäten. Ver­ben beze­ich­nen dann die Prozesse, deren Gegen­stand die Objek­te sind.

Also: Nomen und Ver­ben sowie Prädikate erscheinen als ein sin­nvolles Mit­tel, um Com­put­er zu einem Werkzeug des Denkens und Schaf­fens zu machen. Die Inten­tion dessen, was gedacht ist, lässt sich damit denk-nah aus­drück­en. Kon­se­quenter Weise braucht es dann einen effizien­ten Weg, Objek­te anzuzeigen (sie als Ziel eines Verbs oder Prädikats zu iden­ti­fizieren) und Ver­ben bzw. Prädikate ein­deutig anzugeben bzw. zuzuweisen.

Damit ist der Punkt erre­icht zu fra­gen, wie ein Objekt als Ziel ein­er Inten­tion angezeigt wer­den kann: per Text (wie in Smalltalk) oder als graphis­che Struk­tur (Sketch­pad). In Ivan Suther­lands Sketch­pad waren Objek­te Dinge, die sehr nahe an dem sind, wom­it Inge­nieure zu tun haben. Heute haben wir aber oft mit Darstel­lun­gen zu tun, die sehr abstrakt sind und eine Visu­al­isierung von eigentlich nicht optisch erfahrbaren Din­gen sind. Dies öffnet starke Inter­pre­ta­tion­sspiel­räume, und nicht sel­ten wer­den in Soft­waresys­te­men indi­vidu­elle Inter­pre­ta­tio­nen zugrun­degelegt, die wiederum zu unter­schiedlichen Erschei­n­ungs­bildern und Modi führen.

Eine Benen­nung (eines Objek­tes) ist hier wesentlich direk­ter. Zwar ist das Phänomen bekan­nt, dass zwis­chen Dialek­ten oder unter­schiedlichen Sprachen Dinge nicht immer densel­ben Namen tra­gen. Jedoch ist der Inter­pre­ta­tion­sspiel­raum klein­er, sofern ein­mal ein Beze­ich­n­er einem Ding zuge­ord­net und diese Zuord­nung all­ge­mein akzep­tiert wurde. Die Szene des Wal­fischs in der Geschichte “Per Anhal­ter ins All” von Dou­glas Adams beschreibt dies wun­der­schön.

Derzeit entwick­le ich ein Werkzeug, um GSN (Goal Struc­tur­ing Nota­tion) Bäume zu erstellen und ggf. auch durch Metriken zu bew­erten. Ganz im Sinne obiger Diskus­sion war mein Gedanke, wäre es nicht bess­er, mit dem Com­put­er über Knoten und Verbindun­gen zu “reden”, ohne den Umweg über zeigen und klick­en? Knoten und Kan­ten sollen also durch ihre Beze­ich­nung iden­ti­fiziert wer­den, eine ein­fache Sprache mit Ver­ben und Prädikat­en deren intendierte Manip­u­la­tion beschreiben. (Nebenbe­merkung: Suther­lands Ansatz wird für AR/VR sehr wichtig wer­den, an ander­er Stelle dazu mehr.)

Beispiel­sweise ergibt die Sequenz

'nodeTypeGSN.txt' writeGraph 'ODDHazard.txt'

eine Dot-Datei, die dann mit­tels dem Open­Source Tool Graphviz einen GSN Baum in Form ein­er Grafik­datei erzeu­gen kann. Der Satz, um dies zu tun, wäre

createGraph ''

Als Ergeb­nis erhält man z.B. eine PNG Datei:

Die Datei ‘ODDHazard.txt’ ist eine stark vere­in­fachte Ver­sion der Dot Syn­tax, mit der die Struk­tur des Graphen definiert wird. Die Syn­tax erlaubt, Platzhal­ter für Beze­ich­n­er zu ver­wen­den, um sie an geeigneter Stelle im Kno­ten­text erscheinen zu lassen. Die Datei nodeTypesGSN.txt enthält die diversen Kno­ten­typen und deren entsprechen­den For­matan­weisun­gen für Graphviz (eine Datei für Fehler­bäume existiert übri­gens eben­falls).

Die Markierung von Knoten des GSN-Baumes kann durch Sätze wie

markNode 'G112'
markNode 'G1212'

erfol­gen, wo ‘G112’ und ‘G1212’ die entsprechen­den Knoten angeben. Diese Markierung wird durch einen roten Kas­ten angezeigt, und kann Grund­lage weit­er­er Aktio­nen sein: löschen von Knoten, verbinden etc..

In einem späteren Aus­bau kön­nten dann Sätze hinzukom­men der Art

findNodes 'G12x'
findNodesOfLevel 2
joinNodes 'G1212' 'G1213'
deleteSubtree 'G121'

Bei mein­er weit­eren Arbeit wird es also darum gehen:

  • was mache ich typ­is­ch­er Weise bei der Erstel­lung eines GSN Baums, und wie beschreibe ich das? Somit wird sich eine “Sprache” entwick­eln, die dem Umgang mit GSN Bäu­men max­i­mal entspricht,
  • die Grafik zeigt Objek­te und deren Beze­ich­nung an. Die Grafik dient nicht dem “Anfassen” von Objek­ten, aber ist eine Hil­fe für die Beze­ich­nung.

Dabei muss ich mir immer selb­st bewusst wer­den, welch­es über­haupt die wesentlichen Konzepte und Aktio­nen sind — und dies macht den Com­put­er zu dem, was Alan Kay und Ivan Suther­land immer woll­ten: ein Unter­stützer für Kon­struk­tion und Idee.

Noch ein Wort zur Imple­men­ta­tion: für den Pro­to­typ wurde die Sprache J ver­wen­det, eine Vari­ante der array-basierten Pro­gram­mier­sprachen (wie APL). Später Ver­sio­nen wer­den auch PROLOG mit ein­beziehen.

Ref­eren­zen

  1. Dan Ingalls Sem­i­nar zu OOP 1989: https://www.youtube.com/watch?v=Ao9W93OxQ7U&t=10s
  2. Alan Kay’s Vor­trag bei Qual­com 2013 zu “com­plex” vs. “com­pli­cat­ed”: https://vimeo.com/82301919
  3. Semi­ar mit Alan Kay zu OOP: https://www.youtube.com/watch?v=QjJaFG63Hlo
  4. Text zur Geschichte von Smalltalk: https://worrydream.com/EarlyHistoryOfSmalltalk/
  5. Alan Kay at UCLA 2024: https://watch?v=dZQ7x0-MZcI
  6. Sketch­Pad: https://www.cl.cam.ac.uk/techre­ports/UCAM-CL-TR-574.pdf
  7. Graphviz: https://graphviz.org
  8. GSN — Goal Struc­tur­ing Nota­tion: https://scsc.uk/gsn?page=gsn%203nutshell