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 trabaja en Google , donde codesarrolló el lenguaje Go .
Otras contribuciones notables incluyeron 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 tablas de finales y la máquina de ajedrez Belle . Ganó el Premio Turing en 1983 con su colega de muchos años Dennis Ritchie .
Thompson nació en Nueva Orleans, Luisiana . Cuando se le preguntó cómo aprendió a programar, Thompson afirmó: "Siempre estuve fascinado con la lógica e incluso en la escuela primaria trabajaba en problemas aritméticos en binario y cosas así. Simplemente porque estaba fascinado". [3]
Thompson recibió una Licenciatura en Ciencias en 1965 y una maestría en 1966, tanto en ingeniería eléctrica como en ciencias informáticas , 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 . Posteriormente, Bell Labs se retiró del proyecto MULTICS. [8] Para poder seguir jugando, Thompson encontró una vieja máquina PDP-7 y reescribió Space Travel en ella. [9] Con el tiempo, las herramientas desarrolladas por Thompson se convirtieron en el sistema operativo Unix : trabajando en un PDP-7 , un equipo de investigadores de los Laboratorios Bell dirigidos por Thompson y Ritchie, y entre ellos Rudd Canaday , desarrollaron un sistema de archivos jerárquico , los conceptos de computadora. procesos y archivos de dispositivos , un intérprete de línea de comandos , canalizaciones para facilitar la 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 sistemas 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 posterior editor ed de Thompson (el editor de texto estándar en Unix) contribuyeron en gran medida a la eventual popularidad de las expresiones regulares, y las expresiones regulares se volvieron omnipresentes en los programas de procesamiento de textos de Unix. Casi todos los programas que trabajan con expresiones regulares hoy en día 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 para agilizar la coincidencia de expresiones. [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 suponer con seguridad que los nombres de Ritchie y Thompson están adjuntos a casi todo lo que no se atribuye de otra manera". [13] En una entrevista de 2011, Thompson declaró 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 solo. Y Dennis se convirtió en evangelista. Luego hubo una reescritura en un lenguaje de nivel superior que se llamaría C. Él trabajó principalmente en el lenguaje y en el sistema de E/S, y yo trabajé en el resto del sistema operativo. Eso fue para el PDP-11 , lo cual fue fortuito, porque fue la computadora que se apoderó de la comunidad académica.
Los comentarios sobre el desarrollo de Unix de Thompson también fueron fundamentales en 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 sistemas de escritura ". [14]
En 1975, Thompson se tomó un año sabático en los Laboratorios Bell y se fue a su alma mater, UC Berkeley. Allí ayudó a instalar la versión 6 de Unix en un PDP-11/70 . Más tarde, Unix en Berkeley se mantendría como su propio sistema, 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 de UC Berkeley (con amplias modificaciones y adiciones ese mismo año por parte de William Joy , Charles B. Haley [16] [ 17] [18] y la asesora docente 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 , una computadora campeona mundial de ajedrez . [20] También escribió programas para generar la enumeración completa de finales de ajedrez , conocidos como tablas de finales , para todos los finales de 4, 5 y 6 piezas, permitiendo a los programas informáticos de ajedrez realizar movimientos "perfectos" una vez almacenada la posición en se alcanza. 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 completo 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 genérica de los sistemas operativos y específicamente por la implementación del sistema operativo UNIX". Su discurso de aceptación, "Reflexiones sobre la confianza", presentó el ataque de puerta trasera persistente al compilador ahora conocido como el hack de Thompson o ataque de confianza, y es ampliamente considerado un trabajo fundamental en seguridad informática por derecho propio. [21] En 2023, el código fuente anotado de la puerta trasera se publicó en línea. [22]
A lo largo de la década de 1980, Thompson y Ritchie continuaron revisando Research Unix, que adoptó un código base BSD para las ediciones octava, novena y décima. A mediados de la década de 1980, los Laboratorios Bell comenzaron a trabajar en un nuevo sistema operativo que reemplazara a Unix. Thompson jugó un papel decisivo en el diseño y la implementación del Plan 9 de Bell Labs , un nuevo sistema operativo que utiliza los principios de Unix, pero aplicándolos de manera más amplia a todas las instalaciones principales del sistema. Algunos programas que formaron 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 frecuentes incompatibilidades entre versiones. En una entrevista de 2009, Thompson expresó una visión negativa de C++, afirmando: "Hace muchas cosas medio bien y es sólo 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, la codificación UTF-8 se ha convertido en la codificación de caracteres 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 empezó 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 dirección de Joe Hall y Jont Allen. [27] [28]
A finales de 2000, Thompson se retiró de Bell Labs.
En 2004, ayudó 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] El 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 nosotros tres [Thompson, Rob Pike y Robert Griesemer ] empezamos, fue pura investigación. Los tres nos reunimos y decidimos que odiábamos C++. [risas] ... [Volviendo a Go,] comenzamos con la idea de que a los tres teníamos que hablar sobre cada característica del idioma, por lo que no se ponía basura extraña en el idioma 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 durante 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 genérica de los sistemas operativos y específicamente por la implementación del sistema operativo UNIX". En su discurso de aceptación, "Reflexiones sobre la confianza", Thompson describió un ataque en forma de puerta trasera del compilador al que se ha hecho referencia como el hack de Thompson o el ataque de confianza , y es ampliamente considerado un trabajo fundamental en seguridad informática en sí mismo. bien. [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 admitidos como miembros del Museo de Historia de la Computación por "la co-creación del sistema operativo UNIX y 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 de manos del presidente Bill Clinton por co-inventar el sistema operativo UNIX y el lenguaje de programación C que juntos han "conducido a enormes avances en hardware, software y redes de computadoras". sistemas y estimuló 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 Japonés de Información y Comunicaciones por su trabajo pionero en el desarrollo del sistema operativo Unix. [37]
Ken Thompson está casado y tiene un hijo. [38] [19]
Fuentes