En 2006, Graydon Hoare, un desarrollador de software que trabajaba en la Fundación Mozilla, regresaba a su piso en Vancouver cuando descubrió que una vez más, el ascensor estaba estropeado. Cansado (un poquito hasta las narices, más bien) de subir 21 pisos a pie, Hoare se puso a darle vueltas: ¿cómo puede ser que a esta alturas sigamos siendo incapaces de lograr que algo tan simple como un ascensor funcione correctamente?
Aquel incidente aparentemente trivial (e incluso cómico... aunque no para las pobres rodillas de Hoare, claro), en realidad terminó plantando las semillas de toda una revolución en el campo del software, que adoptó la forma de lo que muchos ven como el lenguaje de programación seguro por excelencia.
El problema de fondo: los errores de memoria
Los ascensores modernos usan microcontroladores con firmware que controla el motor, sensores, cerraduras, y comunicación entre pisos. Este firmware suele estar escrito en lenguajes de bajo nivel (como C o C++) por eficiencia.
Sin embargo, estos lenguajes adolecen de fallos comunes:
Desbordamientos de búfer (buffer overflows): pueden sobrescribir datos vitales.
Accesos a punteros nulos o inválidos: pueden causar bloqueos del sistema.
Condiciones de carrera (data races): pueden provocar comportamientos impredecibles en sistemas concurrentes.Hoare, consciente de estos riesgos, pensó que la raíz de los problemas de su ascensor podría tener estar en esa clase de fallos. Y ese pensamiento le terminó llevando a crear un lenguaje completamente nuevo que eliminara esas clases de errores desde su diseño. Y lo lanzó hace ahora …