Die Schönheit des Programmierens
Ich weiß nicht, wie ich erklären soll, was mich am Programmieren so fasziniert, aber ich werde es versuchen. Für jemanden, der programmiert, ist es das Interessanteste auf der Welt. Es ist ein Spiel, das dich viel mehr fesselt als Schach, bei dem du deine eigenen Regeln aufstellen kannst, und bei dem am Ende des herauskommt, was du daraus machst.
Und trotzdem sieht es nach außen hin wie die langweiligste Sache der Welt aus.
Ein Aspekt des anfänglichen Reizes ist schnell erklärt: Er ergibt sich ganz einfach aus der Tatsache, dass der Computer das tut, was du ihm sagst. Unbeirrt. Für immer. Ohne ein Wort der Klage.
Und schon das ist interessant.
Aber blinder Gehorsam allein, so faszinierend er zunächst auch sein mag, ist auf Dauer nicht besondere reizvoll. Deshalb wird einem dieser Aspekt auch ziemlich schnell ziemlich langweilig. Das wirklich Fesselnde am Programmieren ist die Tatsache, dass du den Computer dazu bringen kannst, zu tun, was du willst, aber du musst herausfinden, wie.
Ich persönlich bin überzeugt davon, dass Informatik und Physik viel gemeinsam haben. Beide beschäftigen sich damit, was die Welt im Innersten zusammenhält. Der Unterschied liegt natürlich darin, dass du in der Physik herausfinden sollst, nach welchen Gesetzen die Welt funktioniert, während du in der Informatik die Welt erschaffst.
Innerhalb der Grenzen deines Computers bist du der Schöpfer. Irgendwann bist du so weit, dass du das Geschehen komplett unter Kontrolle hast.
Wenn du gut genug bist, kannst du Gott sein. Jedenfalls in einem bescheidenen Rahmen.
Wahrscheinlich bin ich mit dieser Aussage gerade ungefähr der Hälfte der Erdbevölkerung zu nahe getreten.
Das ändert nichts an ihrem Wahrheitsgehalt. Du kannst dir deine eigene Welt erschaffen, und die einzigen Faktoren, die dich in deinen Möglichkeiten einschränken, sind die Fähigkeiten der Kiste – und, mehr als je zuvor, dein eigenes Können.
Stellen Sie sich ein Baumhaus vor. Sie können ein Baumhaus bauen, das funktional und stabil ist und eine Klapptür hat. Aber jeder erkannt den Unterschied zwischen einem Baumhaus, das einfach solide gebaut ist, und einem Baumhaus, das schön ist und die Besonderheit des Baumes kreativ zu nutzen versteht. Es ist eine Frage der geschickten Kombination von Kunst und Technik. Das ist einer der Gründe, der das Programmieren so fesselnd und lohnenswert erscheinen lässt. Die Funktionalität ist oft zweitrangig, viel wichtiger ist es, etwas Interessantes, Schönes oder Schockierendes zuwege zu bringen.
Programmieren ist eine Übung in Kreativität.
Ich bin überhaupt erst zum Programmieren gekommen, weil ich herausfinden wollte, wie der Computer arbeitet. Zu meiner größten Freude entdeckte ich, dass es sich mit Computern verhält wie mit der Mathematik: Da kannst dir deine eigene Welt mit ihren eigenen Regeln aufbauen. In der Physik wirst du von vorhandenen Regeln eingeschränkt. Aber in der Mathematik und beim Programmieren ist alles möglich, solange es in sich konsistent ist. Die Mathematik braucht sich keiner Beschränkung durch eine äußere Logik zu unterwerfen, aber sie muss in sich selbst und aus sich selbst heraus logisch sein. Wie jeder Mathematiker weiß, kann man eine Menge mathematischer Gleichungen aufstellen, bei denen drei plus drei gleich zwei ist. Man kann alles tun, was man will, aber je mehr Komplexität man hinzufügt, desto sorgfältiger muss man darauf achten, Inkonsistenzen mit der geschaffenen Welt zu vermeiden. Wenn das Geschaffene schön sein soll, darf es keine Fehler enthalten. Das ist das Wesen des Programmierens.
Die Leute sind von Computern unter anderem deshalb so begeistert, weil sie mit ihrer Hilfe mit den geschaffenen neuen Welten experimentieren und ihre Möglichkeiten erkunden können. In der Mathematik kannst du sich in mentalen Gymnastikübungen des Möglichen ergehen. Die meisten Leute verstehen unter Geometrie zum Beispiel euklidische Geometrie. Erst der Computer hat es ihnen ermöglicht, sich andere Geometrien bildlich vorzustellen, die nicht im Geringsten euklidisch sind. Mit Computern kannst du sehen, wie diese erfundenen Welten aussehen. Erinnern Sie sich an Mandelbrot-Mengen, die fraktalen Bilder auf der Basis von Benoit Mandelbrots Gleichungen? Sie sind visuelle Repräsentationen einer rein mathematischen Welt, die ohne die Hilfe eines Computers nicht bildlich darstellbar wäre. Mandelbrot erfand einfach beliebige Regeln über eine Welt, die es nicht gibt und die für die Realität keine Bedeutung hat, aber dann stellte sich heraus, dass seine Regeln faszinierende Muster erzeugten. Mit Computern und Programmierung kannst du neue Welten entwickeln, und manchmal entstehen dabei wunderschöne Muster.
Meistens tust du das aber nicht. Du schreibst einfach ein Programm, das eine bestimmte Aufgabe erledigt. In diesem Fall erschaffst du keine neue Welt, sondern löst ein Problem innerhalb der Welt des Computers. Das Problem wird gelöst, indem man darüber nachdenkt. Dazu braucht es eine bestimmte Art von Mensch – einen Menschen, dem es nichts ausmacht, einfach so dazusitzen, auf einen Bildschirm zu starren und den Dingen auf den Grund zu gehen. Dazu braucht es einen freakigen Geek wie mich.
Das Betriebssystem ist die Basis für alles andere, was in der Kiste passiert. Und ein Betriebssystem zu entwickeln, ist die ultimative Herausforderung. Wenn du ein Betriebssystem entwickelst, entwickelst du die Welt, in der alle Programme, die auf dem Computer laufen, leben – du stellst also im Prinzip die Regel dafür auf, was akzeptabel ist, was getan werden darf und was nicht. Im Prinzip machst du das zwar bei jedem Programm, aber das Betriebssystem ist einfach das grundlegendste aller Programme. Es ist als würdest du die Verfassung für ein Land schreiben, das du gerade erfindest – alle anderen Programme sind im Vergleich dazu nur gewöhnliche Gesetze.
Manchmal ergeben die Gesetze keinen Sinn. Dann setzst du alles daran, sie mit Sinn zu erfüllen. Du willst dir die Lösung ansehen können und erkennen, dass du auf die richtige Weise die richtigen Antworten gefunden hast.
Erinnern Sie sich noch an die Mitschüler, die immer die richtige Antwort wussten? Sie kamen viel schneller darauf als alle anderen, und sie mussten sich dafür noch nicht einmal anstrengen. Sie machten sich nicht die Mühe, den vorgeschriebenen Lösungsweg einzuhalten. Stattdessen betrachteten sie das Problem auf die richtige Weise. Und wenn Sie ihre Antwort hörten, wussten Sie sofort: Das ist es.
Bei Computern ist es genauso. Sie können etwas mit der Brute-Force-Methode lösen, der dummen Schufte-dich-solange-mit-dem-Problem-ab-bis-es-keines-mehr-ist-Methode. Oder Sie können den richtigen Ansatz finden, und plötzlich löst sich das Problem wie in Luft auf. Es gibt da dieses seltsame Phänomen: Sie erkennen, dass eine Problem nur deshalb ein Problem war, weil Sie es in ganze Zeit über aus der falschen Perspektive betrachtet haben.
Das wahrscheinlich beste Beispiel dafür stammt nicht aus der Informatik, sondern aus der Mathematik. Als der große deutsche Mathematiker Carl Friedrich Gauss noch zur Schule ging, ließ angeblich ein überdrüssiger Lehrer die Schüler alle Zahlen zwischen 1 und 100 addieren – sozusagen als Beschäftigungstherapie, in der Meinung, die jungen Leute würden den ganzen Tag dafür brauchen. Der aufstrebende Mathematiker aber hatte die korrekte Antwort innerhalb von fünf Minuten gefunden: 5050. Die Lösung liegt nämlich nicht darin, dass man wirklich alle Zahlen addiert; das wäre öde und stupide. Stattdessen entdeckte er, dass man durch Addieren von 1 und 100 101 erhält. Und 2 plus 99 ergibt ebenfalls 101. Genauso wie 3 plus 98. Und 50 plus 51. Es war eine Sache von Sekunden, auszurechnen, dass es 50 Paare gibt, die alle 101 ergeben. Die Antwort lautet damit: 5050.
Die Geschichte mag erfunden sein, aber ihre Aussage prägt sich ein: Ein großer Mathematiker wählt nicht den umständlichen, langweiligen Weg. Stattdessen erkennt er das eigentliche Muster, das einer Frage zugrunde liegt, und nutzt es, um einen viel besseren Lösungsweg einzuschlagen. Und genau so ist es auch in der Informatik. Klar, natürlich kann man ein Programm schreiben, das die Summe berechnet. Auf einem Computer von heute ist das eine Kleinigkeit. Aber ein wirklich guter Programmierer wüsste die Antwort auch so, kraft seiner Intelligenz. Er wüsste, wie man ein schönes Programm schreibt, das das Problem auf eine neue Weise löst, die sich am Ende als richtig erweist.
Es ist und bleibt schwer zu erklären, was so faszinierend daran sein soll, drei Tage lang mit dem Kopf gegen die Wand zu schlagen, weil man nicht weiß, wie man ein Problem auf schöne Weise lösen kann. Aber sobald du diese bessere Möglichkeit gefunden hast, ist es das schönste Gefühl der Welt.
Linus Torvalds, aus dem Buch „Just for Fun“