Programmieren als Kulturtechnik?
Über Hobbyprogrammierer, Gelegenheitsskripter und Python
Jörg Kantel
Über mich …
(Photo: Norbert Spitzer)
Jörg Kantel, Jahrgang 1953, studierte Mathematik, Informatik und Philosophie. Er ist seit 1994 EDV-Leiter am Max-Planck-Institut für Wissenschaftsgeschichte (MPIWG) in Berlin.
Von 2006 bis 2009 war er außerdem Lehrbeauftragter für Multimedia im Fachbereich »Angewandte Informatik« an der Fachhochschule für Technik und Wirtschaft (FHTW).
Im August 2011 wurde Jörg Kantel von der Redaktion der Computerwoche zu den 100 bedeutendsten Persönlichkeiten der IT gewählt.
Seit dem 24. April 2000 gibt er außerdem das Weblog »Der Schockwellenreiter« heraus und ist damit vermutlich der »dienstälteste« noch aktive deutschsprachige Blogger.
Autor diverser Bücher und Aufsätze zu Netz- und IT-Themen.
Und jetzt noch ein wenig human touch: Jörg Kantel ist seit Jahren begeisterter Hundesportler, der zur Zeit seinen Sheltie »Joey vom Zillegarten« in Agility und Obedience ausbildet (seien sie froh, daß noch keine Turniervideos existieren).
Ein Zitat
However, while many people nowadays use a computer, few of them are computer programmers. Non-programmers aren't really empowered in how they can use their computer: they are confined to using applications in ways that programmers have determined for them. One doesn't need to be a visionary to see the limitations here.
Guido van Rossum
Die Motivation
Lernt programmieren, sonst werdet Ihr programmiert!
- Makros und Glue-Skripte statt Menü-Chaos (Photoshop/GIMP vs. ImageJ)
- Der Programmierer programmiert nie das, was der Wissenschaftler braucht. (Das liegt nicht am Programmierer, aber im Laufe des Forschungstätigkeit verändern sich die Fragen an den Forschungsgegenstand, so daß das ursprüngliche Pflichtenheft wieder umgeschrieben werden müßte)
Motivation (2)
- Programmieren verändert die Sicht auf den Forschungsgegenstand (statt ein Quelle zu analysieren, tausende Quellen (halb-) automatisch durchforsten)
Fun, Fun, Fun
- Last but not least:
Programmieren macht Spaß
(Vor allem mit batteries included)
Geschichte
Und nun ein wenig Geschichte: Hobby- und Gelegenheitsprogrammier gibt es, seit es Computer gibt.
- Denn zuerst gab es Computer, erst Jahrzehnte später Informatiker.
- In der Regel eigneten sich Naturwissenschaftler und Mathematiker das Programmier-Know-How an.
- Studenten mit Zugriff auf (Groß-) Rechner waren die ersten – auch innovativen – Hobby- (und Spiele-) Programmier.
Beispiele aus der Frühzeit
- Rogue wurde 1980 von Studenten an der Universität Berkeley für VT100-Terminals entwickelt.
- Das Collatz-Problem (auch »(3n+1)-Vermutung«) legte laut Martin Gardner Anfang der 1970er Jahre etliche Rechner am MIT lahm, weil sich Studenten an einer numerischen Lösung versuchten.
- 1982 entzifferte der (Mathematiker und) Wissenschaftshistoriker Peter Damerow mit Hilfe eines selbstgeschriebenen Programms (in Franz-LISP) die gegenstandsbezogenen Zahlsysteme des frühen babylonischen Rechnens.
Persönliche Geschichte
Meine (Programmier-) Sozialisation
- Lernte 1980 während des Studiums Algol 68 (nur mit Lochkarten) an einer CDC der FU Berlin
- Erste Bekanntschaft mit Pascal (Hull University Pascal) an einem Harris-Rechner der FU Berlin
- Studierte Software-Engineering bei Christiane Floyd an der TU Berlin und machte so die ganze Wirthsche Sprachpalette (Pascal, Modula-2, Oberon-2) mit
- Programmierte dagegen in meinem kurzen (Berufs-) Programmierer-Dasein nahezu ausschließlich in COBOL, FORTRAN und BASIC (Diskrepanz zwischen Anspruch und Wirklichkeit)
Home Computer Revolution
Wir wollten Bilder!
- Die Brotbüchse: BASIC auf dem C64
- Der IBM-PC: Turbo-Pascal und uses graph
- Mein persönlicher Favorit: LPR Modula auf dem Atari-ST
- 3D mit DKBTrace (Vorläufer des PoV Raytracers) auf dem Amiga
Doch dann kam Windows (Finder, GEM) …
Frühe GUIs
Die Nachteile der ersten Fenstersysteme aus der Sicht des Hobby-Programmierers:
- Wechsel vom linearen Programmablauf zum Event-gesteuerten Programmablauf
- Bei überlappenden Fenstern mußte sich der Programmierer um das Neuzeichnen der vorher überlappten Fensterrechtecke selber kümmern
- Fast ausschließlich kommerzielle (und teure) Programmierumgebungen und -Sprachen
Alternativen …
Alternativen und (Not-) Lösungen:
- Ausschalten des GUI: Zurück zum DOS (oder TOS) (Turbo-Pascal und Turbo-C mit uses graph). Ich war von uses graph so begeistert, daß ich es für das LPR-Modula auf dem Atari-ST nachprogrammierte.
- Verzicht auf überlappende Fenster: Oberon als Betriebssystem
- HyperCard als erste »Programmierumgebung für Nichtprogrammierer« löste ab 1989 einen gewaltigen Kreativitätsschub aus
Oberon V4
Das Betriebssystem (der Betriebsystemaufsatz) Oberon kam mit der Programmiersprache Oberon-2 (V4) ohne überlappende Fenster aus und ermöglichte so wieder eine lineare Programmierung.
Der Sündenfall
Oberon S3 (hier in der Version des StatLabs Heidelberg) besaß wieder überlappende Fenster (die sich allerdings schon von »alleine« neu zeichneten).
Die Erlösung: HyperCard
1987 erschien HyperCard und löste eine kreative Explosion aus. Es lag bis 1992 (als »Player«) allen Macs bei, später mußte man es für etwa DM 200,-- erwerben. 2004 wurde HyperCard eingestellt.
HyperCard für Wissenschaftler
- 1994 entwickelte Peter Damerow am MPIWG mit HyperCard eine erste Toolbox für Geisteswissenschaftler (Historiker)
- Es war ein modularer Werkzeugkasten, aus dem sich der Wissenschaftler seine Arbeitsumgebung »zusammenklicken« konnte
- Die rechenzeitintensiven Teile wurden als externe Funktionen in C realisiert (von einem »professionellen« Programmierer) und als XCMD resp. XFNC eingebunden.
- Zu dieser Zeit entdeckte ich Python …
Aber zuerst kam das Web …
- HyperCard war genial, aber eine (lokale) Desktoplösung
- Für Netzanwendungen bot sich damals Java an (erwies sich dann aber bald als zu begrenzt)
- Erste Webanwendungen am Institut wurden in Perl entwickelt (dafür brauchte es aber wieder den »professionellen« Programmierer)
- Ich begann mit Frontier zu experimentieren …
Frontier war …
- Schon vor AppleScript die erste Skriptsprache auf dem Mac
- Webserver, Datenbank und Scriptumgebung, aber auch Template Engine für statische Seiten
- »Vererbte« Variablen über die Folder-Hierarchie
Jetzt aber … Zope
- Wegen der seltsamen Lizenzpolitik von UserLand wechselten wir am Institut kollektiv zu Zope.
- Zope wies große Ähnlichkeit zu Frontier auf.
- Zope lieferte ein Framework, mit dem der versierte Wissenschaftler sich selbst (s)eine Applikation zusammenstricken konnte.
The Virtual Laboratory
Das Virtual Laboratory entstand Anfang 2000 als erste größere Zope-Applikation am MPIWG.
Die Anwendung existiert bis heute …
ECHO
Kurz danach (ebenfalls noch 2000) ging ECHO (European Cultural Heritage Online) ans Netz. Es ist das größte Zope- und Webprojekt des Instituts mit zehntausenden von Seiten und wird heute noch aktiv weiterentwickelt.
Die böse 3
- Die Ankündigung von Zope 3 löste eine große Verunsicherung aus.
- Wissenschaftliche Projekte sind Langzeitprojekte und auf Nachhaltigkeit angewiesen.
- Wir beschlossen, weiterhin auf Zope 2.7 und auf das Beharrungsvermögen der Community zu setzen
- Wenn Sie jetzt eine aktuelle Parallele sehen, liegen Sie sicher nicht falsch.
Die böse 3 (2)
- Mit dem »Tod« von Zope 3 löste sich zwar alles in Wohlgefallen auf, aber es hat Zope (nicht nur am MPIWG) schwer geschadet.
- Aus Verunsicherung wurden neue Projekte mit Django, Drupal, Magnolia oder gar Ruby on Rails etc. gestartet. Nur noch bestehende Projekte wurden und werden weiterhin mit Zope gepflegt.
- Vor einigen Monaten begann ich, mit web2py zu sympathisieren.
Aber warum eigentlich Python?
- Python besitzt eine klare Struktur, einen überschaubaren Befehlssatz und ist (auch für Geisteswissenschaftler) leicht zu erlernen.
- Python hat (hatte) den Anspruch, batteries included, also weitestgehend vollständig zu sein.
- Python ist betriebssystemübergreifend und open source
- Python besitzt einen interaktiven Interpreter (zum Ausprobieren)
- Es gibt viele Bibliotheken für Wissenschaftler und Hobbyprogrammierer
Module und Bibliotheken
Wichtige Module und Bibliotheken für Hobbyprogrammierer und Wissenschaftler:
- Python Image Library (PIL) – warum nicht included?
- PyGame (die einfachste Möglichkeit, Graphiken auszugeben und Animationen zu erstellen)
- NumPy, SciPy und die MatPlotLib (nicht nur für Naturwissenschaftler)
- Zope und web2py für den Webworker
- Das Natural Language Toolkit (NLTK) für alle, die mit Sprache umgehen
Sage
Und natürlich Sage, die wirkliche batteries included-Lösung für Berufs- und Hobby-Mathematiker. So ungefähr stelle ich mir die Zukunft von Python vor (doch dazu später).
Python 3
Die böse 3 (reloaded)
Die böse 3 (reloaded)
Merken Sie etwas … ??
- (Fast) alle genannten Pakete laufen nicht mit Python 3 und einige davon werden vermutlich nie mit Python 3 laufen
- Es wäre aber unfair, dies den Paketentwicklern in die Schuhe zu schieben, viele davon sind Wissenschaftler, ihnen fehlt häufig die Zeit, die Anpassungen vorzunehmen.
- Also arbeiten alle mit
Zope 2.7 Python 2.7 weiter und hoffen auf das Beharrungsvermögen der Community
Die Konkurrenz
Die Konkurrenz steht in den Startlöchern:
- Processing ist eine genial einfache IDE für Hobbyprogrammierer und Künstler mit einem Schwertpunkt auf Animation und Visualisierung. Und dank der Java-Wurzeln kann man auf eine riesige Menge von fertigen Java-Bibliotheken zurückgreifen.
- Ruby (mit Shoes?): Dank dem Framework Ruby on Rails ist diese Sprache in den letzten Jahren enorm populär geworden. Allerdings fehlen noch viele Bibliotheken, die Python so attraktiv machen.
Meine Traumumgebung
Wenn ich mir was wünschen dürft …
Meine Traumumgebung (cont.)
- Python in einem Notebook-Interpreter ähnlich Mathematica (zum Teil schon in IPython realisiert)
- Kommt mit einem one click installer als Komplettpaket
- Besitzt einen eigenen Paketmanager, der dafür sorgt, daß später hinzugefügte Bibliotheken auch genau dort installiert werden (und nicht in einem anderen Python auf dem Rechner)
- Betriebssystemübergreifend, d.h. läuft identisch mindestens unter Windows, Linux und MacOS X
Finden Sie diesen Traum nicht auch attraktiv?