wintermute on Sun, 2 Feb 2003 12:55:03 +0100 (CET)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[rohrpost] In bash ist Wahrheit (war: Nachtrag zum bootlab)


Guten Tag, liebe Liste.

> Ähnlich wie Mercedes sehe ich hier die Gefahr eines Platonismus mit
> umgekehrten Vorzeichen, in dem die Hardware Essenz ist und die Software
> mit ihren Abstraktionsschichten verderbter Abglanz dieser Essenz.

Das Wesen einer Maschine die Hardware? Das passt offensichtlich nicht. 
Eine kleine Umfrage unter Bekannten nach der differentia specifica 
zwischen Macs und PCs bringt sicher nicht "G4/Pentium" aufs Tablett, 
sondern "Ist schöner / hab ich auch im Büro". Und Linux-PCs haben ganz 
andere Wesen als WinXP-PCs. Linuxkisten sind aufsässige Bastarde, 
Windowsrechner hinterfotzige Schleimer.

Eben weil beim Sprechen über Computer-Wesen Ontologie-Emphase völlig 
krude wäre, kann es nur um das gefühlte Wesen einer Bedienoberfläche 
gehen. Und deswegen hängt das Was-es-ist-ein-mac-zu-sein nicht davon 
ab, ob ein G4 oder ein Pentium oder ein kleiner Geist in der Kiste 
steckt und rechnet, oder ob ein Unix oder Windowskernel darunter läuft. 
Das gefühlte (also einzige) Wesen einer Maschine ist ihre 
Benutzeroberfläche und damit ihre tatsächliche Nutzung.

> regredieren heutige GUIs den Computer zu einem recht stupiden, nur 
> manuell bedienbaren Werkzeug.

Im Gegensatz zu früheren Computern, wo man Lochkarten mit den Füssen 
oder reinem Geist stanzte? Eigentlich sind die meisten Werkzeuge nur 
manuell bedienbar. Aus gutem Grund.

> Der springende Punkt eines Computerinterfaces (zu denen ich auch
> Programmiersprachen zähle) ist für mich deshalb nicht die Abstraktion
> vom Maschinencode, sondern die Frage, ob es algorithmisch 
> programmierbar
> bzw. Turing-vollständig ist.

Unglücklicherweise entfesselt Turing-Vollständigkeit die ganze 
Komplexitätshölle der theoretischen Informatik. Nicht nur, dass sich 
nicht alles in endlicher Zeit machen lässt, von den Sachen, die sich in 
endlicher Zeit machen lassen, sind nicht unbedingt viele gerade sehr 
sinnvoll. Und wenn man Computer als Werkzeuge begreift, frage ich mich, 
warum es regressiv sein soll, aus dem weiten Raum des Machbaren das 
Sinnvolle vorzuselektieren. Genau darum geht es bei Werkzeugen: Ein 
Ding zu haben, das eine Aufgabe erfüllen kann. Ein wirklich 
universelles Werkzeug ist keines, weil es die Welt ist, aka "das 
Machbare". Werkzeuge haben immer eine inhärente Richtung, eine Antwort 
auf ein Wozu.
So sind die eben :-)

Dass Computer sehr universelle Werkzeuge sind, weil zumindest in ihnen 
alles machbar ist, was überhaupt machbar ist, ist ein schlechter Grund, 
um über Point&Click-GUIs die Nase zu rümpfen. Denn die sind da, um 
Werkzeug zu sein, also um bestimmte Dinge nicht zu können und andere 
schneller und besser. Ist doch wunderbar.

Allerdings, das freimütig zugegeben: WAS uns die heutigen 
Point&Click-GUIs anbieten, wozu sie Werkzeuge sind, ist scheusslich: 
Büro, Büro. Ordner und Mülleimer und Schreibtische und Dokumente und 
all dieser graue lebensfeindliche Altherrenkram. Büroknechtschaft ist 
angesagt, unsere GUI-Hersteller, ganz egal wie frei oder GPL, lassen 
keinen Zweifel aufkommen. Desktopmetapher und kein Ende abzusehen. Wo 
bleiben die guten Alternativen?

> Zuviel Abstraktion (Beispiel Java) führt zu absurd lahmer, 
> speicherfressender
> Bloatware, zuwenig (Assembler) zu nichtportablem, CPU-proprietärem
> Code. Wäre alle heutige PC-Software in x86-Assembler geschrieben,
> würde sie zwar schneller laufen.

Veto. Nicht mal das. Wenn sie je fertig würden, wären sie so 
bugverseucht, dass sie nur sehr kurz schneller laufen würden.

Es gibt die Abstraktion von der Hardware nur beim Erzeugen des Codes, 
nie bei der Ausführung. Und dass Java in VMs läuft und es keine guten 
Nativecompiler gibt, ist Politik, keine Notwendigkeit aus der JLS oder 
den APIs. Aber das nur nebenbei. Abstraktion ist ohnehin kein Argument, 
weil GUIs keine Abstraktion von der Hardware sind, sondern ein 
Ausschnitt aus deren Funktionalität.

> Die Regression heutiger Interfaces zeigt sich nicht in der Abstraktion
> der Software von der Hardware, sondern vielmehr darin, daß das
> Benutzerinterface die Sprache des Computers auf ein vorsprachliches
> Zeigen auf Objekte reduziert.

Nur mit Zeigen ist kein Computer zu bedienen. Deswegen neigen die 
Dinger dazu, Tastaturen zu haben und Beschriftungen an den 
Ordnersymbolen, also Elemente, die so sprachlich sind, dass sie auf 
Buchstaben basieren. Aber selbst wenn da keine Buchstaben wären: 
Vorsprachlich sind GUIs nicht. Sie sprechen eben, anders als die pure 
Mathematik turingvollständiger formaler Sprachen, nicht alle Sprachen 
gleichzeitig, sondern nur ihre eigene, graphische.

Das Klicki-Bunti-Argument war mir nie einsichtig. Wir sind optische 
Tiere, keine aufrecht gehenden Taschenrechner. Schon eine simple Sache 
wie das Verschieben eines Verzeichnisses können wir, egal wie sehr wir 
unseren Unixprompt mögen, nicht anders denken denn als ein 
"Verschieben", ein räumliches Bewegen von A nach B. Den 
Turingmaschinenfreund möchte ich sehen, der beim Verschieben eines 
Verzeichnisses darauf besteht, ausschliesslich an 
Dateizuordnungstabellen zu denken.

> Keine echte (d.h. Turing-vollständige) Programmiersprache bzw. 
> -umgebung
> kann vom Prinzip des Computers so stark abstrahieren, daß dabei das
> Grundverständnis einer Maschine, die algorithmische Instruktionen
> ausführt und somit formale Sprachen "spricht", verlorengehen könnte. 
> Und
> nur auf dieses strukturelle Verständnis kommt es meiner Meinung nach
> an.

Wir sprechen von Turingvollständigkeit, also vom Begriff der 
Berechenbarkeit. Wenig überraschend, dass nur berechenbar ist, was man 
berechnen (aka durch algorithmisches Ausführen von Instruktionen 
ermitteln) kann. Natürlich können formale Beschreibungssprachen für 
Instruktionen davon nicht abstrahieren.

Die interessante Frage ist doch: Muss man, um mit Computern zu 
arbeiten, /sehen/, dass algorithmisch Instruktionen ausgeführt werden, 
um nicht regressiv zu sein?

Ist es nicht weit interessanter, Sachen zu beschreiben, die keine 
Algorithmen sind, und trotzdem kommt am Ende ausführbare Software 
heraus? Wie kriegt man Übersetzer hin, die die Art, wie Menschen 
Probleme lösen, in Computercode übersetzen, anstatt einfach von den 
Menschen zu verlangen, in Perl (oder bash) zu denken? Zugegeben, keine 
besonders originellen Fragen.

Und deswegen gibt es ja auch schon gute Lösungen. Mac Human Interface 
Guidelines für die einen, Anti-Mac für die andern. Aber trotzdem: Nie 
und nimmer turingvollständig auf Ebene null.
Nun: Bedienen ist Programmieren, d'accord. Für alltägliche Probleme wie 
das Manipulieren von Daten haben wir schnelle Lösungen: Betriebssysteme 
mit GUIs - das ist alles andere als eine "Versklavung". Es kommt uns 
bloss ein bisschen eng vor, weil's ausgerechnet ein Büro sein muss, und 
weil Microsoft unter Verbesserung der Bedienqualität versteht, das alte 
Büro bunt anzumalen. Und bunt Anmalen macht aus einem Plattenbau keine 
schöne Wohnstatt und aus einem Büro keine angenehme Metapher.


mfg, rv
-------------------------------------------------------
rohrpost - deutschsprachige Liste zur Kultur digitaler Medien und Netze
Archiv: http://www.nettime.org/rohrpost http://post.openoffice.de/pipermail/rohrpost/
Ent/Subskribieren: http://post.openoffice.de/cgi-bin/mailman/listinfo/rohrpost/