Kenneth Lane Thompson: Un paseo por la historia de UNIX

Kenneth Lane ThompsonKenneth Lane Thompson (más conocido como Ken Thompson o simplemente Ken) entra en la historia de la informática por su trabajo en el lenguaje de programación B y por ser uno de los principales desarrolladores de UNIX junto a Dennis MacAlistair Ritchie.

Biografía

Thompson nace el 4 de febrero de 1943 en Nueva Orleans, Luisiana . Como hijo de un oficial de la marina, Ken pasa sus primeros años como “navy brat”, término habitual para referirse a hijos de militares que por motivo de trabajo tienen que desplazarse de base en base.

A la edad de 17 años se diploma en ciencias, y un año después, en 1966, Ken recibe un master, ambos en Ingeniería eléctrica en la Universidad de California, en Berkely (UCB). Estos títulos, unidos a su propia genialidad, le catapultan a los laboratorios Bell, una rama de investigación y desarrollo de AT&T, la empresa de telecomunicaciones más extendida de Estados Unidos. En Bell conoce y forma equipo con Dennis Ritchie, al que le unirá una gran amistad y una carrera llena de éxitos.

Su primer trabajo en los Laboratorios Bell se centra en el desarrollo de MULTICS, durante el cual Thompson crea el lenguaje de programación Bon. Aunque no esta muy claro de donde procede el nombre, se cree que puede proceder de la religión Bon o ser un homenaje a su mujer, Bonnie.

Unos años después Bell se desvincula del proyecto en el que trabajaban Ken y Ritchie, momento en el cual estos dos pioneros de la informática deciden aprovechar todos los conocimientos adquiridos durante su trabajo en MULTICS para embarcarse en el desarrollo de un nuevo sistema operativo, UNIX.

1969, un año mágico

Bajo el mandato de Richard Milhous Nixon comienza un año lleno de éxitos y avances tecnológicos para Estados Unidos. El hombre llegaba a la luna mientras todo el mundo observaba sus primeros pasos por la superficie lunar. Nacía ARPANET, la primera red de ordenadores y la precursora de internet. En el campo médico, Domingo Liotta y Denton A. Cooley realizaban en Houston el primer transplante de corazón artificial.

Es precisamente en este año cuando Ken Thompson y Dennis Ritchie comenzaban a desarrollar UNIX.

Richard Milhous NixonNeil AmstrongPrimer corazón artificial transplantado

Durante el desarrollo de MULTICS, Ken desarrolla un videojuego para el mainframe GE-645. Sin embargo, y muy a su pesar, el rendimiento del juego era muy pésimo, lo que llevo a Ken, junto a la ayuda de Dennis, a reescribir el juego por completo en código ensamblador para la, ya anticuada, PDP-7. El rendimiento de Space Travel seguía siendo muy deficiente, en parte por el sistema operativo usado por la máquina y en parte por las propias limitaciones de la misma. Son estos los motivos que llevan a Thompson a crear un nuevo sistema operativo para ella. Antes de acabar la década de los 60s el equipo liderado por estos dos jóvenes ya había desarrollado un nuevo sistema de ficheros, el propio sistema operativo multitarea, así como un interprete y algunos programas de utilidad.

Durante las siguientes dos décadas UNIX avanzaría enormemente.

Es también en este año en el que nace el lenguaje de programación B, el predecesor de C. Aunque esté influenciado por el lenguaje BCPL, B es más bien un subconjunto de componentes de BCPL.

B es un lenguaje de programación débilmente tipado y en desuso, cuyo objetivo era adaptarse a los mini ordenadores de la época. Es por esto que las primeras versiones de este lenguaje se implementaran en maquinas como la ya comentada PDP-7 y en mainframes Honeywell. Ken también desarrollo un compilador para producir código máquina que actualizaría posteriormente al introducir tipos en B, ya que las características de las nuevas máquinas como la PDP-11 complicaban el uso del lenguaje tal y como fue concebido en un principio.

Década de los 70

PDP-11/20UNIX ya empezaba a tomar forma pero aún quedaba mucho trabajo por hacer. A principios de los 70 y tras un largo trabajo con la maquina PDP-11 (renombrada posteriormente como PDP-11/20) durante el desarrollo del lenguaje B, Ken decidió portar UNIX a esta máquina.

La PDP-11/20 era un máquina más larga y cara que la PDP-7 que utilizaron en las primeras versiones de UNIX, pero también era más potente. Hay que recordar que cuando Thompson empezó con la PDP-7, esta máquina ya se consideraba anticuada.

Tras la creación de B, Dennis Ritchie decidió basarse en este nuevo lenguaje para desarrollar uno propio, más potente que este y con un fuerte tipado, lo que lo hacia ideal para las nuevas maquinas que estaban usando actualmente. Este nuevo lenguaje fue bautizado como C, en una clara insistencia de Ken Thompson por mantener la simplicidad incluso en los temas más insignificantes. El desarrollo de C significo un gran punto de inflexión en el proyecto UNIX ya que en 1972 se decidiría reescribir por completo el sistema operativo utilizando este lenguaje.

Thompson decidió reescribir el código por una razón muy sencilla: la portabilidad. UNIX estaba creciendo muy rápido y no era práctico tener que reescribir todo el sistema para cada arquitectura, sobre todo en una época en la que el número de estándares era muy limitado y había un gran número de diferentes arquitecturas. Con C, UNIX podía ser adaptado a cualquier plataforma con relativa facilidad.

Menos de un año después Ken realizó su última gran contribución a UNIX, y es que, aunque siguió trabajando en el proyecto, estas tres fases del proyecto fueron las más destacadas por su relevancia en el propio UNIX así como por su influencia en otros sistemas operativos. Este último trabajo fue la implementación de las tuberías de Malcolm Douglas McIlroy.

Malcolm Douglas McIlroyMcIlroy era uno de los trabajadores de los Laboratorios Bell involucrado en el proyecto UNIX. Entre 1959 y 1960 empezó a desarrollar macros que trabajaban con un nuevo concepto, las tuberías. Estas permitían que la salida de un programa fuera usada como entrada para otros programas. Este concepto, aunque muy simple, significo toda una revolución, aunque su implementación aun tardaría unos años en llegar.

Una de las personas que intentó abordar este tema fue Joe Osanna, uno de los desarrolladores de MULTICS. Aunque no consiguió una implementación decente, logró reflotar la idea de las tuberías, la cual sería recogida de nuevo por McIlroy y traducida en un conjunto de propuestas y sugerencias. Al rededor de 1972, McIlroy presentó la sintaxis que utilizarían las tuberías. Esta llego a manos de Thompson, quien cogió la idea y la implementó y mejoró ligeramente para incluirla en su sistema operativo. Esta implementación cambiaría posteriormente hasta convertirse en el concepto de tuberías que conocemos hoy en día.

Tras un gran trabajo en UNIX, este fue finalmente presentado al público en 1973, y una copia del mismo fue entregada a la UCB, universidad en la que se gradúo Thompson y a la que volvería en 1975 durante dos años como profesor visitante. La UCB estaba trabajando con su sistema operativo y Ken quería seguir liderando y colaborando en su desarrollo. Ademas era una oportunidad de trabajar con un nuevo grupo de personas y de obtener una gran estimulación intelectual. Con su incorporación en la universidad, esta se convirtió en la segunda desarrolladora de UNIX junto con los Laboratorios Bell.

Década de los 80

A su vuelta a Bell, y casi desvinculado de su proyecto, Thompson comenzó en 1980, junto con Rob Pike, el desarrollo de un nuevo sistema operativo al que bautizaron con el nombre de Plan 9 from Bell Labs en homenaje a la película de ciencia ficción Plan 9 from Outer Space.

Plan 9Plan 9 estaba basado en UNIX, pero incorporaba un gran número de innovaciones como recursos como ficheros, espacio de nombres y un protocolo de comunicación estándar denominado 9P usado para acceder a todos los recursos. Otra de las grandes contribuciones de Plan 9 fue el directorio /proc, adoptado posteriormente por todas las distribuciones Linux y que es el lugar donde se listan todos los procesos.

El carácter innovador de Ken Thompson le lleva a embarcarse en otro proyecto: Belle.

Belle era una máquina desarrollada en los Laboratorios Bell junto a Joe H. Condon para jugar al ajedrez. De hecho Belle fue la primera máquina construida para este propósito y la más avanzada de su época, alcanzando una puntuación de 2250 en el ranking USCF. Para hacernos una idea, se estíma que solo hay unas 18000 personas con ese nivel.

Aunque Belle comenzó a desarrollarse en la década de los 70, fue a principios de los 80 cuando evoluciono drásticamente, convirtiéndola en la ganadora de varias ediciones del ACM North American Computer Chess Championships y la edición de 1980 del torneo World Computer Chess Championship.
Belle

Década de los 90

En 1992 su trabajo en Plan 9 le lleva a desarrollar UTF-8. Estandarizado como RFC 3629, UTF-8 es una norma de codificación de caracteres de longitud variable. Este formato fue desarrollado para poder representar cualquier carácter, cosa que ASCII no podía hacer por usar un número inferior de bits. Al día siguiente de ser desarrollado Pike y Thompson lo implantaron en su sistema operativo. Un año después fue presentado oficialmente en San Diego.

En la actualidad

Thompson se retiró de su trabajo en los Laboratorios Bell el 1 de Diciembre del año 2000, apenas un mes después de que el último ordenador con MULTICS dejara de funcionar. Se mudó a California y trabajó en Entrisphere hasta el año 2006. Actualmente Kenneth Thompson ocupa un puesto como ingeniero en Google Inc., donde ha contribuido al diseño del lenguaje de programación Go, inspirado en la sintaxis de C y del cual es co-creador junto a Robert Griesemer y Rob Pike.

Premios y menciones

Ken Thompson, al igual que su compañero de trabajo Dennis Ritchie, recibió el reconocimiento de todos sus compañeros así como un buen número de premios y condecoraciones entre los que se encuentran los siguientes:

  • 1980: Thompson entra a formar parte de la Academia Nacional de Ciencias (NAS, por sus siglas en ingles). NAS es una organización cuyos miembros sirven como consejeros a la nación en las áreas de ciencia, ingeniería y medicina.
  • 1983: Ken es nombrado fellow de los Laboratorios Bell. Este es el mayor rango que se puede conceder a un miembro. Para optar a él los candidatos deben haber demostrado su valía mediante una serie de logros, cosa que Thompson habría conseguido sobradamente gracias a su contribución en MULTICS, UNIX y Plan 9 from Bells Labs.
  • Premio Turing

  • 1983: Pocos meses después de ser nombrado fellow, Dennis y Ken reciben el premio Turing por su contribución teórica al diseño de sistemas operativos así como por la implementación del sistema operativo UNIX. Este premio anual que se viene concediendo desde 1966, es uno de los premios más valorados en el mundo de la informática. De hecho es conocido como el Premio Nobel de la computación.
  • 1983: Después de recibir el premio Turing, K&R reciben el reconocimiento adicional de toda la industria.
  • Ken, Ritchie y Clinton

  • 1999: Ken Thompson y Dennis Ritchie reciben de manos del presidente de Estados Unidos, Bill Clinton, la Medalla Nacional de Tecnología (National Medal of Thecnology) de 1998, un honor concedido a inventores e innovadores que han contribuido en el desarrollo de nuevas e importantes tecnologías. En concreto recibieron el premio por su trabajo en el desarrollo de UNIX y en el lenguaje de programación C, los cuales supusieron un gran avance y crecimiento de la industria del software y del hardware, así como en el área de las redes de computadores, colocando a América como líder en la era de la información.
  • Logotipo de IEEE

  • 1999: Finalmente Ken Thompson recibe el primer premio Tsutomu Kanai, concedido por el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE en sus siglas en inglés por su papel en el desarrollo de UNIX, el cual sigue siendo, hoy en día, la plataforma de partida para muchos otros sistemas operativos.
  1. 9/05/10

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.