💾 Archived View for texto-plano.xyz › peron › articulos › rata_biblioteca_ritchie.gmi captured on 2023-07-10 at 13:37:09. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
Muchos de ustedes habrán oído hablar de Dennis Ritchie. A fines de la década de 1960, abandonó sus estudios de posgrado de matemática aplicada en Harvard para ocupar un puesto en los Laboratorios Bell, donde pasaría la totalidad de su carrera. No mucho después de unirse a esta institución de investigación y desarrollo, Ritchie haría equipo con Ken Thompson para crear la díada fundamental del mundo digital moderno: el sistema operativo Unix y el lenguaje de programación C. Thompson lideró el desarrollo del sistema, mientras que Ritchie la creación de C, con el que Thompson reescribiría Unix. Con el tiempo, Unix se convirtiría en la base de la mayoría de los sistemas operativos sobre los que se construye nuestro mundo digital, mientras que C sería - y sigue siendo - uno de los lenguajes más populares para escribir el software que anima este mundo.
En las páginas web personales de Ritchie en Bell Labs (aún mantenidas por Nokia, el actual propietario), este describe con su característica desaprobación seca el crecimiento educativo que siguió en la informática:
"Recibí una licenciatura y títulos avanzados de la Universidad de Harvard, donde me concentré en Física como estudiante y en Matemáticas Aplicadas como estudiante de posgrado... El tema de mi tesis doctoral de 1968 fueron las funciones de jerarquías subrecursivas. Mi experiencia universitaria me convenció de que no era lo suficientemente inteligente como para ser físico, y que las computadoras eran bastante buenas. Mi experiencia de posgrado en tanto me convenció de que no era lo suficientemente inteligente como para ser un experto en teoría de algoritmos, pero también que me gustaban más los lenguajes procedurales que los funcionales.”
Cualesquiera que sean los méritos reales de las autoevaluaciones Ritchianas, su camino ciertamente lo llevó a un campo y entorno en el que haría contribuciones extraordinarias.
Puede resultar sorprendente saber que hasta hace poco, a pesar de la muy merecida fama computacional de Ritchie, su Disertación - aquella bifurcación intelectual y biográfica que separa una carrera en ciencias académicas de la del cómputo que lo condujo al Bell Labs, al C y a Unix - se perdió. ¿Cómo que se perdió? Sí, tanto por ser inédita sino también ausente y perdida de cualquier registro público; ni siquiera se pudo hallar una en el catálogo de la biblioteca de Harvard ni en otras bases de datos de tesis doctorales estadounidenses.
Luego de la muerte de Dennis Ritchie acaecida en 2011, su hermana Lynn buscó con mucho cuidado la copia oficial o cualquier registro que pudiese existir en Harvard. No dio con ninguno, pero pudo hacerse con una copia en posesión de la viuda del ex-asesor de Ritchie. Hasta hace muy poco, transcurrido medio siglo, quizás menos de una docena de personas habían tenido la oportunidad de leer la disertación de Ritchie. ¿Por qué?
En la misma descripción de Ritchie de su trayectoria educativa, nunca afirma explícitamente haber obtenido un doctorado en base a su disertación de 1968. ¿Por qué no? Porque no lo hizo. La razón parece ser que no tomó las medidas necesarias para depositar oficialmente su tesis terminada en la biblioteca de Harvard. El profesor Albert Meyer del MIT (que estaba en la cohorte de la escuela de posgrado de Dennis Ritchie), recuerda este asunto en una entrevista reciente:
“Bueno, la historia tal como la escuché de Pat Fischer [asesor de Harvard de Ritchie y Meyer]... indicaría que fue definitivamente cierto que, en ese momento, las reglas de la Universidad de Harvard hacían necesario enviar una copia encuadernada de tu tesis doctoral a Harvard, ya que para obtener tu doctorado necesitabas el certificado que otorgaba la biblioteca al hacerlo. Según como Pat cuenta la historia, Dennis presentó su tesis, la cual fue aprobada en el comité de tesis, y contaba ya con un manuscrito mecanografiado de la misma lista para entregar cuando se enteró que la biblioteca requería encuadernarla y entregarla. Y la tarifa vinculante era en ese momento... no era una suma imposible, pero no era un monto irrisorio. Según Pat, la actitud de Dennis fue: 'Si la biblioteca de Harvard quiere una copia encuadernada para conservarla, ellos mismos deberían pagar por el libro, ¡¿porqué tendría que pagarlo yo?!'. Y como resultado, nunca obtuvo el doctorado. Ni siquiera fue esto de 'tengo todo menos la tesis'. Sino 'tengo todo menos la copia encuadernada'".
Si bien las investigaciones de la propia Lynn Ritchie confirman que Dennis Ritchie jamás aplicó por la copia encuadernada de su disertación, y que dejó Harvard sin su doctorado, su hermano John opina que hubo algo más en las acciones de Dennis Ritchie más allá de un ataque de resentimiento por los honorarios de encuadernación y salvaguarda:
Ya tenía un trabajo codiciado como investigador en Bell Labs, y “realmente nunca le gustó cuidar esos detalles de la vida”.
Nunca sabremos realmente la razón, y tal vez nunca estuvo del todo claro ni siquiera para el propio Ritchie. Pero lo que podemos saber con certeza es que la disertación de Dennis Ritchie estuvo perdida durante medio siglo, hasta ahora.
Dentro de la colección Dennis Ritchie recientemente donada por los hermanos de Ritchie al Museo de la Historia del Cómputo (EE.UU.), yacen varias reliquias históricas identificadas. Una es recolecciones del código fuente más antigua del Unix de Investigación, que datan de 1970–71. Otra son un juego de fotocopias descoloridas y manchadas de la tesis doctoral de Ritchie, "Estructura del programa y complejidad computacional". El CHM se complació en hacer pública por primera vez tanto una copia escaneada del manuscrito original de la disertación de Ritchie, así como una da copia propiedad de Albert Meyer).
Disertación (Tesis) de Dennis Ritchie. Manuscrito Original.
Disertación (Tesis) de Dennis Ritchie. Copia Legible.
Recuperar una copia de la disertación perdida de Ritchie y ponerla a disposición es una cosa, entenderla es otra. Para comprender de qué se trata la disertación de Ritchie, debemos retroceder a principios del siglo XX a un período de ebullición creativa en el que matemáticos, filósofos y lógicos debatieron los fundamentos mismos de las matemáticas. Durante los siglos que precedieron a este momento, las cualidades particulares de lo que se describe como conocimiento matemático —su exactitud y certeza— le dieron un estatus especial, a veces divino. Si bien la especulación filosófica sobre el orígen o fundamento de estas cualidades se remonta al menos a Pitágoras y Platón, en los comienzos del siglo XX los matemáticos y filósofos más influyentes se dieron a buscar este fundamento matemático en la lógica formal, donde las reglas y procedimientos del razonamiento pudiesen expresarse en sistemas simbólicos.
En la década de 1920, el matemático alemán David Hilbert fue increíblemente influyente en estos intentos de asegurar el cimento de las matemáticas en la lógica formal. En particular, Hilbert creía que era posible establecer ciertas cualidades de las matemáticas - por ejemplo, que las matemáticas carecían de contradicciones y que podía demostrarse la validez o falsedad de cualquier afirmación matemática mediante ciertos tipos de pruebas en lógica formal. En particular, el tipo de pruebas propugnadas por Hilbert - denominadas “finitistas” - resultaban de la aplicación de las reglas simples, explícitas y casi mecánicas que tenían la manipulación de los símbolos expresivos de la lógica formal. Estas pruebas se basarían en la creación rígida de encadenados de símbolos, línea por línea, unidas las unas con las otras.
En la década de 1930, en la búsqueda de tales reglas para la manipulación lógica de símbolos, fue que los matemáticos y filósofos establecieron una conexión con la computación y los procesos rígidos paso a paso mediante los cuales los "computadores" humanos y las calculadoras mecánicas oficiaban sus operaciones matemáticas. Kurt Gödel proporcionó una prueba del tipo propugnado por Hilbert, pero lamentablemente demostró lo contrario de lo que Hilbert y otros esperaban. En lugar de demostrar que la lógica aseguraba que todo lo que era verdadero en matemáticas podría probarse, la lógica de Gödel terminó revelando que las matemáticas eran lo opuesto, eran incompletas. Para arribar a este sorprendente resultado, la prueba de Gödel se basó sus argumentos sobre ciertos tipos de objetos matemáticos denominados funciones primitivas recursivas. Para Gödel lo que resultaba importante de las funciones primitivas recursivas era su condición de eminentemente computables, es decir, se basaban en "procedimientos finitos" - exactamente el tipo de reglas simples, casi mecánicas, solicitado por el mismo Hilbert.
Siguiendo rápidamente los postulados de Gödel, en los EE. UU., Alonzo Church se basó en argumentos similares sobre computabilidad para formular una prueba lógica que demostraba también que las matemáticas no siempre eran decidibles, es decir, que había algunas afirmaciones sobre matemáticas para las que no es posible determinar validez (si son verdaderas o falsas). La prueba de Church se basa en una noción de "funciones efectivamente calculables", derivadas de las funciones primitivas recursivas de Gödel. Casi al mismo tiempo e independientemente, en el Reino Unido, Alan Turing cementó una prueba que dio con el mismo resultado - pero basada en la noción de "computabilidad" definida por la operación de una "máquina de computar" abstracta. Esta máquina abstracta de Turing - capaz de afrontar cualquier cómputo o cálculo - se convertiría más tarde en un cimiento absolutamente crítico de la teoría del cómputo.
En las décadas que siguieron - y antes del surgimiento del cómputo como disciplina reconocida - matemáticos, filósofos y otros comenzaron a explorar la naturaleza de la computación por derecho propio, cada vez más divorciada de las conexiones con sus fundamentos matemáticos. Como explica Albert Meyer en su entrevista:
“En las décadas de 1930 y 1940, se trabajó mucho, se entendió la noción de lo que era y no era computable. Existían límites lógicos debido a Gödel y Turing sobre lo que se podía computar y lo que no se podía computar. Pero la nueva idea [a principios de la década de 1960] era 'Vamos a tratar de entender lo que se puede hacer con el cómputo, fue entonces cuando surgió la idea de la complejidad computacional... Había... todo tipo de cosas que podría hacer con el cómputo, pero no todo fue fácil.
Con el advenimiento de la computación digital electrónica, para muchos de estos investigadores por entonces el interrogante dejó de consistir en qué argumentos lógicos de la computabilidad podían enseñarsenos acerca de la naturaleza de las matemáticas, sino mas bien qué podían revelar estos mismos argumentos lógicos sobre los límites de la computabilidad en sí. En medida que se comprendieron mejor estos límites, los interrogantes de estos investigadores mutaron hacia la naturaleza de la computabilidad dentro de estos límites. ¿Qué podría probarse en el reino de los cálculos posibles?
Uno de los pocos lugares donde se estaban llevando a cabo estas nuevas disertaciones a mediados de la década de 1960, el momento en que Dennis Ritchie y Albert Meyer iniciaban sus estudios de posgrado en Harvard, fue en ciertos rincones del Departamento de Matemáticas Aplicadas. Este Departamento también fue - con frecuencia - donde la práctica del cómputo digital electrónico se arraigó tempranamente en los campus académicos. Como recuerda Meyer:
“Las matemáticas aplicadas eran un campo enorme en el que este tipo de teoría del cómputo era una pieza pequeña y nueva”.
Tanto Ritchie como Meyer, gravitaron hacia el Departamento de Matemáticas Aplicadas de Harvard desde sus estudios universitarios en matemáticas en dicha universidad, aunque Meyer no recuerda haber conocido a Ritchie cuando era estudiante. Situados en sus estudios de posgrado, ambos se interesarían cada vez más en la teoría del cómputo y, por lo tanto, se apoyaron en la asesoría académica de Patrick Fischer. Fischer contaba en ese momento con un doctorado recién acuñado que solo reluciría en Harvard durante los primeros años críticos de los estudios de Ritchie y Meyer, antes de aterrizar en Cornell en 1965. (Más tarde, en 1982, Fischer fue uno de los objetivos del bombardero postal serial, el UnaBomber). Tal como recuerda Meyer. :
“Patrick estaba muy interesado en esta noción de comprender la naturaleza del cómputo... qué dificultaba las cosas, qué facilitaba las cosas... Estos interrogantes se abordaban de varias maneras... ¿Qué tipo de cosas podrían hacer diferentes tipos de programas?”
Transcurrido su primer año de estudios de posgrado, sin que al menos Meyer lo supiera, Fischer contactó de forma independiente a Ritchie y Meyer para que fungieran de asistentes de investigación de verano. ¿La tarea de Meyer? Trabajó en un "problema abierto" particular sobre teoría del cómputo que Fischer había identificado y debía elaborar un informe al final del verano. Fischer, por su parte, estaría fuera. Meyer pasó ese verano miserable trabajando solo en el problema, y al final informó a Fischer que solo había logrado resultados menores. Poco después, mientras caminaba hacia el seminario de posgrado de Fischer, Meyer dio repentinamiente con una solución al problema de verano. Al informarle con entusiasmo este avance a Fisher, Meyer resultó "sorprendido y un poco decepcionado al escuchar que Pat dijo que Dennis también había resuelto el problema". Fischer había planteado el mismo problema a Ritchie y Meyer, ¡pero no les había dicho nada!
El problema de verano de Fischer fue un avance sobre la gran cuestión de la complejidad computacional, sobre su relativa facilidad o el tiempo que lleva computar un tipo de problema por sobre otro. Ha de recordarse que Gödel había empleado funciones primitivas recursivas para ejemplificar la computabilidad por procedimientos finitos (clave de su famoso trabajo). En la década de 1950, el matemático polaco Andrzej Grzegorczyk definió una jerarquía para dichas funciones primitivas recursivas en función de qué tan rápido o lento crecen las mismas. La solicitud veraniega de Fischer, entonces, fue que Meyer y Ritchie exploraran la manera en que esta jerarquía de funciones se relacionaba con la complejidad computacional.
Para gran crédito, esta decepción veraniega de Meyer dio paso a un gran aprecio por la solución de Ritchie al problema Fischeriano: las rutinas en bucle. Meyer recuerda:
“... este concepto de rutinas en bucle, que era una invención de Dennis... eran tan hermosas, importante, y un mecanismo intelectual expositivo superlativo en aquello de aclarar de qué se trataba el tema, que no me importó quien habría resuelto el problema”.
La solución de las rutinas en bucle de Ritchie al problema veraniego Fischeriano constiuiría el núcleo de su disertación de 1968. Se trata esencialmente de programas informáticos muy pequeños y limitados que le resultarían familiares a cualquiera que haya empleado el comando FOR para escribir bucles en BASIC. En las rutinas en bucle, es posible establecer una variable en cero, agregar 1 a una variable o mover el valor de una variable a otra. Eso es todo. El único control disponible en las rutinas en bucle es... un bucle simple, en el que una secuencia de instrucciones se repite un cierto número de iteraciones. Resulta importante destacar que las rutinas en bucles se pueden "anidar", es decir, meter subrutinas en bucles dentro de rutinas en bucles.
Lo que Ritchie demuestra en su Disertación es que estas funciones de bucle son exactamente lo que se necesita para producir las funciones primitivas recursivas de Gödel, y solo estas funciones; solo esas funciones de la jerarquía de Grzegorczyk. Gödel tendió a considerar su funciones recursivas como eminentemente computables, y Ritchie demostró que los programas de bucle eran las herramientas adecuadas para ese trabajo computacional. La Disertación de Ritchie demuestra que el grado de "anidamiento" de las rutinas de bucle (la profundidad de las subrutinas en bucles dentro de las rutinas en bucles) es una medida de la complejidad computacional que portan, así como un indicador del tiempo requerido para su cómputo. Por demás, muestra que evaluar las rutinas de bucles por su profundidad de subrutinas de bucles es exactamente equivalente a delimitar la jerarquía de Grzegorczyk. De hecho, la tasa de crecimiento de las funciones primitivas recursivas resulta directamente relacionada con su complejidad computacional. De hecho, resultan idénticas.
Como recuerda Meyer:
“Rutinas de bucle convertidas en un modelo tan simple que cualquier científico informático podría entender instantáneamente, algo que la formulación tradicional... en términos de jerarquías primitivas recursivas... con una notación lógica de sintaxis complicada y muy elaborada, que además harían que los ojos queden bizcos—Repentinamiente ahora tenías una descripción informática de tres y cuatro líneas que describía una rutina en bucle”.
A pesar de todo, si bien este enfoque Ritchiano para la Ciencia del Cómptuo con su rutina en bucle jamás se hizo público con tapa dura blasonado con el sello dorado de Harvard, lo cierto es que sí llegó a la literatura científica en una publicación conjunta con Albert Meyer de 1967.
Meyer explica:
“[Dennis] era un tipo muy dulce, sencillo y sin pretensiones. Claramente muy inteligente, pero también un poco taciturno... Así que hablamos un poco, y discutimos sobre este documento que escribimos juntos, que yo escribí, creo. No creo que lo haya escrito en absoluto, pero lo leyó... leyó e hizo comentarios... y me explicó lo de las rutinas en bucle”.
El artículo "La complejidad de las rutinas en bucle" publicado por la ACM en 1967, fue un paso importante en el lanzamiento de una carrera altamente productiva y respetada en informática teórica por parte de Meyer. Pero era un punto de partida para y con Ritchie. Como recuerda Meyer:
“Resultó una decepción. Me hubiera encantado colaborar con él, porque parecía un tipo brillante y agradable con el que sería divertido trabajar, pero sí, es cierto, estaba haciendo otras cosas. ¡Se quedaba despierto toda la noche jugando Spacewar!
Al comienzo de este monográfico, se nota que en su declaración biográfica en su sitio web, Ritchie bromeó: “Mi experiencia en la escuela de posgrado me convenció de que no era lo suficientemente inteligente como para ser un experto en la teoría de algoritmos y también que me gustaban los lenguajes procedimentales. mejor que los funcionales.” Si bien su predilección por los lenguajes procedurales resulta incuestionable, cualquier análisis de su Disertación perdida desmiente su autoevaluación de que no era lo suficientemente inteligente para la informática teórica. Lo más probable es que la experiencia de la escuela de posgrado de Ritchie fuera una en la que el atractivo de lo teórico dio paso a los encantos de la implementación computacional, de la construcción de nuevos sistemas y nuevos lenguajes como una forma de explorar los límites, la naturaleza y las posibilidades de la informática.