Cat Overflow

¿De dónde sale el NullPointerException?

¿Alguna vez te has preguntado por qué esa aplicación que tanto usas se cierra de repente o por qué tu ordenador lanza un mensaje de error ininteligible? La res…

¿De dónde sale el NullPointerException?

¿Alguna vez te has preguntado por qué esa aplicación que tanto usas se cierra de repente o por qué tu ordenador lanza un mensaje de error ininteligible? La respuesta no es un virus, ni un fallo de tu conexión: es un "fantasma" que nació hace 60 años por una simple cuestión de comodidad.

Si programas en Java, C#, Python o casi cualquier lenguaje moderno, conoces bien al villano de esta historia: el NullPointerException (o error de referencia nula). Pero lo que quizás no sabías es que este fallo tiene un "padre" que se arrepiente profundamente de haberlo creado.

Un "atajo" que salió muy caro

Corría el año 1965. El ingeniero británico Sir Tony Hoare se encontraba diseñando el sistema de tipos para el lenguaje ALGOL W. En un momento de fatiga o pragmatismo extremo, decidió introducir el concepto de "referencia nula" (null).

¿La razón? No fue por una necesidad técnica revolucionaria. Según sus propias palabras décadas después:

"Simplemente era muy fácil de implementar".

Hoare quería que el sistema fuera capaz de decir "aquí no hay nada", y el valor nulo parecía la salida más rápida. Lo que no previó fue que estaba dejando una puerta abierta a la incertidumbre: cada vez que un programa intenta acceder a una información que "no existe" (pero que el código cree que sí), el sistema colapsa.

La disculpa pública de una leyenda

En 2009, durante una conferencia de software, Sir Tony Hoare se subió al escenario no para presumir de sus logros (que son muchos, incluyendo el algoritmo Quicksort), sino para pedir perdón. Fue allí donde bautizó a su invento como: "Mi error de los mil millones de dólares".

Hoare calculó que, entre fallos críticos de seguridad, parches de emergencia, horas de programadores buscando errores y colapsos de sistemas financieros globales, su decisión de 1965 ha costado esa cifra —o probablemente mucho más— a la industria tecnológica global.

No eres tú, es el diseño

La próxima vez que tu app favorita se rompa o te encuentres frustrado depurando líneas de código infinito por culpa de un nulo, recuerda: no es falta de talento. Es el eco de una decisión tomada hace seis décadas por pura conveniencia.

Hoy en día, lenguajes modernos como Kotlin o Swift intentan desterrar este legado con sistemas que impiden los nulos por defecto, tratando de sanar una herida que lleva abierta más de medio siglo.