Der Milliarden-Dollar-Fehler

Kennen Sie Prof. Antony Hoare? Nein? Aber Sie kennen sicherlich Null Pointer Exceptions bzw. Null Reference Exceptions? Jeder von uns hat Angst vor diesem Fehler, denn jedem ist schon mehrmals dieser Fehler unterlaufen und passiert immer wieder. Oder hat einen in anderen Programmen in den Wahnsinn getrieben. Es dürfte der Fehler Nr. 1 in der Software-Entwicklung sein.

Was hat Prof. Tony Hoare damit zu tun? Ihm haben Sie diese Fehlerquelle zu verdanken! Er war es, der sich 1965 die Null Reference in einer Hochsprache ausgedacht hat. Er hat die Null Reference in ALGOL W eingeführt, denn bis dahin gab es sie in keiner anderen Hochsprache. Und der Fehler kann auf jedem System passieren, egal ob Embedded, PC oder Virtual Machine. Windows nullptr dereferenceDiese Null Reference Semantik wird bis heute in jeder anderen neu erfundenen Sprache übernommen. Egal ob in Smalltalk, C, C++, über das angeblich sichere Java, bis hin zu C#. Ist doch komisch, dass diese fatale Entscheidung von Generation zu Generation weiter getragen wird? Und kein Sprachdesigner anscheinend aus Fehlern anderer dazu lernt?

Prof. Tony Hoare meint dazu:

I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn’t resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.

Prof. Tony Hoare gibt seinen Fehler immerhin zu und nimmt es heute mit Humor. 🙂

Ein Gedanke zu „Der Milliarden-Dollar-Fehler

  1. Pingback: Objekte anstatt Null-Referenzen | Amin Kharchi

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Blue Captcha Image Refresh

*