www.aec.at  
Ars Electronica 2003
Festival-Website 2003
Back to:
Festival 1979-2007
 

 

Medien programmieren


'Casey Reas Casey Reas

Die Entwicklung von Software ist ein bestimmender Faktor in der modernen Kultur und wird immer mehr zur Grundlage unserer Wirklichkeit. Die Bürger dieser Welt starren vereint auf die reflektierenden Oberflächen ihrer Mobiltelefone und Computer. Ihr Verstand und ihre Hände agieren in einem Raum zwischen Wirklichkeit und Willkürherrschaft von Menüs, Fenstern, Klicken und Ziehen. Künstler bedienen sich der Software, um unsere zunehmend digitalen Sozial- und Politstrukturen zu kommentieren und um die dem Computercode zugrunde liegenden Formalannahmen in Frage zu stellen. Zeitgenössische Künstler mit den unterschiedlichsten Inhalten und Intentionen drücken ihre Ideen mithilfe von Software aus. Software bildet die Grundlage einer sich immer neu orientierenden elektronischen Kunst (Kybernetik, Virtual Reality, CAVE, A-Life, Net.art, Augmented Reality), auf der Bedeutung und Inhalt aufbauen. Mit der Wiederbelebung des Konzepts der „Software-Kunst“ bei Festivals wie der Transmediale oder READ_ME wird die Rolle der Software für unsere Kultur- und Kunstpraxis wieder kritisch diskutiert. Dieser Beitrag weitet den Diskurs aus und betrachtet Software als Medium mit einmaligen Ausdrucksmöglichkeiten und Programmiersprachen als Materialien mit ganz speziellen Eigenschaften.

DEFINITION VON SOFTWARE
Was ist Software?
Software wird in Programmiersprachen geschrieben; eine Abfolge von alphanumerischen Zeichen und Symbolen, die nach strengen Syntaxregeln angeordnet werden. (1) Falls Sie für gewöhnlich Programme nur bedienen, folgen hier einige Codebeispiele:
Perl
opendir(DIR, $dir) || die $!;
@files = readdir(DIR);
closedir(DIR);
foreach $file (@files) {
if($file =~ ".xml") {
handle("$dir/$file");
}
}
C++
main() {
int c;
c = getchar();
while(c != EOF) {
putchar(c);
c = getchar();
}
}
LISP
(define (square x)
(* x x))
(define (sum-of-squares x y)
(+ (square x) (square y)))
In der Software beschreibt der Programmierer Strukturen, die „Prozesse“ definieren. Diese Strukturen werden in Code übersetzt, der von einer Maschine ausgeführt wird. Die Prozesse laufen unter aktiver Beteiligung der elektronischen Bauteile des Computers ab. Der Computerwissenschaftler Harold Abelson vom Massachusetts Institute of Technology erklärt: „[…] ein Prozess [bearbeitet] andere abstrakte Dinge, genannt ,Daten‘. Der Ablauf eines Prozesses wird durch einen Satz von Regeln gesteuert, genannt ,Programm‘. Menschen erzeugen Programme, um Prozesse zu steuern.“ Erst dieser aktive Prozess des Lesens, Manipulierens und Speicherns von Daten ermöglicht die einzigartigen Charakteristika des Mediums Software.

Software ist ein MediumSoftware hat den Brückenschlag zwischen der Kunst der Vergangenheit und der elektronischen Kunst der Gegenwart und Zukunft ermöglicht. Roy Ascott meint, wir haben „Inhalt, Objekt, Perspektive und Darstellung“ durch „Kontext, Prozess, Immersion und Verhandlung“ ersetzt. Die wichtigste Eigenschaft der Software als Medium ist das Faktum, dass man reagieren kann. Ein reagierendes Kunstwerk kann mit seiner Umwelt interagieren. Myron Krueger, der Pionier der Artificial Reality, verweist auf einige interessante Metaphern für die Interaktion zwischen Mensch und Software, wie etwa Dialog, Verstärkung, Ökosystem, Instrument, Spiel und Erzählung. Ich möchte jedoch Aspekte der Software behandeln, die fundamentaler sind als jene, die Ascott und Krueger erörtern. Sie bilden die Basis für Softwaremedien und umfassen dynamische Form, Gestik, Verhalten, Simulation, Selbstorganisation und Anpassung.

Jede Sprache ist einzigartig
So wie es viele verschiedene Landessprachen gibt, sind auch viele verschiedene Programmiersprachen in Gebrauch. Wie unterschiedliche Landessprachen verschiedene Denkweisen vermitteln, ermöglichen unterschiedliche Programmiersprachen dem Programmierer, differenzierte Softwarestrukturen zu verfassen. So wie manche Redewendung nicht in eine andere Sprache übersetzt werden kann, können auch Programmstrukturen nicht von einer Maschinensprache in die andere übertragen werden. Einige Programmiersprachen wurden speziell für Geschäftsanwendungen entwickelt (COBOL), andere zur Erforschung künstlicher Intelligenz (LISP) und wieder andere zur Datenbearbeitung (Perl). Viele der in diesen verschiedenen Umgebungen geschriebenen Strukturen können nur in der jeweiligen Sprache ausgedrückt werden. Der abstrakte Animator und Programmierer Larry Cuba beschreibt seine Erfahrungen so: „Jeder meiner Filme wurde auf einem anderen System mit anderer Programmiersprache gemacht. Eine Programmiersprache gibt einem die Macht, einige Ideen auszudrücken, und beschränkt gleichzeitig die Möglichkeiten, andere zu realisieren.“

Programmiersprachen sind Materialien
Man kann sich eine Programmiersprache auch als ein Material mit ganz spezifischen Vor- und Nachteilen vorstellen. Die Eignung der einzelnen Sprachen hängt vom jeweiligen Kontext ab. Manche Sprachen haben eine ganz einfache Bedienführung, schöpfen aber die Leistungsfähigkeit des Rechners nur zu einem Bruchteil aus. Andere wiederum sind äußerst komplex, bieten aber die totale Kontrolle, weil auf alle Bereiche der Maschine zugegriffen werden kann. So sind einige Programmiersprachen „flexibel“ und andere „starr“. Flexible Sprachen wie Perl oder Lingo eignen sich bestens zum schnellen Erstellen kurzer Programme, bereiten aber oft Schwierigkeiten bei der Wartung oder im Verständnis umfangreicher Programmcodes. Starre Sprachen wie 68008 Assembly oder C verlangen zwar besondere Sorgfalt bis ins kleinste Detail, ihre Ergebnisse sind aber effizient und stabil. Wie sich der „Feel“ und „Look“ von Kiefern- und Eichenholz unterscheidet, so hat jede in einer bestimmten Sprache geschriebene Software ihre eigene ästhetische „Gestalt“. Ein Java-Programm unterscheidet sich eindeutig von einem ähnlichen, in Flash geschriebenem. Usern, die im Umgang mit beiden vertraut sind, fallen diese Unterschiede auf.

Programmieren ist exklusiv
Oft stellt man sich Programmierer als einen ganz eigenen Typ Mensch vor. Ein Grund, weshalb sich immer ein bestimmter Persönlichkeitstyp dem Programmieren zuwendet, ist wohl darin zu suchen, dass die Programmiersprachen im Allgemeinen von ähnlich denkenden Menschen entwickelt werden. Man kann verschiedene Programmiersprachen für Menschen mit visuellem oder räumlichem Denkvermögen generieren. Alternative Sprachen erschließen das Programmieren auch Menschen mit anderen Denkmustern. LOGO war eine der ersten alternativen Sprachen, die Ende der 1960er Jahre von Seymour Papert als Sprachkonzept für Kinder entworfen wurde. Mit LOGO können Kinder verschiedenste Medien, wie z. B. eine Roboterschildkröte oder Bilder, am Bildschirm programmieren. Als aktuelles Beispiel wäre die in den 1980er Jahren von Miller Puckette am IRCAM entwickelte MAX-Programmierumgebung zu nennen. MAX erhielt begeisterte Zustimmung von Tausenden Künstlern, die sie als Grundlage für audiovisuelle Software und Installationen einsetzen. So wie die grafischen Benutzeroberflächen den Computer für Millionen von Menschen erschlossen haben, werden alternative Programmierumgebungen neue Künstlergenerationen hervorbringen, die Software einsetzen.
Ausdrucksformen von Software
Führen Computer Programme aus, so handelt es sich weniger um statische Texte auf dem Bildschirm als vielmehr um dynamische Prozesse. Aus diesen Prozessen entwickeln sich die Kernausdrucksformen von Software wie dynamische Form, Gestik, Verhalten, Simulation, Selbstorganisation und Adaption. Auf der Basis dieser und noch einiger anderer grundlegender Formen werden komplexere Gedanken und Erfahrungen vermittelt. Im Folgenden wird jede Ausdrucksform beschrieben und anhand eines Beispiels der Aesthetics & Computation Group vom Massachusettes Institute of Technology illustriert. Diese Beispiele wurden zwischen 1998 und 2001 von Künstlern / Programmierern geschaffen und vermitteln eine klare Beschreibung der jeweiligen Softwareausdrucksform.

Dynamische Form
Eine dynamische Form ändert sich im Verlauf der Zeit. Tut sie dies durch einen Stimulus, ist sie reaktiv. Scratch von Jared Schiffman (Abbildung 1) vermittelt die grundlegenden Eigenschaften einer dynamischen Form. Ein verschiebbarer Kreis wirkt sich dabei ständig auf die Kontur der Grafikelemente aus. Durch Hinzufügen von Bewegungs- und fließenden Reaktionsebenen wird in Scratch die visuelle Kommunikation gesteigert. Ganz allgemein kann jede Form auf ein beliebiges Signal aus der Umwelt reagieren. Diese können von herkömmlichen Eingabegeräten wie Maus, Mikrofon oder Videokamera stammen oder von eher exotischen wie Strahlungssensoren oder Sonar.

Gestik
Gestik ist ein wichtiger Punkt für jedes kontinuierliche Medium, und Software ist in der Lage, Gestik zu vermitteln und zu interpretieren. Die Software AVES von Golan Levin (Abbildung 2) besteht aus einer Gruppe von Programmen, die Handbewegungen verstärken, indem sie die gewonnenen Daten in Bilder und Töne umsetzen. Eine Applikation weist der Struktur jeder Geste einen Klang zu, der die Handstellung widerspiegelt. Eine andere zerlegt die Geste in Schichten, um verlaufende Klangtexturen zu generieren, die durch die Präsenz des Cursors aktiviert und mit ihm kombiniert werden. Das Umsetzen von Gesten ist natürlich komplexer, eröffnet aber neue Möglichkeiten für fesselnde Interaktionen. Software zur Handschriftenerkennung ist ein Anwendungsgebiet der Gestikinterpretation. Einige Installationen und Videospiele setzen eine einfachere Form der Gestikerkennung ein, um die User die Aktionen anhand komplexer Bewegungen steuern zu lassen.

Verhalten
Verhalten ist Bewegung, die eine Absicht erkennen lässt. Die Kombination einfacher Verhaltensmuster bringt „Persönlichkeit“ oder „Neigungen“ hervor. Verhalten kann man erzeugen, indem man Programme intuitiv schreibt oder biologische Modelle verwendet. Im Projekt Trundle (Abbildung 3) bestimmt ein Programm, wie das phyische Objekt auf Reize aus seiner Umgebung reagieren und sich entsprechend bewegen soll. Trundle scannt seine Umgebung auf der Suche nach Menschen, versucht aber zu fliehen, sobald es jemanden entdeckt. Es ist neugierig und ängstlich. Eine Reihe von Sensoren auf Trundles Körper überwacht seine nächste Umgebung und sendet Signale an den Mikroprozessor, der die Motoren steuert. Ganz allgemein kann Verhalten dazu eingesetzt werden, Software geistig anspruchsvoller zu gestalten, indem man Objekte personifiziert, Charaktere entwickelt, Wirkungen vermittelt und eine psychologische Ebene hinzufügt.

Simulation
Simulierte Bereiche der physischen Welt sind ein einfacher Einstieg, um Software wahrzunehmen. Unsere Sinne sind so entwickelt, dass sie auf die Gesetze der Natur reagieren. Pong, eines der ersten Computerspiele überhaupt, war eine stark abstrahierte Tennissimulation. In der modernen Technik und Wissenschaft bilden Realitätsmodelle die Grundlage für den Entwurf von physischen Objekten und für Forschungsaufgaben. Das Programm Floccus von Golan Levin (Abbildung 4) generiert eine Gruppe elastisch schwingender Linien. Kombiniert man das Ganze noch mit Reaktionen, so lösen die von dieser einfachen Simulation erzeugten Wellenbewegungen bei den Betrachtern Bewunderung aus. Die Linien verlängern und verkürzen sich je nach Kraft, Masse und Beschleunigung. Softwaresimulationen können über das Nachahmen von Perspektiven, Stoffen und physikalischen Gesetzen hinausgehen – und ebenfalls Prozesse natürlicher Systeme simulieren.

Selbstorganisation
Die Fähigkeit, dass Elemente sich selbst organisieren können, ermöglicht einen Entstehungsprozess. Durch die Interaktion vieler autonomer Prozesse entsteht Struktur. Valence von Ben Fry (Abbildung 5) liest den Text eines Buchs Wort für Wort und ordnet jedes anhand eines Regelsystems räumlich an. Durch die Beziehungen verschiedenster Wörter im Text entsteht ein komplexes Gebilde. Kleine Änderungen an den Interaktionsregeln haben potenziell große Auswirkungen auf die Visualisierung.

Adaption
Anpassung ist die Fähigkeit, sich zu ändern. Damit Software sich anpassen kann, braucht sie eine Darstellung ihrer selbst und muss sich ihres Kontexts bewusst sein. Die Software Anemone von Ben Fry (Abbildung 6) kann ihre Dichte selbst überwachen und ihre Struktur „stutzen“, um im Gleichgewicht zu bleiben. Anemone visualisiert die Zugriffe auf die Website. Im Lauf der Zeit entfernt das Programm aus der Fülle der Daten einzelne Abschnitte, damit neue wachsen können und die Lesbarkeit der Informationen nicht beeinträchtigt wird. Applikationen zu schreiben, die sich tatsächlich an ihren Kontext anpassen, ist eine Herausforderung. Adaptive Ausdrucksformen sind immer noch selten. Setzt man einen Interpreter ein, so kann sich das Programm während des Ablaufs selbst umschreiben.
Programmieren
Auch wenn die elektronische Kunst nicht ohne Software auskommt, so erstellt doch jeder Künstler seinen Code individuell – vom Schreiben in wenig entwickelten Sprachen bis hin zur Zusammenarbeit mit Programmierern. Einige Künstler setzen Software als Werkzeug ein, um Arbeiten in einem anderen Medium zu schaffen. Sie benützen handelsübliche Produkte, um Drucke und Videos zu erzeugen und Entwürfe zu erstellen, die dann in einem analogen Medium ausgeführt werden. Andere arbeiten mit professionellen Programmierern zusammen, denen sie Vorgaben machen, die diese umsetzen. Viele setzen Programmierumgebungen ein, die für Grafiker und Künstler entwickelt wurden. So erstellen sie ihre Arbeiten in Script- und visuellen Programmierumgebungen wie Director, Flash oder MAX, die das Schreiben von Software für Nicht-Programmierer erleichtern. Nur ein kleiner Teil der Künstler, die mit Software arbeiten, programmiert in professionellen Programmiersprachen. Sie verwenden umfassende Sprachen wie C, Java oder Perl und entwickeln oft ihre eigenen Werkzeuge für das Arbeiten in diesen Umgebungen.

Es gibt keine „richtige“ Methode, wie man mit Software zu Werk geht. Es ist eine persönliche Entscheidung, die das Bedürfnis nach Kontrolle einerseits und Einfachheit andererseits auszugleichen sucht. Um ein erstklassiger Programmierer zu werden, bedarf es vieler Jahre harter Arbeit. Aber jeder kann die grundlegenden Prinzipien dieses Mediums problemlos verstehen. Ich vertrete die Meinung, dass jeder Künstler, der Software einsetzt, auch des Schreibens und Lesens von Software kundig sein sollte. Wie ist das im Kontext von Software zu verstehen? Alan Kay, der innovative Gedanken zur Computernutzung als Medium vertritt, schreibt sinngemäß: Ein Medium „lesen“ zu können heißt, dass man auf Materialien und Werkzeuge zugreifen kann, die andere entwickelt haben. In einem Medium „schreiben“ zu können bedeutet, man kann Materialien und Werkzeuge für andere schaffen. Um als kundig zu gelten, muss man beides können. Schreibt man für den Druck, kreiert man rhetorische Werkzeuge; sie zeigen auf und überzeugen. Schreibt man für Computer, generiert man Prozesse; sie simulieren und entscheiden. Diese „simulierenden“ und „entscheidenden“ Prozesse sind der Kern der Software und können nur vollständig verstanden werden, wenn man sie auch konstruiert.

Künstler schreiben immer öfter ihre eigene Software. Dank Internet, der Popularität von Script-Umgebungen wie Flash und sinkenden Hardwarepreisen beschäftigen sich immer mehr Künstler mit dem Programmieren. Ein hervorragendes Beispiel dafür findet man im Bereich der audiovisuellen Programmierung. Kleine Softwarefirmen wie Cycling ’74, die Entwickler von Jitter, reagieren rasch auf die Wünsche ihrer Künstlergemeinde und fördern die Entwicklung von kreativen Werkzeugen. Jitter ist eine hoch entwickelte Bibliothek visueller Strukturen zur Integration von Bild und Ton. Viele Künstler sind nicht mehr auf Entwickler für ihre Werkzeuge angewiesen. Die PinkTwins, zwei Musiker / Programmierer aus Helsinki, haben Framestein entwickelt, eine mit Pure Data verlinkte Echtzeit-Open-Source-Software zur Videobearbeitung für Performances. Die deutsche Künstlergruppe Meso ging mit vvv, einer ehrgeizigen Sammlung von Werkzeugen zur Echtzeit-Videosynthese, sogar noch weiter. Einige Künstler entwickeln Software-Tools für sich, die sie nach und nach perfektionieren und dann der Gemeinschaft zur Verfügung stellen.
SYNTHESE
In den letzten dreißig Jahren haben Künstler mithilfe des Mediums Software innovative Werke geschaffen, einstweilen aber nur einen Bruchteil der konzeptuellen Möglichkeiten sondiert. Bisher verlangten Programmiersprachen und -umgebungen nach einer gewissen Methodik, die die Mehrheit der Künstler, die interaktive und programmatische Arbeiten schaffen wollten, nicht ansprach. Es gibt jedoch immer neuere Werkzeuge, die die Künstler zunehmend direkt mit dem Medium Software arbeiten lassen. Die immer besseren Programmierkenntnisse der Künstler führen zu einem immer raffinierteren Softwareeinsatz und zu neuen Materialien und Entwicklungsumgebungen, die ihrerseits die Herstellung von Software einer noch größeren kritisch-kreativen Gemeinschaft zugänglich machen.

Aus dem Amerikanischen von Michael Kaufmann

(1)
Es gibt auch so genannte „visuelle Programmiersprachen“, die das Definieren von Strukturen
mittels grafischer Symbole erlauben.zurück

Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie: Struktur und Interpretation von Computerprogrammen: Eine Informatik-Einführung, Springer, Berlin [u.a.] 1991

Ascott, Roy: „Moist Ontology“, in The Art of Programming. Sonics Acts Press, Amsterdam, 2002

Cuba, Larry: „Calculated Movements“, in Prix Ars Electronica Edition ’87: Meisterwerke der Computerkunst.
Verlag H.S. Sauer, 1987, S. 111

Kay, Alan: „User Interface: A Personal View“, in The Art of Human-Computer Interface Design,
Hrsg.: Brenda Laurel, Addison-Wesley Publishing Company, Reading/Massachusettes 1989

Krueger, Myron: „Responsive Environments“, in Multimedia, From Wagner to Virtual Reality,
Hrsg.: Randall Packer und Ken Jordan, W.W Norton & Company, Inc., New York 2001