Charles Antony Richard Hoare (Colombo, Sri Lanka, 11 de enero de 1934), también conocido familiarmente como Tony Hoare, es un científico británico en computación.
Conocido sobre todo por la invención, en 1960 de Quicksort, que es el algoritmo de ordenamiento más ampliamente utilizado en el mundo. También se le conoce por el desarrollo de la Lógica de Hoare, y por el lenguaje formal CSP (tercer trabajo más citado en computación de acuerdo con las estadísticas de Citeseer), utilizado para especificar interacciones entre procesos concurrentes que sirve de base para la definición del lenguaje de programación Occam.
En 1956 consiguió el Título de Grado (equivalente a una carrera de cuatro años sin máster ni doctorado) en Cultura Clásica y Filosofía en la Universidad de Oxford.
Intentando facilitar la búsqueda de palabras en el diccionario descubrió el famoso algoritmo «Quicksort». La función de este algoritmo es ordenar una lista de elementos del mismo tipo y está basado en la técnica «divide y vencerás» de modo que convierte un problema complicado, en muchos sencillos, pero además es el más rápido conocido para hacer esta tarea.
En 1960 volvió a Inglaterra, donde trabajó como programador para Elliott Brothers, una pequeña fábrica de ordenadores. Allí dirigió a un equipo de personas que diseñaron el primer compilador comercial para el lenguaje de programación «Algol 60».
Tras conseguir el rango de ingeniero jefe, coordinó un equipo mucho mayor para implementar un sistema operativo que resultó desastroso. Poco después entró en una empresa de hardware y arquitectura de software que tuvo que abandonar cuando esta se fusionó con su competencia.
En 1968 consiguió una oportunidad para trabajar como profesor de Ciencias de la Computación en Queen’s University, en Belfast. El objetivo de sus investigaciones era entender por qué los sistemas operativos eran mucho más complicados que los compiladores, y ver si los avances en teoría de la programación podrían ayudar a solucionar problemas de concurrencia informática.
Siempre fue consciente de que sería un período de investigación muy largo y que difícilmente conseguiría aplicaciones industriales para sus avances.
En 1977 se trasladó a la Universidad de Oxford, y se comprometió a construir un Grupo de Investigación de Programación, fundado por Christopher Strachey.
Durante más de treinta años como académico, Tony ha tenido siempre importantes contactos con la industria mediante consultas, colaboraciones de investigación, etc.
Cuando llegó a la edad de jubilación para las investigaciones de Oxford, aceptó con ganas la oportunidad de volver a la industria como investigador senior para Microsoft en Cambridge, donde sigue trabajando actualmente.
Hablando en una conferencia en 2009, Hoare se disculpó por haber inventado de la referencia nula:[4]
La llamo mi error de mil millones de dólares. Fue la invención de la referencia nula en 1965. En ese momento, yo estaba diseñando el primer sistema de tipos integral para referencias en un lenguaje orientado a objetos (ALGOL W). Mi objetivo era asegurar que todo uso de referencias fuera absolutamente seguro, con verificaciones realizadas automáticamente por el compilador. Pero no pude resistir la tentación de poner en una referencia nula, simplemente porque era tan fácil de implementar. Esto ha dado lugar a innumerables errores, vulnerabilidades y fallos de sistemas, lo que probablemente ha causado un billón de dólares de dolor y daños en los últimos cuarenta años.
Durante muchos años, bajo su dirección, su departamento en Oxford trabajó en lenguajes de especificación formal como CSP y Z. Estos sistemas no alcanzaron la adopción esperada por la industria, y en 1995 Hoare debió reflexionar sobre los supuestos originales:[5]
Hace diez años, los investigadores en métodos formales (y yo era el más confundido entre ellos) predijeron que el mundo de la programación adoptaría agradecido todas las ayudas prometidas por la formalización para resolver los problemas de fiabilidad que surgen cuando los programas se vuelven más grandes y su seguridad es más crítica. Los programas ahora han llegado a ser muy grandes y muy críticos - mucho más allá de la escala que puede ser cómodamente abordada por los métodos formales. Hubo muchos problemas y fracasos, pero éstos casi siempre han sido atribuibles a un análisis inadecuado de los requisitos o a un inadecuado control de gestión. Se ha comprobado que el mundo simplemente no sufre significativamente del tipo de problemas que nuestra investigación estaba originalmente destinada a resolver.
↑Hoare, C. A. R. (1996). Springer-Verlag, ed. Unification of Theories: A Challenge for Computing Science. Selected papers from the 11th Workshop on Specification of Abstract Data Types Joint with the 8th COMPASS Workshop on Recent Trends in Data Type Specification. pp. 49-57. ISBN3-540-61629-2.