Kenneth Lane Thompson (nacido el 4 de febrero de 1943) es un pionero estadounidense de la informática . Thompson trabajó en Bell Labs durante la mayor parte de su carrera, donde diseñó e implementó el sistema operativo Unix original . También inventó el lenguaje de programación B , el predecesor directo del lenguaje C , y fue uno de los creadores y primeros desarrolladores del sistema operativo Plan 9. Desde 2006, Thompson ha trabajado en Google , donde co-desarrolló el lenguaje Go .
Otras contribuciones notables incluyen su trabajo sobre expresiones regulares y los primeros editores de texto informáticos QED y ed , la definición de la codificación UTF-8 y su trabajo sobre ajedrez informático que incluyó la creación de bases de datos de tablas de finales y la máquina de ajedrez Belle . Ganó el premio Turing en 1983 junto con su colega de muchos años Dennis Ritchie .
Thompson nació en Nueva Orleans, Luisiana . Cuando le preguntaron cómo aprendió a programar, Thompson afirmó: "Siempre me fascinó la lógica e incluso en la escuela primaria trabajaba en problemas aritméticos en binario y cosas así. Simplemente porque me fascinaba". [3]
Thompson recibió una Licenciatura en Ciencias en 1965 y una maestría en 1966, ambas en ingeniería eléctrica y ciencias de la computación , de la Universidad de California, Berkeley , donde su asesor de tesis de maestría fue Elwyn Berlekamp . [4]
Thompson fue contratado por Bell Labs en 1966. [5] En la década de 1960 en Bell Labs, Thompson y Dennis Ritchie trabajaron en el sistema operativo Multics . Mientras escribía Multics, Thompson creó el lenguaje de programación Bon. [6] [7] También creó un videojuego llamado Space Travel . Más tarde, Bell Labs se retiró del proyecto MULTICS. [8] Para seguir jugando el juego, Thompson encontró una vieja máquina PDP-7 y reescribió Space Travel en ella. [9] Finalmente, las herramientas desarrolladas por Thompson se convirtieron en el sistema operativo Unix : trabajando en una PDP-7 , un equipo de investigadores de Bell Labs dirigido por Thompson y Ritchie, e incluyendo a Rudd Canaday , desarrolló un sistema de archivos jerárquico , los conceptos de procesos informáticos y archivos de dispositivos , un intérprete de línea de comandos , tuberías para una fácil comunicación entre procesos y algunos pequeños programas de utilidad. En 1970, Brian Kernighan sugirió el nombre "Unix", en un juego de palabras con el nombre "Multics". [10] Después del trabajo inicial en Unix, Thompson decidió que Unix necesitaba un lenguaje de programación de sistema y creó B , un precursor del C de Ritchie . [11]
En la década de 1960, Thompson también comenzó a trabajar en expresiones regulares . Thompson había desarrollado la versión CTSS del editor QED , que incluía expresiones regulares para buscar texto. QED y el editor posterior de Thompson, ed (el editor de texto estándar en Unix), contribuyeron en gran medida a la popularidad final de las expresiones regulares, y las expresiones regulares se volvieron omnipresentes en los programas de procesamiento de texto de Unix. Casi todos los programas que trabajan con expresiones regulares en la actualidad utilizan alguna variante de la notación de Thompson. También inventó el algoritmo de construcción de Thompson utilizado para convertir expresiones regulares en autómatas finitos no deterministas con el fin de hacer que la coincidencia de expresiones sea más rápida. [12]
A lo largo de la década de 1970, Thompson y Ritchie colaboraron en el sistema operativo Unix; fueron tan prolíficos en Research Unix que Doug McIlroy escribió más tarde: "Se puede asumir con seguridad que los nombres de Ritchie y Thompson están asociados a casi todo lo que no se atribuye de otra manera". [13] En una entrevista de 2011, Thompson afirmó que las primeras versiones de Unix fueron escritas por él, y que Ritchie comenzó a defender el sistema y ayudó a desarrollarlo: [14]
Hice la primera de dos o tres versiones de UNIX completamente solo. Y Dennis se convirtió en un evangelista. Luego hubo una reescritura en un lenguaje de nivel superior que llegaría a llamarse C. Él trabajó principalmente en el lenguaje y en el sistema de E/S, y yo trabajé en todo el resto del sistema operativo. Eso fue para el PDP-11 , lo cual fue una casualidad, porque esa fue la computadora que se apoderó de la comunidad académica.
Los comentarios de Thompson sobre el desarrollo de Unix también fueron decisivos para el desarrollo del lenguaje de programación C. Thompson diría más tarde que el lenguaje C "creció con una de las reescrituras del sistema y, como tal, se volvió perfecto para escribir sistemas ". [14]
En 1975, Thompson se tomó un año sabático de los Laboratorios Bell y se fue a su alma mater, la Universidad de California en Berkeley. Allí ayudó a instalar la versión 6 de Unix en un PDP-11/70 . Unix en Berkeley se mantendría más tarde como un sistema propio, conocido como Berkeley Software Distribution (BSD). [15]
A principios de 1976, Thompson escribió la versión inicial de Berkeley Pascal en la División de Ciencias de la Computación, Departamento de Ingeniería Eléctrica y Ciencias de la Computación, UC Berkeley (con extensas modificaciones y adiciones posteriores ese mismo año por parte de William Joy , Charles B. Haley [16] [17] [18] y la asesora de la facultad Susan Graham ).
Thompson escribió un programa de ajedrez llamado "chess" para la primera versión de Unix (1971). [19] Más tarde, junto con Joseph Condon , Thompson creó el programa asistido por hardware Belle , un ordenador de ajedrez campeón del mundo . [20] También escribió programas para generar la enumeración completa de finales de ajedrez , conocidos como bases de tablas de finales , para todos los finales de 4, 5 y 6 piezas, lo que permite a los programas informáticos de ajedrez realizar movimientos "perfectos" una vez que se alcanza una posición almacenada en ellos. Más tarde, con la ayuda del experto en finales de ajedrez John Roycroft , Thompson distribuyó sus primeros resultados en CD-ROM . En 2001, el ICGA Journal dedicó casi un número entero a las diversas contribuciones de Thompson al ajedrez informático. [19]
En 1983, Thompson y Ritchie recibieron conjuntamente el Premio Turing "por su desarrollo de la teoría de sistemas operativos genéricos y específicamente por la implementación del sistema operativo UNIX". Su discurso de aceptación, "Reflexiones sobre la confianza en la confianza", presentó el ataque de puerta trasera del compilador persistente ahora conocido como el hack de Thompson o ataque de confianza en la confianza, y es ampliamente considerado un trabajo seminal de seguridad informática por derecho propio. [21] En 2023, el código fuente anotado de la puerta trasera se publicó en línea. [22] El final del discurso de aceptación consistió en críticas a la cobertura positiva de los periodistas sobre los piratas informáticos , como los 414 .
A lo largo de la década de 1980, Thompson y Ritchie continuaron revisando Research Unix, que adoptó una base de código BSD para las ediciones 8.ª, 9.ª y 10.ª. A mediados de la década de 1980, se comenzó a trabajar en Bell Labs en un nuevo sistema operativo como reemplazo de Unix. Thompson fue fundamental en el diseño e implementación de Plan 9 de Bell Labs , un nuevo sistema operativo que utilizaba principios de Unix, pero los aplicaba de manera más amplia a todas las principales instalaciones del sistema. Algunos programas que formaban parte de versiones posteriores de Research Unix, como mk y rc , también se incorporaron a Plan 9.
Thompson probó las primeras versiones del lenguaje de programación C++ para Bjarne Stroustrup escribiendo programas en él, pero luego se negó a trabajar en C++ debido a las frecuentes incompatibilidades entre versiones. En una entrevista de 2009, Thompson expresó una opinión negativa de C++, afirmando: "Hace muchas cosas a medias y es solo un montón de basura de ideas que se excluyen mutuamente". [23]
En 1992, Thompson desarrolló el esquema de codificación UTF-8 junto con Rob Pike . [24] Desde entonces, UTF-8 se ha convertido en la forma de codificación Unicode dominante para la World Wide Web , representando más del 90% de todas las páginas web en 2019. [25]
En la década de 1990, se comenzó a trabajar en el sistema operativo Inferno , otro sistema operativo de investigación que se basaba en una máquina virtual portátil . Thompson y Ritchie continuaron su colaboración con Inferno, junto con otros investigadores de Bell Labs. [26]
En 1995, Thompson colaboró en la compresión musical con Sean Dorward, basándose en el trabajo de investigación original realizado por Jim Johnston, bajo la guía de Joe Hall y Jont Allen. [27] [28]
A finales de 2000, Thompson se retiró de Bell Labs.
En 2004, colaboró en la implementación de Turochamp , un programa de ajedrez que Alan Turing ideó en 1948, antes de que existieran computadoras que pudieran ejecutarlo. [29]
Trabajó en Entrisphere, Inc. como becario hasta 2006. A partir de 2024 [actualizar]trabaja en Google , primero como ingeniero distinguido y luego como asesor de Google. [30] Su trabajo reciente ha incluido el codiseño del lenguaje de programación Go . Refiriéndose a sí mismo junto con los otros autores originales de Go, afirma: [14]
Cuando los tres [Thompson, Rob Pike y Robert Griesemer ] empezamos, era pura investigación. Los tres nos juntamos y decidimos que odiábamos C++. [risas] ... [Volviendo a Go,] empezamos con la idea de que los tres teníamos que convencernos de todas las características del lenguaje, de modo que no se añadiera basura extraña al lenguaje por ningún motivo.
En 1980, Thompson fue elegido miembro de la Academia Nacional de Ingeniería por "diseñar UNIX, un sistema operativo cuya eficiencia, amplitud, potencia y estilo han guiado la explotación de minicomputadoras por parte de una generación ". [31] En 1985 fue elegido miembro de la Academia Nacional de Ciencias . [2]
En 1983, Thompson y Ritchie recibieron conjuntamente el premio Turing "por su desarrollo de la teoría de los sistemas operativos genéricos y, específicamente, por la implementación del sistema operativo UNIX". En su discurso de aceptación, "Reflexiones sobre la confianza en la confianza", Thompson describió un ataque en forma de puerta trasera del compilador al que se ha denominado el hack de Thompson o el ataque de confianza en la confianza , y que se considera ampliamente un trabajo seminal de seguridad informática por derecho propio. [32]
En 1990, tanto Thompson como Dennis Ritchie recibieron la Medalla IEEE Richard W. Hamming del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE), "por el origen del sistema operativo UNIX y el lenguaje de programación C". [33]
En 1997, tanto Thompson como Ritchie fueron incorporados como miembros del Museo de Historia de la Computación por "la co-creación del sistema operativo UNIX y por el desarrollo del lenguaje de programación C". [34]
El 27 de abril de 1999, Thompson y Ritchie recibieron conjuntamente la Medalla Nacional de Tecnología de 1998 del presidente Bill Clinton por inventar conjuntamente el sistema operativo UNIX y el lenguaje de programación C, que juntos "han llevado a enormes avances en hardware, software y sistemas de redes de computadoras y han estimulado el crecimiento de toda una industria, mejorando así el liderazgo estadounidense en la era de la información". [35]
En 1999, el Instituto de Ingenieros Eléctricos y Electrónicos eligió a Thompson para recibir el primer Premio Tsutomu Kanai "por su papel en la creación del sistema operativo UNIX, que durante décadas ha sido una plataforma clave para el trabajo de sistemas distribuidos". [36]
En 2011, Thompson, junto con Dennis Ritchie, recibió el Premio Japón de Información y Comunicaciones por el trabajo pionero en el desarrollo del sistema operativo Unix. [37]
Ken Thompson está casado y tiene un hijo. [38] [19]
Fuentes