Ü b e r   d i e   a l g o r i t h m i s c h e n   A r b e i t e n :


Alle algorithmischen Arbeiten auf dieser Website (in den Ebenen B/C, D, G und H) beruhen auf nicht-linearem Code. Nicht-linear heißt in diesem Fall, dass den Variablen nur am Anfang ein fixer Zahlenwert zugeordnet wird, während des Ablaufs der Applikation sich der aber ständig ändert und nicht vorhersehbar ist. (Man kann nicht sagen, welche Werte sie z.B. bei der 1000. Iteration annehmen werden, es sei denn man durchläuft alle diese 1000 Iterationen.) Die Ergebnisse einer Iteration werden zu den Ausgangswerten der nächsten. Diese Vorgehensweise ("diskretes dynamisches System") ist nahe an der Natur und erzeugt folglich auch organische Bewegungen sowie Strukturen, die natürlich gewachsen aussehen.
Streiten sich die Chaosforscher noch, ob ihr Unvermögen, dynamische Systeme in der Natur über lange Zeiträume vorherzusagen, in zu geringem Wissen begründet ist, oder ob man das prinzipell nicht kann, egal wie viel man weiß?
Nun, die Software, die hier verwendet wird, hat eine begrenzte numerische Auflösung. In den "mathematischen Situationen", die damit erzeugt werden, kann man "alles wissen", und folglich sind die Ergebnisse dieser Applikationen auch zu 100% reproduzierbar. Jede neue Berechnung z.b. eines Bildes sieht, bis aufs Pixel genau, exakt gleich aus. (Dass das so ist, sieht man z.B. an den Videos, in denen sich einzelne Parameter langsam ändern, der Großteil des Bildes aber völlig ruhig und stabil bleibt.)
Zudem werden in der Regel nicht mehr als 30 Iterationen berechnet, bevor das System zu im Code festgelegten Ausgangswerten zurückkehrt (weil mehr am Resultat nichts mehr ändern würden).

Die mathematische Strenge wird allerdings bewusst durchbrochen, durch mehrere Methoden:

- erstens durch eine Art von Evolution:
Diese Scripts werden z.T. über Jahre entwickelt. Neu generierte Bilder werden immer wieder begutachtet und interessante Strukturen in ihnen verstärkt oder gar isoliert, indem nach den verantwortlichen Parametern gesucht wird, und deren numerische Werte so gewählt, dass der Effekt (z.B. eine Interferenz in einem Zusammenspiel von Oszillatoren) möglichst stark zutage tritt. Da die Parameter miteinander vernetzt sind und sich gegenseitig beeinflussen, muss so ein "numerisches Fenster" für jeden von ihnen gefunden werden, was ziemlich zeitaufwändig sein kann.
Da dabei immer wieder auf Unvorhergesehenes reagiert wird, kann (muss aber keineswegs) das Endergebnis von der ursprünglichen Idee abweichen. Dieses Vorgehen ist also nicht wirklich zielgerichtetes Programmieren. Es bedeutet aber auch nicht, dass der Programmierer nicht weiß, was er tut. Es bedeutet lediglich, dass er zuweilen mehr Entdecker (von Naturgesetzen) ist denn Erschaffer. Unvorhersehbares wird (manchmal) willkommengeheißen, und bereichert so das willentlich Erzeugte.
Das ist keine Geringschätzung des Verstands, sondern eine Verneigung vor der Natur (die auch in der Mathematik zu Hause ist).

- Einsatz von Randomfaktoren:
Auch das scheint gerne missverstanden zu werden, in dem Sinne, dass der so programmierte Code dann per se zufällig ist und wie ein Screensaver Beliebiges generiert, und sich niemand wirklich anstrengt um etwas von seinem Willen und Verstand bestimmtes zu schaffen.
Dem ist nicht so, schon allein weil aller Code von Grund auf neu geschrieben wird. Der Einsatz von Random-Faktoren dient nur dazu, die möglichen Verhaltensweisen eines mathematischen Rahmens auszuloten. Aus der Vielzahl der so generierten möglichen Antworten wird dann bewusst ausgewählt, was weiterverfolgt werden soll.

Abgesehen davon kommen Random-Faktoren nur noch in einer zweiten Weise zum Einsatz, nämlich wenn ein Bild mittels vieler Millionen verstreuter Pixel gemalt wird. Diese Methode eignet sich zum Visualisieren von Kraftfeldern (wie Eisenstaub, der magnetische Feldlinien zeigt), und um die Interaktionen zwischen Oszillatoren zu veranschaulichen. Dabei spielt es keine Rolle, ob die winzigen, malenden Objekte zu Beginn zufällige Anfangspositionen haben, weil sich die Unterschiede durch ihre große Zahl ohnehin verwischen. Was bleibt ist ein leichtes Rauschen, was einem code-generierten Video oder Bild aber durchaus zum Vorteil gereichen kann, weil es dadurch lebendiger wirkt. Genausogut könnte man jedoch auf diese Zufälligkeit verzichten und die Millionen Pixel von zuvor festgelegten Positionen starten lassen. Am Aussehen des Bildes würde das, abgesehen von besagtem Rauschen, nichts ändern.

Dieser beschränkte Einsatz von Random-Faktoren bedeutet also keineswegs, dass am Code irgendetwas beliebig und zufällig ist.

- eine dritte Methode bezieht das Unterbewusstsein mit ein. Dazu wird, z.B. durch manuelle Eingabe via Maus, auf eine wechselnde Situation reagiert (z.B. auf die Musik im Falle einer Soundvisualisierung), und zwar so, dass der Verstand keine Möglichkeit hat, auf vorgefertigte Muster zuzugreifen.
Das wird unterstützt durch den Einsatz von Cannabis (das ja den Zugang zum Unterbewusstsein öffnet, indem es die abschirmende Wirkung des Verstands vorübergehend mindert), und/oder einfach dadurch, dass nicht zu viel überlegt, sondern ein gewisses Maß an Spontaneität erhalten wird. Dazu macht man sich zwar mit einer Aufgabe (durchaus gewissenhaft) vertraut, führt sie dann aber schneller aus, als der Verstand es kontrollieren könnte.
Das so zustandegekommene Ergebnis kann man danach immer noch "korrigieren", sprich einem zuvor festgelegten Ziel annähern.

Durch diese Methoden kommen Scripts zustande, die man mit zielgerichtetem Programmieren alleine niemals erzeugen könnte, denn sie sind zwar ziemlich verschachtelt, aber (zuweilen extrem) kurz.
Ihre geringe Länge steht im starken Gegensatz zur Komplexität der Bilder und Bewegungen, die sie generieren, und zwar (wahrscheinlich) mehr noch als bei mittels fraktalem Code erzeugten, weil es in ersteren keinerlei Selbstähnlichkeit gibt.
Um ein Bild wie dieses durch zielgerichtetes Programmieren zu erzeugen, müsste der Code jeden Splitter und jede Faser definieren. Und das Ding bewegt sich ja auch noch. Das Script wäre wohl 50 A4-Seiten lang. Das bringt kein Mensch zustande. Durch oben beschriebene Methoden kommt es zu einem Script, das eine halbe A4-Seite lang ist...

Nachtrag 7. Juli 2016:
Die Ausstellung "Also Sprach Algorismi" (von 21.6. bis 3.7. 2016) wurde von mehreren Programmierern besucht, die fragten, wie diese Arbeiten (zu sehen waren fine-art Prints im Format A0, vor allem von Motiven der k456-Serie) zustande kommen.
Dabei waren zwei Dinge zu beobachten:

Es ist irreführend, random-Faktoren überhaupt zu erwähnen. Sie spielen eine kleine Rolle, auf die man genausogut verzichten könnte, ohne am Ergebnis das Geringste zu ändern. Ihre Erwähnung führt automatisch dazu, dass dem Code Beliebigkeit unterstellt wird, und seinem Finder, dass er im Trüben fische. (Beim Versuch, diesen Verdacht zu zerstreuen, kann man sich dann den Mund fusselig reden...)

Und zweitens ist die Analogie mit dem Eisenstaub, der auf eine Platte gestreut wird, unter der sich Magnete befinden, eine genaue Beschreibung der Vorgänge, die auch hervorhebt, inwiefern er sich von anderer algorithmic art unterscheidet:
in diesem Code werden keine Formen beschrieben, keine Richtungen, Längen oder Kurven. Formen wachsen nicht in dem Sinne, dass sie irgendwo beginnen und sich, bestimmten Regeln entsprechend, ausbreiten. Hingegen gibt es (unsichtbare) Punkte in der Ebene (die "Magnete"), deren Abstände und Winkel zueinander und zum jeweiligen malenden Pixel (dem "Eisenstaub") den Ausgangspunkt für komplexe Beziehungen bilden. Der Code definiert ein (man könnte sagen, morphogenetisches) Feld. Da er immer Winkelfunktionen enthält (sinus, cosinus, tangens), kann man von Oszillationen sprechen, die sich überlagern. Sie tun dies jedoch auf komplexere Weise, als es reale Magnetfelder könnten, weswegen die Ähnlichkeit der Mechanismen nicht augenfällig ist. Im Prinzip ist es aber das selbe.

Dieser Code kann Formen also nicht von irgendwoher ausgehend aufbauen, nicht aus einer Ecke oder einem Anfang. Man kann das Bild, das er codiert, nur sichtbar machen, durch besagtes Aufstreuen von Pixeln, die dann abgelenkt (wegbewegt) werden, was weiße Stellen ergibt, oder sich niederlassen, was zur einer "Schwärzung" führt, exakt wie wenn ein Foto entwickelt wird. Genau wie dieses im Entwicklerbad, wird das algorithmische Bild beim Rendern dunkler, deutlicher. Die Formen und Farben in ihm verändern sich jedoch während des ganzen Prozesses (also abgesehen davon, dass sie deutlicher werden) nicht im Geringsten.
Die aufgestreuten, malenden Pixel (die "Eisenpartikel") könnten dabei genausogut von links nach rechts, oder von oben nach unten, entlang einer Linie starten, anstatt an zufälligen Positionen. Das würde die random-Faktoren eliminieren, am Bild jedoch nichts ändern. (Der einzige Grund, warum diese Methode (einer "scan line") nicht benutzt wird, ist, dass es dabei zu Interferenzen kommt zwischen der Auflösung dieser Linie und des Bildes.)
Aus all dem folgt auch, dass sich so ein Bild nicht selektiv verändern lässt: man kann nicht eine bestimmte Form verschieben, und alles andere unverändert lassen (man könnte es in Photoshop, aber um Bildbearbeitung geht es hier nicht). Man kann das Feld nur als Ganzes ändern. Das hat Auswirkungen auf das gesamte Bild, die man zwar in vielen Experimenten lernen kann, halbwegs zu steuern, aber nie völlig verstehen, weil das menschliche Gehirn dafür nicht ausgelegt ist. Eher noch als die Zusammenhänge im Code rational zu verstehen, kann man sie intuitiv erfassen, weswegen Cannabis bei dieser Art des Programmierens die Rolle spielt, die es spielt.