Samstag, 1. Mai 2010

Die Sünden der Programmierer

Der Titel dieses Postings ist eigentlich einem Artikel auf heise.de entlehnt. Es geht darin um den Grund, warum Software so fehleranfällig und unsicher ist. Der Autor meint, das sei auf die Unart zurückzuführen, Dinge zu nutzen, ohne sie vorher zu prüfen. Beinahe, wie im echten Leben, oder?

Der Großteil aller Programme ist in der Programmiersprache C bzw. deren Erweiterung C++ geschrieben. Der Grund dafür liegt höchstwahrscheinlich darin, dass viele Entwickler gar keine andere Sprache kennen, denn dem Verstand erschließt sich dieser Sachverhalt nicht:
  • C-Programme sind nicht nachweislich "schneller" als Programme in anderen Programmiersprachen.
  • Die Sprache C ist nur sehr lückenhaft spezifiziert - Interpretationsspielraum und Verlässlichkeit sind aber Gegenspieler.
  • C ist nicht typsicher, insbesondere wegen seiner Zeigerarithmetik. Das ist, als würde man einen Verkäufer fragen: "Wo liegen die Bananen?" und er weist einen den Weg in die Spielzeugabteilung. Moderne Sprachen unterbinden das.
  • C prüft nicht. Arrays in C sind deshalb nicht sicher.  Es ist, als würde man ein Auto mit 5 Plätzen kaufen können, und 6 Leute hineinstecken. Moderne Programmiersprachen unterbinden das. In modernen Sprachen fallen viele Programmierfehler schon beim Programmieren auf - bei C entdeckt der Benutzer sie erst bei der Benutzung des Programms.
  • C ist schwer lesbar. Es ist viel schwerer, einen Fehler in einem C-Programm zu finden, weil man viel länger braucht, überhaupt erstmal den Sinn des Programms zu verstehen.
  • Programmiersprachen sind Religionen. Jeder meint, die richtige zu haben. Das macht den Blick dicht dafür, eine bessere Lösung zu erforschen.
Unglückseeligerweise sind selbst Betriebssysteme in C geschrieben. Wer lernt schon gerne eine neue, bessere Programmiersprache, man hat sich doch so schön an die alte Welt gewöhnt...

Ein nicht unwesentlicher Grund dafür, das Programme abstürzen, Bankkonten von Betrügern leer geräumt werden und private Details ausspioniert werden können, ist also darin zu finden, dass man etwas nicht mehr ändern möchte, weil es "gewachsen" ist.

Krebs ist auch oft gewachsen.

1 Kommentar:

  1. Hallo Daniel,
    unk du ruhig rum. Aber mit welcher Berechtigung lästerst du über Programmiersprachen ab, die du selbst nie benutzt? Einfach nur, weil es Spass macht? (sehr verständlich) Aber mal ehrlich, in anderen Sprachen kann man genauso schönen Bockmist fabrizieren.
    Du weisst sicher, dass man auch in unserer Lieblingssprache C# Arrays überfrachten und Laufzeitfehler provozieren kann, obwohl du natürlich nicht in andere Speicherbereiche reinschreibst. Und die Lesbarkeit hängt immernoch vom Autor ab. Ich mag C, weil es uns Programmierer zum Denken anregt. Es bietet Herausforderungen beim Schreiben und beim Bugfix. Meine These: gute C-Kenntnisse verringern die Wahrscheinlichkeit, an Alzheimer zu erkranken. Das sollte mal untersucht werden.
    C und C++ machen süchtig, eben weil sie nicht perfekt sind und oft ein gewisses Kribbeln bleibt, wie sich das Programm wohl verhalten wird.
    Viele Grüße von Andrea

    AntwortenLöschen