Monthly Archives: March 2012

Inwiefern sind Programmiersprachen Sprachen?

Im Funktionssystem der Technik spielt die Programmiersprache eine entscheidende Rolle. Es gibt kaum mehr eine technische Entwicklung, die nicht durch Computer unterstützt oder gar ermöglicht wird. Die Programmier-Sprache ist eine eigenständige Erfindung, die die massenhafte Verbreitung der Computer überhaupt erst möglich machte. Die Programmiersprache entspricht in gewisser Hinsicht dem Buchdruckes von Gutenberg oder dem Benzinmotores von Otto, die beide eine bereits vorhandene Ware, nämlich das Buch und das maschinell angetriebene Fahrzeug massentauglich machten. Wenn wir die Computer – wie in den Anfängen – ohne Programmiersprachen programmieren müssten, würden sie heute noch in den Forschungslaboratorien statt auf jedem Schreibtisch stehen.

Computer sind programmierbare Automaten, und in ihrer entwickelten Form werden sie durch Programme programmiert, die ich einer Programmiersprache wie etwa Cobol oder Pascal zurechne. Computerprogramme werden als Texte in einer Programmiersprache geschrieben. Als “Schweizer” könnte man bezüglich der Programmiersprache fragen, wer hat “es” erfunden? Ich habe diese Frage einmal K. Zuse gestellt, worauf er in der ihm eigenen Selbstverständlichkeit antwortete: “Ich”, was mir auch zeigte, dass er die Frage gar nicht verstanden hat.

Die Frage, die ich jetzt stelle, ist etwas subtiler: Was hat der Erfinder der Programmiersprache erfunden. Eine erste Antwort lautet: Es gibt DIE Programmiersprache gar nicht, es gibt nur ProgrammierspracheN. Cobol und Fortran gehören zu den ersten Programmiersprachen, die als solche bezeichnet wurden. Die Entwickler dieser Programmiersprachen sagten explizit, dass man von einem Programmierer nicht erwarten könne, dass er so komplizierte Maschinen begreifen könne. Deshalb kann von einem Programmierer kaum verlangt werden, dass er über die zu verwendende Zahlendarstellung oder gar über die Eigenschaften der Speichervorrichtung entscheidet. Man wollte das Programmieren so einfach machen, dass auch weniger begabte Menschen diese Tätigkeit ausführen können. Nachdem die Entwickler Fortran geschaffen hatten, erkannten sie, dass es zuvor schon eine Art Computersprache gab, die sie dann im Unterschied zu der “höheren” Computersprache als Maschinensprache bezeichneten.

K. Zuse hat seine “Programmiersprache” erst viel später überhaupt veröffentlicht, nämlich erst als praktisch jedermann erkannt hatte, wie wichtig die Programmiersprache ist – was er als vermeintlicher Erfinder offenbar nicht gemerkt hat. Er sprach aber auch dann noch von einem Kalkül und nicht von einer Sprache – was die Sache wohl auch heute noch besser bezeichnen würde.

Das Anliegen der IBM-Intelligenzia – die K. Zuse auch in jeder anderen Hinsichht den Rang abgelaufen hat – war gerade nicht eine treffende Bezeichnung für den Sachverhalt zu finden, sondern viel mehr im Gegenteil für kognitiv nicht sehr belastbare Fliessbandprogrammierer eine idiotensichere Metapher zu prägen. Die “Programmiersprache” Cobol – die IBM-komerziell noch viel erfolgreicher war als Fortran – wurde bewusst möglichst “sprach-ähnlich” konzipiert. Erst sehr viel später dämmerte die Einsicht, dass Programmiersprachen einer eigene Logik gehorchen, die pädagogisch gerade durch Programmiersprachen vermittelt werdenmuss. Die Programmiersprache Pascal wurde an der Hochschule zur Ausbildung einer kognitiv hochschultauglichen Programmierelite entwickelt. Im soziologischen Fachjargon wechselte genau in dieser Zeit die Einschätzung darüber, wie sich die Automatisierung auf die Qualifikations der Arbeitenden auswirkt. Vorher glaubten die Soziologen – wie die IBM-Informatiker – dass Automatisierung zu einer Dequalifikation führe, nachher glaubten sie wie die Hochschul-Informatiker, dass die Qualifikation zunehme.

Als Erfindung teilt die Programmiersprache das Schicksal vieler genialen Erfindungen. Sie liegen im Nachhinein so sehr auf der
Hand, dass sie gar nicht als Erfindungen wahrgenommen werden. Der naiv interpretierte Wortteil “-sprache” verleitet zusätzlich zur
Annahme, dass Programmiersprachen wie unsere Sprachen zwar konkret geformt sind, aber als Sprache überhaupt immer schon da waren. Die Sprache kennt ja auch keine Erfinder. In diesem Sinne werden Programmiersprachen auch oft als künstliche Sprachen bezeichnet, wobei das Attribut “künstlich” nicht auf die Sprache als erfundenes Produkt bezogen wird, sondern lediglich darauf, dass die Syntax oder die Form der Sprache eindeutig und eingeschränkt ist.

Die Frage, worin die Erfindung DER – begrifflich gemeinten – Programmiersprache besteht, kann ich für jede einzelne oder jede konkrete Programmiersprache beobachten. Ich frage dazu, was ich beim Programmieren egal in welcher Sprache mache. Vordergründig schreibe ich Texte. Aber eigentlich lege ich die Steuerung eines Prozessors fest. Ich richte den Prozessor so ein, dass sein Schaltungszustand ganz bestimmte Sequenzen durchläuft. Als primitivste Form eines Programmes betrachte ich die Nockenwalze einer Musikdose. Wenn ich eine solche Nockenwalze herstelle, schreibe ich nur sehr bedingt einen Text. Ich stecke vielmehr die Nocken an die richtigen Stellen der Walze. Ich kann in einer Spieldose – was üblicherweise gemacht wird – die tongebenden Zungen so angeordnen, dass sie eine Tonleiter bilden. Dann muss ich die Nocken auf der Walze so setzen, dass sie die Tonzungen in der richtigen Reihenfolge bewegen, damit eine bestimmte Melodie zu hören ist.

Wenn ich die Tonzungen nach der Tonleiter anordne, bestimme ich, wie die Nocken für eine bestimmte Melodie angeordnet werden

müssen. Ich kann aber natürlich umgekehrt zuerste die Nocken auf der Walze anordnen und damit die Anordnung der Tonzungen für eine bestimmte Melodie bestimmen. Das scheint zunächst ein relativ unsinniges Verfahren darzustellen, es ist aber genau dieses Verfahren, dass der Programmiersprache zugrunde liegt. Die Idee – nachdem man sie einmal hat – ist ganz einfach. Ich baue die Maschine so, dass die Programmierung einfach wird. Die Maschine wird dabei erheblich komplizierter, aber das Programmieren wird dafür erheblich einfacher.

Jetzt stellt sich die Frage, inwiefern das Programmieren einfacher gemacht werden kann, erneut. Und wieder besteht die Vereinfachung in einer memotechnischen “Spachähnlichkeit”, die ich anhand eines Beispiels illustriere. Eine Stadt könnte so gebaut werden, dass ein Pilot lesen kann, lesen kann, wie sie heisst, wenn er über die Stadt fliegt. Man würde dazu die Häuser entsprechend anordnen, so wie man Nocken auf der Musikwalze beliebig anordnen kann, wenn die Tonzugen erst nachher angeordnet werden. Die Stadt wär durch eine solche Anordnung der Häuser kaum betroffen und die Menschen in der Stadt würden davon kaum etwas mitbekommen. Nur die Piloten könnten sich leichter orientieren.Ich habe einen Video von einem Piloten, der während des Anfluges auf Aosta in Italien den Fluggästen sagt, dass er im Begriff ist, in Sitten im Wallis zu landen, wohin der Flug eigentlich auch gehen sollte.

Der Steuerungsmechanismus eines Computers kann so eingerichtet werden, dass die Programmierung in diesem Sinne sekundär lesbar wird. Eine Addition von zwei Zahlen wird dann beispielsweise durch ein Programmteil bewerkstelligt, dass die “Nocken” so angeordnet hat, dass ADD lesbar wird. Der Anschaulichkeit halber, kann man sich Lochkarten vorstellen, deren Löcher nach dem Muster von Buchstaben verteilt sind. Dabei lege ich also zuerst die Programme fest und konstruiere die Maschine dann entsprechend, dass die Programme die richtige Melodie spielen.

Als Programmiersprache erscheint so ein entsprechend eingerichteter Prozessor. Die Programmiersprache ist also eine Maschine, die es mir erlaubt, Programme herzustellen, die ich als Texte lesen kann. Die Maschine versteht oder interpretiert also keine Programmiersprache, sie IST die Programmiersprache. Die Programmiersprache hat demnach mit Sprache nichts zu tun – was K. Zuse ahnte -, als Programmierer kann ich aber die Programme trotzdem wie Texte lesen.

Die “Technische Intelligenz” hat mit ihrer “Sprach”-Metapher einen inversen Grund gelegt, Sprache überhaupt zu verstehen. Nachdem ich verstanden habe, was eine Programmiersprache ist, kann ich die Richtung der Metapher drehen. Wir werden sehen.

Advertisements

Exkurs: die (nicht) triviale Maschine

Die triviale Maschine kommt in zwei verschiedenen Kontexten vor

  • Henry Gordon Rice hat diese Unterscheidung 1953 in bezug auf die Turing-“Maschine” eingeführt. Sein Satz besagt, dass es unmöglich ist, irgendeinen nichttrivialen Aspekt des unktionalen Verhaltens einer Turingmaschine algorithmisch zu entscheiden.
  • H. von Foerster verwendet die triviale Maschine(und vor allem den Ausdruck “nicht triviale Maschine”), um seinen Begriff Komplexität zu erläutern. Nichttriviale Maschinen (bei H. von Förster etwa Menschen oder autopoietische Maschinen) erscheinen dem Beobachter komplex, weil er ihr Verhalten nicht erklären oder voraussehen kann, sie scheinen sich dem mechanischen Denken zu entziehen.In einem Fall geht es um einen mathematischen Beweis bezüglicher der Berechenbarkeit und im anderen Fall um ein Wahrnehmungsphänomen. In beiden Fällen wird eine diffuse Maschinenmetapher verwendet, die ich zuerst erläutere:

die Input-Output-Maschinen-Metapher

In gewisser Hinsicht repräsentieren “Maschinen” Input-Output-Relation – das ist die bei der nicht-trivialen-Maschine verwendete Metaphorik. Ein Teil der Maschinen reagiert auf den gleichen Input trivialerweise immer mit dem gleichen Output. Es gibt aber auch “Maschinen”, die auf einen bestimmten Input jedes Mal anders reagieren. Letzteres ist der Fall, wenn der Input nicht nur den Output, sondern auch die Steuerung der Maschine beeinflusst.

Wenn die Input-Output-Relation als eigentliche Maschinen konstruiert ist, spreche ich von einer Whitebox, weil ich sehen kann, wie die Maschine funktioniert. Wenn ich nur die Input-Output-Relation kenne, spreche ich von einer Blackbox.

triviale “Maschinen” (Whitebox)

Ich unterscheide eigentliche Maschinen und Automaten. Eigentliche Maschinen repräsentieren eine einfache Input-Output-Relation, das heisst, sie reagieren auf den gleichen Input immer mit dem gleichen Output. Automaten dagegen haben eine konstruierte Steuerung (Prozessor) und reagieren deshalb auf einen bestimmten Input nicht immer gleich. Bei Automaten kommt es darauf an in welchem Zustand die Steuerung gerade ist. Bei einem PC etwa kommt es beispielsweise darauf an, welches Programm gerade geladen ist.

Die beiden nebenstehende Schemata veranschaulichen den Unterschied. Die eigentliche Maschine verändert ihre Funktion (A) nicht. Sie macht immer das gleiche (x + 2).

 

Quelle: Wissen und Gewissen:357ff) 
Funktionen:A: x + 2 Input- Output-Wertex = 2, y = 4
x = 3, y = 5
x = 4, y = 6

Wenn der Input auch die Steuerung (B, C) verändert, reagiert die Maschine auf jeden nächsten Input anders.

Funktionen:A: x + e
B: x + e
C: u + 3
Werte (nach Reset von B und C auf NULL und x konstant 2)(1:) x = 2, u = 2 e= 5 y = 7
(2:) x = 2, u = 7 e= 10 y = 12
(3:) x = 2, u = 12 e= 15 y = 17
(3:) x = 2, u = 17 e= 20 y = 22
Werte (nach Reset von B und C auf NULL und x variiert(1:) x = 2, u = 2 e= 5 y = 7
(2:) x = 3, u = 8 e= 11 y = 13
(3:) x = 3, u = 14 e= 17 y = 19
(3:) x = 4, u = 21 e= 24 y = 26
(4:) x = 2, u = 26 e= 29 y = 31
(5:) x = 3, u = 32 e= 35 y = 37

Im Beispiel produziert der Input x nicht nur den Output y, sondern verändert auch die internen Werte u und e, die beim nächsten Input x zu neuen Werten führen.

In dieser Whitebox-Perspektive sind beide Maschinen “trivial”, weil ihre Input-Output-Funktion genau bestimmt werden kann.

Nicht triviale Maschinen

Als nicht triviale Maschine erscheint mir eine “Maschine”, wenn sie als Blackbox ein Verhalten zeigt, das ich in dem Sinne nicht “rekonstruieren” kann, als ich aufgrund der beobachtbaren Input-Output-Relationen keine Verhaltensregel (keine Funktion) bestimmen kann. Das Verhalten der Blackbox scheint mir dann komplex oder eben als Verhalten einer nichttrivialen Maschine.

Die sogenannt “nicht trivialen Maschine” ist natürlich in dem Sinne trivial, als sie – wie die “triviale Maschine” – eine Maschine ist, also einer genau festgelegten Regel folgt. Ein Beobachter, der den Mechanismus aber nicht kennt, also eine Blackbox vor sich hat, hat sehr geringe Chancen etwa durch Experimentieren die Logik einer “nicht trivialen Maschine” zu finden (von Foerster: Wissen und Gewissen:163). H. von Förster errechnet für die oben dargestellte Konfiguration 10155 Varianten.

Die nicht triviale Maschinen als Explikation des kybernetischen Systems

Die nicht triviale Maschine ist eine Explikation des kybernetischen Systems, das als Erklärung für ein Phänomen immer eine Feedback-Maschine darstellt.

Anmerkungen:

Das Konzept der “nicht trivialen Maschine” wird oft auch als Kritik am Behaviorismus vorgetragen. Mit dem Behaviorismus teilt das Konzept, dass Blackboxes komplex erscheinen können, gegen den naiv verstandenen Behaviorismus wird argumentiert, dass sich das Verhalten von Blackboxes nicht voraussagen und steuern lasse. Behaviorismus macht aber natürlich statistische Aussagen über Erwartungen, die wir jenseits von Wahrscheinlichkeiten haben.

Literaturstellen:

In “Konstruktion der Wirklichkeit” (Einführung in den Konstruktivismus:60) und in “Mit den Augen des andern” (Wissen und Gewissen:357ff) verwendet H. von Foerster explizit die Turing-“Maschine” zur Erläuterung der trivialen Maschine. Er übernimmt damit die begriffliche Konfusion, die A. Turing mit dem Ausdruck Maschine statt Steuerung gestiftet hat. Eine Maschine “ist” für ihn offenbar eine Beziehung, ein System “ist” für ihn offenbar eine Maschine, also auch eine Beziehung, und eine Beziehung ist für ihn offenbar eine mathematische Funktion. Offenbar heisst hier, dass ich das in den folgenden Textauszügen so lese (jeder liest eben, was er liest. Schreiben Sie mir bitte, wenn Sie das anders lesen können):

“Der Ausdruck Maschine bezieht sich in diesem Zusammenhang auf wohldefinierte funktionale Eigenschaften einer abstrakten Grösse, und nicht in erster Linie auf ein System von Zahnrädern, Knöpfen und Hebeln, obwohl solche Systeme jene abstrakten funktionalen Grössen verwirklichen können.” (von Foerster: Zukunft der Wahrnehmung: Wahrnehmung der Zukunft. in: Wissen und Gewissen:357).

“Eine triviale Maschine ist durch eine eindeutige Beziehung zwischen ihrem ‘Input’ (Stimulus, Ursache) und ihrem ‘Output’ (Reaktion, Wirkung) charakterisiert. Diese invariante Beziehung ist ‘die Maschine’. Da diese Beziehung ein für allemal festgelegt ist, handelt es sich hier um ein deterministisches System; und da ein einmal beobachteter Output für einen bestimmten Input für den gleichen Input zu späterer Zeit ebenfalls gleich sein wird, handelt es sich dabei auch um ein vorhersagbares System” (von Foerster: Zukunft der Wahrnehmung: Wahrnehmung der Zukunft. in: Wissen und Gewissen:357).

“Alle Maschinen, die wir konstruieren oder kaufen, sind hoffentlich triviale Maschinen. Ein Toaster sollte toasten, eine Waschmaschine waschen, ein Auto sollte in vorhersagbarer Weise auf die Handlungen seines Fahrerrs reagieren. Und in der Tat zielen alle unsere Bemühungen nur darauf, triviale Maschinen zu erzeugen oder dann, wenn wir auf nicht-triviale Maschinen treffen, diese in triviale Maschinen zu verwandeln.” (von Foerster: Zukunft der Wahrnehmung: Wahrnehmung der Zukunft. in: Wissen und Gewissen:206f).

“Triviale Maschinen werden nicht nur durch ihre Synthese bestimmt, ebenso gut sind sie durch Analyse bestimmbar. Da ihre Operationsregeln unverändert bleiben, d.h. von ihrer Vergangenheit unabhängig sind, sind sie ausserdem voraussagbar!” (von Foerster: Lethologie. In: KybernEthik:138)

Programme in der Technologie (also nicht im Theater oder in der Politik)

Programmierbare Maschinen müssen programmiert werden, damit sie ihre Funktion erfüllen. Ohne Programmierung sind beispielsweise Computer unvollständig, ich bezeichne das entsprechende Halbfabrikat als “Hardware”. Die Hardware alleine kann ich als Computer sowenig brauchen, wie eine einzelne Schraube, die Bestandteil der Hardware ist. Zum Computer gehört, dass er programmiert ist. Die Programmierung und der Computer sind unter diesem Gesichtspunkt der Erfindung dasselbe. Ich kann also uneingeschränkt sagen, wann die Programmierung erfunden wurde. Eine andere Frage ist, ob die Erfinder der Computer deren Programmierung auch Programmierung nannten. Und eine noch andere Frage ist, wie die ersten Computer tatsächlich programmiert wurden.

Hardware ruft nach Software. Als Software erscheint in der Alltagssprache die Menge der Programme, die die Hardware zu einer funktionsfähigen Maschien machen. Mit dem Ausdruck Software bezeichne ich aber auch die programmierte Maschine unter dem Gesichtspunkt, dass die Funktion der Maschine in dem Sinne “soft” ist, als sie leicht zu ändern ist. Ich kann mit einen Klick aus einer Textbearbeitungsmaschine eine Buchhaltungsmaschine oder ein Spielzeug wie etwa einen Flugsimulator machen. Während die Maschine ganz leicht in eine ganz andere Maschine verwandelt werden kann, gilt das natürlich für Programme keineswegs. Schon kleine Änderungen an einem Programm geben sehr viel Arbeit.

Ein Computer ist also “Software” wie eine Black-and-Decker, die sich verändert, wenn man statt einem Bohrer eine Schleifscheibe einspannt. Und wie die Black-and-Decker erst zu gebrauchen ist, wenn das Werkzeug drauf ist, so ist auch der Computer nur zu gebrauchen, wenn er programmiert ist. Ein Programm ist in diesem Sinne also keine “Software”, sondern wie die Hardware ein Halbfabrikat der Software. Und als Halbfabrikat ist das Programm selbst Hard(work)ware, was ich eben am Aufwand erkennen kann, der zu leisten ist, wenn ich ein Programm herstellen oder ändern will. Aber ein Programm ist ach in einem eigentlichen Sinne Hardware. Ich komme darauf zurück.

Von eigentlicher Software spreche ich bei der Black-and-Decker, die ich mit sehr wenig Aufwand umfunktionieren kann, nicht, weil ich bei ihr das jeweilige Werkzeug austausche, das den Sinn der Maschine repräsentiert, während ich beim Computer nicht die Maschine, sondern die Maschienensteuerung verändere. Wenn ich meinen Computer von einer Textbearbeitungs in eine Buchhaltungsmaschine verändere, verändere ich die Steuerung, ich setzte keinen anderen Bildschirm drauf. Von eigentlicher Software und Programmen spreche ich in relativ zur Steuerung von Automaten. Das Programm widerspiegelt das Kriterium “explizite Regelung“, mit welchem ich Maschinen und eigentliche Automaten unterscheide.

Als Steuerung kann ich auch primitive Mechanismen auffassen. Sehr anschaulich ist die “Steuerung” bei Spieldosen, also bei einer Art
primitiver Musik”automaten”, bei welchen Stiftchen auf einer Walze bestimmte Melodien bewirken. Man kann diese Automaten für bestimmte Melodien programmieren, indem man die Stiftchen auf der Walze entsprechend anordnet. Nicht viel weniger anschaulich sind die Lochkarten-Maschinen, die auf verschiedene Lochmuster reagieren. Der Webstuhlbauer Jacquard hat bereits um 1800 entdeckt, dass man entsprechend konstruierte Webstühle mit Lochkarten so “programmieren” kann, dass bestimmte Stoffmuster gewoben werden. Diese Beispiele zeigen, dass man zur Programmierung einer Maschine keine Programmiersprache – und insbesondere auch keine “0”/”1″-Sprache – braucht.

Bei technologisch entwickelten Steuerung, bei welcher ich eigentliche Programme verwende, unterscheide ich Daten und Programme. Ueberdies beruhen solche Steuerungen auf Fallunterscheidungen, die in den Programmen als if-then-Formulierungen erscheinen. Ich will aber zunächst anhand der primitiven Steuerung einer Spieldose über den materiellen Charakter des Programmes nachdenken. Die Melodie der Spieldose wird bestimmt durch die Anordnung der Nocken auf der Walze. Die Walze muss also in einer ganz bestimmten Form hergestellt und mithin materiell sein. Die Nockenwalze passt zu einer Konstruktion mit Tonzungen, die durch die Nocken in Schwingung versetzt werden. Es gibt auch Spieldosen, die mit Lochscheiben gesteuert werden und natürlich in sehr viele Varianten Lochkarten. In all diesen Fällen geht es um die Anordnung der Löcher analog zur Anordnung der Nocken auf der Walze. Jede Lochkarte muss also in einer ganz bestimmten Form hergestellt und mithin materiell sein. Die

Lochkarten verlangen einen anderen Steuerungsmechanimus, auch da gibt es sehr verschiedene Varianten. Bei Jaquards Webstuhl werden die Lochkarten mit Nadeln “gelesen”, die durch ein Loch fallen – oder wo kein Loch ist eben nicht -, bei elektrischen Lochkartenlesern wird durch ein Loch ein elektrischer Kontakt erzeugt.

Schliesslich kann das Programm auch als Text geschrieben werden. Dabei wird eine Graphitstruktur anstelle von Löchern “gelesen”, wobei die Graphitstruktur genau gleich wie die Nockenwalze oder die Lochkarte in einer ganz bestimmten Form hergestellt und mithin materiell sein muss. Und natürlich verlangen Graphitstrukturen einen anderen Steuerungsmechanimus als Lochkarten, auch da gibt es sehr verschiedene Varianten, wie etwa einen Scanner. Und ganz zum Schluss kann der Programm-Text natürlich auch mit einem Computer geschrieben werden. Wenn ich auf einen Harddisk schreibe, magnetisiere ich – bei einer entsprechenden Konstruktion mit einem Schreibkopf bestimmte Stellen in der Eisenoxidschicht auf der Disk.

Wie auch immer, das Programm stelle ich als materiellen Teil der Maschine her. Welche Form das Programm hat, hängt von der Konstruktion der Steuerung ab. Aber es ist in jedem Fall eigentliche Hardware, mit welcher ich die Maschine zur Software machen kann. Im entwickelsten Fall sage ich, dass ich das Programm schreibe, weil ich einen Text herstelle. Was es mit der Programmiersprache auf sich hat, werde ich im nächsten Beitrag erläutern.

Das Digitale in der Technologie

– oder kümmert Sie, was Sie mit dem Ausdruck Digitalisierung meinen?

In der Umgangssprache (etwa in der Wikipedia) wird der Ausdruck “digital” als generalisierter Bezeichner für moderne Aufzeichnungsverfahren beispielsweise auf CDs oder DVDs verwendet, bei welchen die Daten als diskrete, binäre Werte gespeichert werden. Dazu gibt es eine gängige Rationalisierung, die den Ausdruck digit zwar zurecht auf den Finger zurückführen, die Finger aber in einem diffus-ulkigen Sinn als diskret-digitale Dinger auffassen, weil sie gezählt werden können oder beim Zählen als “Speicher” benutzt werden. Oft wird das vermehrte Auftreten von elektronischen Speichern in allerlei technischen Geräten als Digitalisierung bezeichnet.

Diese umgangssprachliche Deutung hat sich auch in laxen Fachsprachen eingebürgert, wo das Begriffspaar kontinuierlich/diskret durch die Ausdrücke analog und digital ersetzt wurde, obwohl diese Ausdrücke ursprünglich eine völlig andere Bedeutung hatten. Den Ausdruck “kontinuierlich” verwende ich im hergebrachten Sinn für eine stetig, stufenlose Veränderung, den Ausdruck “diskret” für eine Veränderung in Schritten oder Stufen. Eigentlicher verwende ich “kontinuierlich” in bezug auf Darstellungen von Veränderungen in Form einer Kurve, etwa im Koordinatenkreuz eines Oszillographen. In bezug auf diese Kurve kann ich formal unterscheiden, ob sie aufgrund von einzelnen Messwerten (also quasi als Treppe) oder aufgrund einer differenzialen Funktionsgleichung gezeichnet wird.

Analog und digital bezeichnen – ursprünglich und jenseits akktueller Umgangssprache – Referenzierungsarten. Eine Zeichnung ist zum gezeichneten Gegenstand analog, weil sie quasi die gleiche Form repräsentiert. Ein gezeichneter Tisch sieht wie ein Tisch aus. Ein Wort ist dagegen zum bezeichneten Gegenstand nicht analog, sondern bezeichnet aufgrund einer Vereinbarung. Das Wort Tisch sieht nicht wie ein Tisch aus, man kann es vereinbaren, indem man mit dem Finger, also mit dem digit auf einen Tisch zeigt. Hier geht es nicht darum, ob oder wie oft Wörter tatsächlich auf diese Weise vereinbart werden, sondern darum, dass man sich Vereinbarungen so vorstellen kann, weshalb vereinbarte Symbole als digital bezeichnet werden.

In meiner Technologie unterscheide ich Werkzeuge, Maschinen und Automaten. Werkzeuge werden von Hand angetrieben und Maschinen werden durch Motoren angetrieben, wobei Motoren ihrerseits Kraft-Maschinen sind. Werkzeuge und Maschinen kann ich durch Konstruktions-Zeichnungen hinreichend gut beschreiben, damit sie hergestellt werden können, oder dass ich deren Funktionsweise erkennen kann. Bei einem Verbrennungsmotor etwa kann ich auf der Konstruktionszeichnung sehen, wie sich der Kolben bewegt und wie sich die Ventile in Relation zur Kolbenbewegen öffnen und schliessen. Aus diesem Grund werden in der Herstellung Konstruktionszeichnungen und nicht etwa sprachliche Beschreibungen verwendet. Die analoge Darstellung ist hinreichend und sehr effizient.

Als Automaten bezeichne ich geregelte Maschinen. Ein höherentwickelter Teil der Automaten ist programmierbar. Programmierbare Automaten verhalten sich abhängig von verschiedenen Bedingungen verschieden. Sie durchlaufen also nicht immer dieselbe Verhaltenssequenz. Ihr Verhalten lässt sich deshalb durch Zeichnungen nicht hinreichend festlegen und nicht hinreichend beschreiben, es muss sprachlich – also digital – abgebildet werden.

Soweit wie die programmierbaren Automaten Maschinen sind, werden sie natürlich wie andere Maschinen gezeichnet. Das gilt insbesondere auch für die Steuerung, die aus einer Menge von Schaltern besteht. Sowohl die Schalter wie deren Anordnung kann gezeichnet werden, aber daraus wird nicht ersichtlich, wie die Schalterzustände einander beeinflussen, wenn die Maschine läuft. Wenn ich sage, dass programmierbare Automaten digital dargestellt werden müssen, meine ich also nicht die ganze Maschine, sondern nur die Konfiguration von deren Steuerung, die das Verhalten der Maschine bestimmt. Genau das mache ich, wenn ich ein Programm schreibe. Und umgekehrt kann ich im Programm lesen, wie sich die Maschine verhält.

Genau in diesem und nur in diesem Sinne sind programmierbare Maschinen digitale Maschinen. Inwiefern digitale Maschinen diskrete Aufzeichnungsverfahren erfordern, werde ich später unter den Begriffen Programm und Programmiersprache behandeln. Vorerst geht es mir darum, in meiner Technologie eine bestimmte Entwicklung als funktionale Bestimmung zu erkennen. Die Entwicklung des Toolmaking erkenne ich quasi rückblickend als Evolution der Programmiersprache. Das technische Funktionssystem muss in dieser Hinsicht über den Code programmierbar entwickelt werden.

analog / digital

Mit den Ausdruck analog charakterisiere ich ein Art meines Referenzierens. Differenztheoretisch kann ich “analog” durch die Differenz zwischen analog und digital sehen, indem auf der Unterscheidungsseite des Analogen das als Digital Ausgegrenzte wiedereintritt, weil auch das Analoge auf einer Vereinbarung beruht, wobei das reentry natürlich durchläuft, weil die Vereinbarungen von analogen Symbolen die Analogie voraussetzen.

Als analog bezeichne ich Symbole, deren Referenzobjekte ich ohne explizite Vereinbarung erkennen kann. Insbesondere trifft das für Zeichnung und Modelle zu. Ich sehe, was gemeint ist. Wenn das Symbol ein Wort ist, sehe ich nicht, wofür es steht, ich muss – unabhängig davon, dass Zeichnungen und Wörter nicht dasselbe referenzeiren – die Vereinbarung für den Ausdruck kennen. Die einfachste Vorstellung einer Symbolvereinbarung besteht darin, mit dem Finger auf einen bezeichneten Gegenstand zu zeigen und das Wort zu sagen. Der Finger heisst in einer anderen Sprache “digit”, deshalb bezeichne ich diese vereinbarte Referenzierung als digital – unabhängig davon, dass Vereinbarungen fast nie durch Zeigen mit dem Finger passieren. Wer nur französisch oder englisch spricht, aber auch in der heutigen Welt lebt, weiss nicht, was ein bestimmtes deutsches Wort bedeutet, aber er kann das Referenzobjekt einer Zeichnung erkennen.

Ich erläutere die Unterscheidung noch etwas eingehender anhand der im Alltag als analog oder digital bezeichneten Uhren. Gemeinhin verfügt eine als analog bezeichnete Uhr über ein Zifferblatt und die dazugehörigen Zeiger. Von einer digitalen Uhr hingegen wird gesprochen, wenn die Zeit nur in Ziffern angezeigt wird.

Die Uhr mit Zeigern ist eine analoge Abbildung des näheren Weltraumes, in welchem die rotierende Erde um die Sonne rotiert. Der kleine Zeiger zeigt – mit proportionalem Mass – dynamisch, wo er und mit ihm sein Uhrträger auf der Erde relativ zur Erd-Sonnen-
Achse, welche durch die Achse Uhrmitte-(12-Uhr-Zeichen) symbolisiert ist, steht. Der grosse Zeiger zeigt lediglich genauer an, wo der kleine steht. Die Uhr repräsentiert die gemeinte Wirklichkeit sowohl statisch wie dynamisch, aber die gemeinte Wirklichkeit, also die in der Uhr quasi abgebildete Sache, ist eben keineswegs die Zeit. Die Zeit lässt sich nicht so abbilden. Dem Zifferblatt entspricht vielmehr der Raum der Gestirne, den Zeigerbewegungen die Bewegung der Gestirne. Die analoge Uhr ist also keine “Abbildung” der Zeit, sondern eine Abbildung der Erdbewegung, die ich in der Zeit wahrnehme. Die Analogie besteht (den meisten Uhrtägern nicht bewusst) darin, dass der Zeiger eine zur Bewegung des Uhrträgers analoge, das heisst sichtbar gleichartige Bewegung macht. Auf das sichtbar gleich werde ich später genauer eingehen.

Die analoge Uhr wird in der Tat oft digital gelesen, weil sie Zahlen oft auf dem Zifferblatt hat. Der naive Uhrleser meint dann, der Zeiger zeige auf die Zahlen. Der Zeiger zeigt aber, wo auf der Erde wir stehen und die Zahl auf den Zifferblatt – die nicht mehr oder weniger, sondern digital ist – dient nur dazu, dass ich einem andern sagen kann, wo der Zeiger gerade steht. Die Zahlen auf der Uhr dienen der sprachlichen Kommunikation über die Zeigerstellung. Um die Tages-Zeit – die ja auch etwas ganz anderes ist als Zeit – abzulesen, genügen die Zeiger und die Achsenmarkierung, was daran erkennbar ist, dass viele analoge Uhren gar keine Zahlen auf dem Zifferblatt haben.

Nachdem aber die analoge Uhr digital gelesen wird, kann ich sagen, dass es beispielsweise 5 Uhr ist. Die 5 muss aber per digit vereinbart sein. Und wenn man die 5 vereinbart hat, kann man die Uhr so bauen, dass anstelle der Zeiger die 5 erscheint, was eben bei der sogenannt digitalen Uhr der Fall ist.

Re-entry digital in analog

Als “re-entry” bezeichne ich eine Unterscheidung, die innerhalb der Unterscheidung wiederholt wird. Ich unterscheide analog und digital durch eine Notwendikeit zur Vereinbarung. Die vereinbarungslose “analog”-Seite der Unterscheidung kann ich natürlich als implizite Vereinbarung sehen. “analog” verwende ich dann für die jeweils naheliegenste

Vereinbarung, in welcher ich die sinnlich wahrnehmbare Form, die eine Zeichnung mit dem gezeichneten Gegenstand teilt als Vereinbarungsgrundlage verwende. Wenn jemand beispielsweise von Tieren Grundrisse statt Aufrisse zeichnet, wird die Problematik klar.

Re-entry analog in digital

Wenn ich vereinbart habe, dass ich Grundrisse zeichne, ist die Zeichnung auf einer nächsten Stufe wieder analog zum Gegenstand, das aber nur, weil ich weiss, was ein Grundriss ist und die Unterscheidung “sinnliche Form” kenne. Solche Re-entries ändern aber nichts an der Unterscheidung, die mitnimmt, dass ich jede Uhr zeichnen kann, aber nicht DIE Uhr, weil die Uhr kein Form hat.
PS: Ausblick: Eine ganz andere Geschichte, die in diesem Blog auch noch kommen wird, beleuchtet dass “analog” im deutschen Sprachraum sehr häufig mit kontinuierlich gleichgesetzt wird, dagegen wird digital relativ selten mit diskret verwechselt.

%d bloggers like this: