Puntero a NULL – El error del billón de dólares

Los que han estudiado y/o trabajan con C/C++ coincidirán conmigo en que el manejo de punteros es una de las cosas que más cuesta comprender/dominar en dicho lenguaje: asignación de memoria, punteros void, punteros a punteros y, por supuesto los punteros nulos.

Los punteros nulos (NULL pointers) seguramente han dado más de un dolor de cabeza a un programador.

Lo que distingue a un puntero nulo no es que ‘no apunte a ningun sitio’ sino que apunta a alguna localidad de memoria que no puede estar asociada a ningun objeto o variable.

Tony Hoare

¿A quién achacarle nuestros dolores de cabeza? pues a Tony Hoare. Este científico inglés emplementó en 1965 las referencias a null en los punteros.

El propio Hoare reconoce que fue un error inventar la referencia nula e incluso se lo toma con humor llamándolo “El error del billón de dólares” que incluso será una presentación dentro de la serie de conferencias Malas Ideas Históricamente.

Hoare dice:

Estaba diseñando el primer sistema amplio de tipo para referencias en un lenguaje orientado a objetos (ALGOL W). Mi meta era asegurar que todo uso de referencias debería ser absolutamente seguro, con una revisión hecha automáticamente por el compilador. Pero, no pude resistir la tentación de poner una referencia a null, simplemente porque era muy sencillo de implementar. Esto ha llevado a innumerables errores, vulnerabilidades y caídas de sistema, los cuales probablemente han causado mil millones de dólares en daño en los últimos cuarenta años.

Sir Charles Antony Richard Hoare también es el inventor, entre muchas otras cosas, del algoritmo Quicksort (uno de los más utilizados y estudiados del mundo) y en 1980 recibió el Premio Turing de la ACM.

Vía Menéame

CC 2009 El Módem. Some rights reserved.