Robustes Programmieren

Dieser Blogeintrag von danisch.de nimmt sich erneut dem Problem der steigenden Überkomplexität von Linux an. Ich würde ihn ja kommentieren, aber das ist einer dieser Blogs wo man sich registrieren muss um zu kommentieren. Bäh.

Was solls. Ich habe ohnehin im Moment hier sonst nicht viel zu schreiben. Nun, der Autor vermutet den Ursprung der unsauber programmierten Software darin, dass man an den Universitäten nicht lernt, sauber zu programmieren. Zitat:

Da wird irgendwelcher theoretischer Kram gelehrt. Und viele Unis fahren auf das funktionale Programmieren ab, weil es so schöne theoretische Sichtweisen erlaubt und man so schön Programme hinschreiben kann ohne zu verstehen, was da eigentlich vor sich geht. Wobei die Leute überhaupt keine Sachkunde und kein Gefühl mehr dafür entwickelt, was da eigentlich vor sich geht. Der Compiler oder die Laufzeitumgebung werden es schon richten. Und es hat außerdem den (…) Vorteil, daß mit solchen rein theoretisch orientierten Sichtweisen, (…) Leute in einem Hörsaal Programmieren lehren können, obwohl sie selbst keine Ahnung vom Programmieren haben.

Zum Einen glaube ich, die meisten Leute die an Software wie Network Managern oder so arbeiten kommen doch von der FH. Und da gehören sie auch hin. Die Uni ist eigentlich nicht dazu da, einem Programmieren zu lernen. Es ist ein Werkzeug, aber nicht das, worauf es im Informatik-Studium ankommen sollte. Es geht mehr um die theoretischen Konzepte und den Versuch, die Arbeit des Programmierers zu erleichtern. Dass Diese das selten direkt nutzen, ist ein anderes Problem. Und dass dieses Bewusstsein immer mehr verschwindet, das liegt vermutlich am starken Einfluss der Wirtschaft auf die Universitäten.

Ich muss jedenfalls sagen, in den theoretischen Vorlesungen lerne ich ehrlichgesagt eher sauberes Programmieren, als in den Praxisvorlesungen. Ich lerne zum Beispiel, mich an das zu halten, was eine Sprache mir vorgibt, und vorher zu entscheiden, was ich benutze, was sich am Besten eignet. Und dann die entsprechende Laufzeitumgebung zu nutzen, in der die Erfahrung vieler anderer Leute vor mir mir die Arbeit erleichtern soll, anstatt mir selber immer alles neu zusammenzuschustern.

In den angewandten Vorlesungen hingegen lernt man tatsächlich oft nichts besonders tolles. Die Medieninformatikvorlesungen dieses Semester haben mir zum Beispiel nur das rumhacken und code-schnell-aus-unlust-fertigmachen gezeigt. Man hat ein System vorgegeben – am Liebsten natürlich C++ mit all seiner Kacke. Anstatt ein konkretes Problem zu bekommen, und sich das System aussuchen zu können, das man für am Besten hält, um es zu lösen, lernt man, sich mit „dem Besten“ zufriedenzugeben, und hackt so lange rum, bis man sich sicher ist, dass dem Korrektor die Bugs nicht auffallen werden.

Und aus wirtschaftlicher Sicht ist dieses Vorgehen auch sinnvoll – wenn wahrscheinlich niemandem die Bugs auffallen, warum sollte man sie dann beheben? Worse is better! Es ist genau diese Pragmatische Sicht, die solche Dinge produziert.

Ein Theoretiker würde jedenfalls einen System-Standard nicht einfach ignorieren. Denn dem Theoretiker ist wichtiger, dass alle Teile eines Systems zusammenpassen, als dass ein konkreter Teil funktioniert oder besonders effizient ist. Falls einem Theoretiker ein System nicht gefällt, schreibt er entweder garnichts dafür, nutzt ein anderes System, oder schreibt ein neues System, das theoretisch durchdacht ist. Letzteres passiert eher selten, aber es passiert.

Ich finde es immer wieder erstaunlich, wie gut durchdacht Unix doch war und ist. Immer wieder regen mich irgendwelche Unix-Artefakte auf, doch fast alles hat irgendeine Erklärung, und fast alles ist ziemlich tief durchdacht. Die Möglichkeiten wurden sinnvoll beschränkt, sodass man immernoch hinreichend Spielraum für alles was man braucht hat. Und daran mangelt es: Wir brauchen mehr Theoretiker. Mehr Leute, denen ein gut durchdachtes System wichtiger als vier Prozessortakte und ein paar Buttons ist.

Und bei den funktionalen Programmiersprachen findet man genau das. Auch wenn ich z.B. kein besonderer Haskell-Freund bin, so ist Haskell doch tief durchdacht, und alle Teile passen irgendwie gut zusammen. Gleiches gilt auch für die meisten Lisp- und ML-Dialekte.

3 Antworten zu Robustes Programmieren

  1. Zum Hinterlassen von Kommentaren einen Login zu verlangen, hält einen schon davon ab. Schade, daß sich OpenID nicht schneller ausbreitet. Blogger.com unterstützt es für Kommentare seit November 2007.

  2. dasuxullebt sagt:

    Nun, OpenID-Unterstützung ist sicher was Feines. Aber man sollte auch ohne OpenID kommentieren können. Dann halt mit ein bissel mehr Schutz vor Spam oder so.

  3. ertes sagt:

    Einen zum Kommentieren zur Registrierung zu zwingen finde ich persönlich sehr verächtlich. Das ist auf der einen Seite eine psychologische Benutzerfangstrategie (wo ich mich registriere, bleibe ich auch), auf der anderen Seite nutzt es die Gemütlichkeit der Surfer aus, um unerwünschte Kommentare zu vermeiden, ohne selber zensieren zu müssen. Spam ist keine gute Ausrede, denn es gibt genug Methoden, die keine Registrierung erfordern. Ob so oder so, einen der beiden Vorteile (für den Betreiber) hat es auf jeden Fall, denn ich poste keinen Kommentar, um ihm Recht zu geben.

    Bezüglich seines Posts muss ich sagen, dass ich ihm hundertprozentig Unrecht gebe. Er nimmt seinen Hass auf den Network Manager als Grundlage, um über Dinge zu urteilen, die er selber nicht versteht, z.B. funktionales Programmieren. Er vollführt also selber eben genau den Frevel, den er bei Uniprofessoren so sehr verurteilt.

    Grüße,
    Ertes.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: