- Erst wenn der letzte Programmierer eingesperrt und die letzte Idee patentiert ist, werdet ihr merken, daß Anwälte nicht programmieren können
- -- leichenwagen, german-bash.org #330138
Beim Chaos Camp hatte ich es mir gegönnt, statt zu zelten in einem Hotel in der Nähe zu übernachten, nicht zuletzt auch wegen des Frühstücks. Bei eben diesen habe ich keine Gelegenheit ausgelassen, neue Leute kennenzulernen. Einer von ihnen, der sonst ebenso wie ich alleine gefrühstückt hätte, stellte sich mir als
Holgi vor. Es ist Radiomoderator und hat unter anderen bis 2007 das Chaosradio gemacht. Das Frühstück war sehr kurzweilig, ebenso wie der spontan angesetzte Besuch beim örtlichen Real Markt.
Am letzten Tag saßen wir noch einmal beim Frühstück zusammen, und er ließ den Satz fallen "eigentlich wollte ich auch mal immer programmieren lernen..." meine Antwort war: "Lass es, es ist eine Zeitsenke." Je länger ich darüber nachdenke, desto mehr fällt mir auf, dass diese Antwort doch zu kurz gegriffen ist. Deshalb nutze ich doch einmal mein eigenes Blog, mich etwas detaillierter darüber auszulassen.
Mittlerweile würde ich die Fragestellung, ob man einfach mal so Programmieren lernen sollte, mir eine Gegenfrage beantworten: "Es lohnt sich nur, wenn Du weißt, was Du programmieren willst. Meinst Du, es lohnt sich die Technik des Malens zu lernen, wenn man nicht weiß, was man malen soll. Ein Musikinstrument, wenn Du keine Lieder spielen willst? Oder eine Fremdsprache, wenn man nicht vor hat, Literatur in dieser Sprache zu lesen, Filme zu sehen, und auch nicht sich mit Leuten unterhalten möchte?"
Gut, im letzten Fall könnte man Klingonisch als Gegenbeispiel anführen. Das stimmt aber auch nicht ganz, denn niemand lernt Klingonisch als erste Fremdsprache, sondern sind es meist Leute, die mehrere Sprachen beherrschen, und sich auch mit der Thematik "Sprache" im Allgemeinen auseinander setzen. Und im Lernen einer Sprache und einer Programmiersprache gibt es eine Menge parallelen auszumachen. Eigentlich ist die zweite die schwerste: man fängt automatisch an das neu gelernte mit dem bisher bekannten zu vergleichen: wo sind Parallelen, was sind Unterschiede. Und auf einmal befindet man sich bei einer allgemeinen Betrachtung von Programmiersprachen: man lernt eine Menge zu differenzieren.
Zum Beispiel Fehler: meine ersten Programme habe ich mit dem Microsoft BASIC Interpreter des C64 geschrieben. Dort vermischen sich noch im Denken syntaktische Fehler, bei denen zum Beispiel ein Befehl falsch geschrieben ist, mit Laufzeitfehlern, als Fehler der Sorte "das Programm rechnet nicht das aus, was ich eigentlich will". Mittlerweile lernt man, dank dem Compiler schon vom Anfang an diese beiden Fehlersorten zu unterscheiden. Und mit der Zeit man lernt auch noch ganz neue tolle Fehlertypen kennen, so zum Beispiel die Designfehler. So bezeichne ich Fehler, die man gemacht hat, um zum Beispiel festzulegen, wie Programmteile miteinander kommunizieren. Die Programmteile laufen einzeln für sich gut, aber im Zusammenspiel hat man falsche Entscheidungen getroffen. Es gibt ja Kollegen, die behaupten, dass es solche Fehler gar nicht gibt, weil man ja seinerzeit diese Entscheidung eben bewusst getroffen hat, aber ich schweife ab.
Natürlich sind die ersten typischen "Gehversuche" mit eine Programmiersprache, wie das typische "Hallo, Welt!", "geben sie bitte zwei Zahlen zum Addieren ein" oder "
99 Bottles Of Beer" nicht wirklich Programme mit einem Nutzen für die Allgemeinheit. Selbst der Nutzen für einen selbst, ist außer dem Sinn des Erlernens der Programmiersprache oder Programmierumgebung nicht wirklich gegeben. Jedenfalls habe ich meine alten Programmierversuche bisher noch nie wiederverwendet.
Aber nochmal zurück zur grundsätzlichen Frage "sollte ich programmieren lernen?". Ich möchte nochmal den Vergleich dem dem Malen bemühen. Lohnt es sich malen zu lernen, eventuell noch verschiedene Techniken wie Tusche, Ölfarben, Kreide oder verschiedene Pinsel-, und Sprühtechniken, wenn man nicht vor hat, auch mal irgendwann ein Bild zu malen? Das einzige Mal, dass ich mich freiwillig außerhalb des Kunstunterrichts mit dem Malen beschäftigt habe, war das Bemalen von T-Shirts. Ich wollte Motive umsetzen, die man damals (Ende der 80er) nicht kaufen konnte, und das Bedrucken von T-Shirts war teuer und qualitativ nicht wirklich gut.
Dort habe ich dann auch eher das Prinzip "Malen nach Zahlen" auf eine neue Ebene gehoben, weil ich eigentlich nicht malen kann. Ich habe mir eine Vorlage gesucht, sie mit einem Fotokopierer auf die richtige Größe gebracht und dann von hinten gegen das T-Shirt geklebt. In das T-Shirt wurde dann eine Konstruktion geschoben, die im Wesentlichen aus einer Glasplatte (die Frontplatte meiner HiFi-Anlage) und einer Lampe bestand. So habe ich dann erst die Konturen abgemalt, und danach dann mit Augenmaß Farben angemischt, die ich dann zum Ausmalen der Flächen verwentet habe. Ich hatte also ein Ziel: ein eigenes, persönliches T-Shirt. Selbst gemalt, weil es keine wirklich gute Alternative gab. Außerdem konnte man auch nichts am Computer vorbereiten.
Für eines meiner aufwändigsten T-Shirts habe ich 40 Stunden nur mit malen verbracht. Es hat auch Spaß gemacht, aber heute würde ich es nicht mehr so machen, es sei denn, das Motiv würde mit einem Druck aus dem "T-Shirt Shop" nicht richtig rüberkommen. Und hier schließt sich der Bogen zum Programmieren: Genauso, wie ich ein T-Shirt nicht selbst malen würde, wenn ich es auch drucken lassen kann, würde ich, wenn ich mit einer Software im Großen und Ganzen zufrieden bin, bestimmt nicht etwas vergleichbaren noch einmal neu programmieren.
So habe ich zum Beispiel "
Partyman" meinen Audio Player geschrieben, weil ich eben seinerzeit nichts finden konnte, was meinen Vorstellungen entsprochen hatte. Mittlerweile ist das Projekt aber stetig gewachsen und erfüllt doch auch den Zweck des Lernens: wenn ich etwas neues Lerne, ist es das Projekt, wo ich das neu erlernte umzusetzen versuche. Im Moment bin ich gerade dabei meine Kommentare in eine Form umzuwandeln, die von Doxygen gelesen werden kann. Doxygen kann dann daraus automatisch eine brauchbare Dokumentation erzeugen. Das ist Arbeit, die ich nicht mache, weil ich glaube, dass es wirklich andere Leute gibt, die dort gerne daran rumbasteln würden, und dann davon profitieren. In diesem Fall geht es mir darum etwas zu lernen, indem ich es auch anwende. Dabei geht es mir aber immer darum neue Teilaspekte zu lernen, nicht etwas komplett Neues. Und das, was ich lerne setze ich meistens in kurzer Zeit noch an anderer Stelle um.
Kommentare