REFLEXIONES SOBRE LA INVESTIGACIÓN EN SOFTWARE ¿Se pueden volver a producir las circunstancias que nutrieron el proyecto UNIX? por Dennis M Ritchie Repentinamente el sistema operativo UNIX se ha convertido en noticia, pero no es nuevo. Comenzó en 1969 cuando Ken Thompson descubrió una computadora PDP-7 poco utilizada y se dispuso a diseñar un entorno informático de su gusto. Pronto me sentí atraído por su trabajo; me uní a la empresa, aunque la mayoría de las ideas - la mayor parte del trabajo en realidad - eran suyas. En poco tiempo, otros miembros de nuestro grupo en el área de investigación de AT&T Bell Laboratories estaban usando el sistema: Joe Ossanna, Doug Mcllroy y Bob Morris fueron críticos y colaboradores especialmente entusiastas. En 1971 adquirimos una PDP-11 y, a fines de ese año, estábamos brindando soporte a nuestros primeros usuarios reales: tres mecanógrafas que ingresaban solicitudes de patentes. En 1973, el sistema fue reescrito en lenguaje C, y en ese año, también, fue descrito públicamente por vez primera en la Conferencia de Principios de Sistemas Operativos; el paper resultante del JBJ apareció en Comunicaciones del ACM al año siguiente. A partir de entonces, su empleo fue creciendo constantemente, tanto dentro como fuera de Bell Laboratories. Se estableció un grupo de desarrollo para respaldar proyectos dentro de la empresa, y se licenciaron varias versiones de investigación para el uso externo. La última distribución de investigación fue la Séptima Edición del Sistema, aparecida en 1979; más recientemente, AT&T comenzó a comercializar System III y ahora ofrece System V, ambos productos del grupo de desarrollo. Todas las versiones de investigación se distribuían en condición "como es", o sea, software sin soporte; System V en cambio representa un producto con soporte capaz de correr en varias líneas de hardware diferentes, incluyendo los más recientes sistemas 3B diseñados y construidos por AT&T. UNIX se usa ampliamente y ahora incluso se habla de él como un posible estándar de la industria. ¿Cómo llegó a tener éxito? Por supuesto, están sobre la mesa sus méritos técnicos. Debido a que el sistema y su historia ha sido discutido con cierta extensión [6, 7, 11], no expondré estas cualidades, excepto una. A pesar de su frecuente inconsistencia superficial - tan coloridamente reflejada por Don Norman en su artículo de Datamation [4], y a pesar de su riqueza - UNIX es un sistema simple y coherente que lleva al límite algunas buenas ideas y modelos. Es este aspecto del sistema - sobre todo - lo que lo ha hecho querido por sus adherentes. Más allá de las consideraciones técnicas, hubo fuerzas sociológicas que contribuyeron a su éxito. Primero, apareció en un momento en que se estaban volviendo posible las alternativas a los grandes centros de cómputo de gestión centralizada; la década de 1970 fue la década de la minicomputadora: donde grupos pequeños pudieron configurar sus propios centros de cómputo. Debido a que se daban a un inicio de cero, y a que el software de los fabricantes era - en el mejor de los casos - poco imaginativo y, a menudo, horrible, ciertas personas aventureras se veian dispuestas a tomar el riesgo de emprender el uso de un sistema operativo nuevo e intrigante, aunque n contase con soporte. En segundo lugar, UNIX estuvo disponible por primera vez en la PDP-11, la mnás exitosa de las nuevas minicomputadoras que aparecieron en la década de 1970, y pronto su portabilidad lo llevó a muchas máquinas adicionales, a medida que éstas aparecían. En el momento que se creó UNIX, nos abocamos mucho a conseguir fondos internos para una nueva máquina, ya fuera una DEC PDP-10 o una SDS (luego Xerox) Sigma 7. En retrospectiva, es seguro que si hubiéramos tenido éxito en adquirir esta última máquina, UNIX podría haber sido escrito pero se habría marchitado. [N.d.T La PDP-10 fue un éxito en la industria] De manera similar, UNIX le debe mucho a Multics [5], como ya he descrito [6, 7], eclipsó a su padre tanto porque no exige un soporte de hardware inusual como por otras cualidades. Finalmente, UNIX disfrutó de un período de gestación inusualmente largo. Durante gran parte de este tiempo (por ejemplo, la década de 1969 a 1979), el sistema estuvo bajo control efectivo de sus diseñadores, y fue utilizado por ellos. Llevó tiempo desarrollar todas las ideas y escribir el software, pero si bien el sistema aún estaba en desarrollo, la gente lo utilizaba tanto dentro como fuera de Bell Labs, bajo licencia. Así, logramos conservar las ideas centrales, a la vez que acumulábamos una base de usuarios entusiastas y técnicamente capaces de aportar ideas y programas en un ambiente tranquilo, comunicativo y no competitivo. Resultaron sustanciales algunas contribuciones externas, como las de la Universidad de California en Berkeley. Nuestros usuarios - aunque escasos - se hallaban ampliamente distribuidos dentro de la empresa, en universidades y en algunas organizaciones comerciales y gubernamentales. El sistema se volvió importante en el mercado intelectual, aunque ciertamente aún no comer cial, debido a esta red de usuarios primigenios. ¿En qué consiste la investigación en informática industrial? Algunas personas tienen la impresión de que el trabajo original de UNIX fue un proyecto pirata, un "skunkworks". Esto no es así. Se supone que los investigadores deben descubrir o inventar cosas nuevas, y aunque en los primeros días subsistíamos con hardware escaso, siempre contamos con el estímulo de la gerencia. Al mismo tiempo, ciertamente no se parecía en nada a un proyecto de desarrollo. Nuestra intención era crear un entorno informático agradable para nosotros y nuestra esperanza era que a los demás les gustara. El Centro de Investigación de Ciencias de la Computación de los Laboratorios Bell, al que pertenecemos Thompson y yo, estudia tres amplias áreas: Teoría; Análisis numérico; y Sistemas, lenguajes y software. Si bien un trabajo suelto que de como resultado, por ejemplo, en un artículo en una revista científica, no solo se tolera sino que se agradece, existe una fuerte presión - aunque maravillosamente sutil - para pensar en problemas que sean relevantes para nuestra corporación. Esto ha sido así desde que me uní a Bell Labs hace unos 15 años, y no debería sorprender: el antiguo Bell System puede haber parecido un monopolio protegido, pero la investigación siempre ha tenido que pagar su camino. De hecho, a los investigadores les encanta encontrar problemas en los que trabajar, y una de las ventajas de investigar en una gran empresa es la enorme variedad de acertijos que surgen. Por ejemplo, los teóricos pueden contribuir al diseño del compilador para los algoritmos LSI; los analistas numéricos estudian la carga y la distribución de corriente en los semiconductores; y, por supuesto, a los de software les gusta diseñar sistemas y escribir programas que la gente use. Por lo tanto, la investigación informática en Bell Labs siempre ha tenido un compromiso considerable con el mundo y no teme los edictos que nos ordenan ser prácticos. Para algunos de nosotros, de hecho, una de las principales frustraciones ha sido la incapacidad de convencer a otros de que nuestros productos de investigación pueden ser realmente útiles. Alguien puede inventar una nueva aplicación, escribir un programa ilustrativo y ponerlo en práctica, utilizándolo en nuestro propio Laboratorio. Para que la empresa las aproveche al máximo, muchas de estas demostraciones requieren de un mayor desarrollo y apoyo continuo. En el pasado, este uso se habría limitado exclusivamente al empleo dentro de Bell System; más recientemente, existe la posibilidad de desarrollar un producto para la venta directa. Por ejemplo, hace algunos años, Mike Lesk desarrolló un sistema de asistencia de directorio automatizado [3]. El programa tenía una guía telefónica de Bell Labs en línea, y se encontraba enlazado a un sintetizador de voz por medio de una línea telefónica con un decodificador de tonos. Uno llamaba al sistema y por medio del teclado telefónico ingresaba un nombre y un código de ubicación en el teclado de botones telefónicos; se respondía con el número de teléfono y la dirección de la oficina de la persona (no intentaba pronunciar el nombre). A pesar del la limitación de los 12 botones del teléfono (que, por ejemplo, obligaban a juntaban "A", "B" y "C"), resultaba aceptablemente preciso: fallaba sólo en alrededor del 5 por ciento de los intentos. Resultó un éxito local y fue muy utilizado. Desafortunadamente, no pudimos encontrar a nadie que se hiciese cargo de él, ni siquiera como un servicio de apoyo dentro de la empresa, y mucho menos en una oferta pública, y constituyó un drenaje exc esivo de nuestros recursos, por lo que finalmente fue descartado (Elegí este ejemplo no solo porque es lo suficientemente antiguo como para no exacerbar disputas actuales, sino también porque es oportuno: la organización que publica el directorio telefónico de la compañía nos ha solicitado recientemente si podríamos pergeniar un sistema de tales características. Por supuesto, no vale la pena desarrollar o apoyar todas las ideas. En cualquier caso, el mundo está cambiando: nuestras ideas y consejos se buscan con mucha más avidez que antes. Este aumento de influencia ha venido ocurriendo durante varios años ya, en parte debido al éxito de UNIX, pero más recientemente, a consecuencia de una drástica alteración de la estructura de nuestra empresa. AT&T se deshizo de sus compañías operadoras de telefonía a principios de 1984. Ha existido considerable especulación pública sobre lo que esto significaría para la investigación fundamental en Bell Laboratories; un informe en Science [2] resulta revelador. El temor que expresado es que la investigación básica, en general, podría languidecer porque produce ganancias de corto plazo insuficientes para la nueva y más pequeña AT&T. La posición pública de la empresa es tranquilizadora: además, la dirección de investigación de Bell Labs parece creer profundamente y argumenta de forma persuasiva que el compromiso de apoyo a la investigación básica es profundo y continuará [1]. Puede que la investigación fundamental en Bell Labs en física, química y matemáticas, de hecho, no se vea amenazada; sin embargo, el peligro que podría enfrentar, y el caso contra el cual debe estar preparado para argumentar, es el de la irrelevancia para los objetivos de la empresa. La investigación en informática es diferente de estas disciplinas más tradicionales. Filosóficamente se diferencia de las ciencias físicas porque no busca descubrir, explicar o explotar el mundo natural, sino estudiar las propiedades de máquinas de creación humana. En esto es análogo a las matemáticas y, de hecho, la parte de "ciencia" de la informática es - en su mayor parte - de espíritu matemático. Pero un aspecto inevitable de la informática es la creación de programas informáticos: objetos que - aunque intangibles - están sujetos a intercambio comercial. Más que cualquier otra cosa, el mayor peligro para la buena investigación en ciencias de la computación en la actualidad puede ser su excesiva relevancia. Vemos en todas partes evidencia de la fascinación mundial por las computadoras, desde artículos sobre finanzas e incluso las portadas de los periódicos, hasta las dificultades que incluso las universidades más prestigiosas experimentan para encontrar y retener profesores en informática. Los mejores profesores, en lugar de enseñar a estudiantes brillantes, se unen a empresas nuevas y, a menudo, descubren allí que sus estudiantes más brillantes los han precedido. La informática está en primer plano, especialmente en aquellos aspectos - como los sistemas, los lenguajes y la arquitectura de las máquinas - que pueden tener aplicaciones comerciales inmediatas. La atención es halagadora, pero puede ir en detrimento de una buena investigación. En la medida que aumenta la intensidad de la investigación en un área en particular, también se incrementa el impulso de mantener sus resultados en secreto. Esto es cierto incluso en la universidad (el relato de Watson [12] sobre el descubrimiento de la estructura del ADN proporciona un ejemplo bien conocido), aunque en la academia existe una fuerte contrapresión: a menos que uno publique, no se le conocerá en lo absoluto. En la industria, un impulso natural del arte es proteger la información propietaria. Los investigadores entienden las restricciones razonables sobre qué y cuándo publicar, pero muchos se irritarían y huiría a otros lugares, o comenzarían a trabajar en áreas menos delicadas, si se les impidiese comunicar sus descubrimientos e invenciones de manera adecuada. >La gestión de la investigación en Bell Labs ha sido tradicionalmente sensible a mantener un cuidadoso equilibrio entre el interés de la empresa y el equivalente industrial de la libertad académica. La entrada de AT&T en la industria de las computadoras pondrá a prueba, y tal vez forzará, este equilibrio. Otro peligro es que la presión comercial de un tipo u otro desvíe la atención de los mejores pensadores de la innovación real a la explotación de la moda actual, de la prospección a la extracción de un filón conocido. Estas presiones se manifiestan no sólo en la desaparición del profesorado en la industria, sino también en el conservadurismo que se apodera de aquellos con inversiones holgadas - intelectuales o financieras - en una idea determinada. Quizá este efecto explique el porqué han surgido tan pocos sistemas de software interesantes de las grandes empresas informáticas: se hayan encerradas en el mundo pre-existente. Incluso IBM - que apoya a un establecimiento de investigación bien considerado y productivo - en los últimos años ha producido poco para causar incluso una revolución menor en la forma en que la gente piensa acerca de las computadoras. Los ejemplos prácticos de nuevos sistemas importantes parecen provenir de esfuerzos empresariales (VisiCalc es un buen ejemplo) o de gran des empresas, como Bell Labs y, sobre todo, Xerox, que estaban muy involucradas con las computadoras y podían permitirse investigarlas, pero no lo hicieron, no considerándolas como su negocio principal. Por otro lado, en las empresas más pequeñas incluso el apoyo a la investigación más vigoroso depende en gran medida de las condiciones del mercado. El New York Times, en un artículo que describe el paso de Alan Kay de Atari a Apple, señala el problema: "El Sr. Kay... dijo que los laboratorios de Atari habían perdido algo de la atmósfera de innovación que alguna vez atrajo a algunos de los mejores talentos del mundo". "Cuando me fui el mes pasado, estaba claro que pondrían sus esfuerzos en el corto plazo", dijo... "Supongo que el árbol de la investigación debe regarse de vez en cuando con la sangre de los burócratas del lápiz". "[9] En parte porque ser nueva y aún inmadura, y en parte por ser fruto del intelecto, las artes y las ciencias del software reducen la cadena - generalmente en física e ingeniería - entre descubrimiento fundamental, desarrollo avanzado y aplicación. Los inventores que idealizan cómo debería funcionar el software, generalmente encuentran necesario construir sistemas de demostración. Para plantear sistemas grandes y demostrar ideas revolucionarias, se requiere mucho tiempo. Se podría decir que UNIX se escribió en los años 70 destilando las mejores ideas de sistemas de los años 60 y se convirtió en lugar común dirante los años 80. El trabajo en Xerox PARC en computadoras personales, gráficos de mapa de bits y entornos de programación [10] demuestra una progresión similar, comenzando y dando sus frutos unos años más tarde. Se requiere tiempo y compromiso con el valor a largo plazo de la investigación, tanto por parte de los investigadores como de su dirección. Bell Labs ha brindado este compromiso y más: un ambiente para la investigación inusual y excepcionalmente estimulante para mis colegas y para mí. En la medida que ingresamos a lo que las publicaciones de la compañía llaman "la nueva era competitiva", sus gerentes y trabajadores harán bien en recordar cómo y bajo qué condiciones tuvo éxito el sistema UNIX. Si podemos mantener viva una apertura suficiente a nuevas ideas, con suficiente libertad de comunicación, dotada de suficiente paciencia para hacer que la novela prospere, seguirá siendo posible que un futuro Ken Thompson encuentre una computadora CRAY/I poco usada y cree un sistema tan creativo y tan influyente, como UNIX. REFERENCIAS 1. Bell Labs: El nuevo pedido es un buen augurio. Nature 305, 5933 (29 de septiembre de 1983). 2. Bell Labs al borde. Science 221 (23 de septiembre de 1983). 3. Lesk, M.E. Asistencia de directorio BTL activada por el usuario. Memorándum interno de Bell Laboratories (1972). 4. Norman, DA La verdad sobre UNIX. Datamation 27 (1981). 5. Organick, E.I. El sistema Multics MIT Press Cambridge. MA (1972) 6. Ritchie, D. M. Sistema de tiempo compartido UNIX: una retrospectiva. Sistema de campana tecnología J. 57.6 (1978) (1947-1969. 7. Ritchie, D. M. La evolución del sistema de tiempo compartido UNIX. En Diseño de Lenguajes y Metodología de Programación. Jeffrey M. Tobías, Ed. Springer-Verlag, Nueva York. (1980). 8. Ritchie, D. M. y Thompson, K. El sistema de tiempo compartido UNIX. común ACM 17.7 (julio de 1974) 365-375. 9. Sanger, D. E. El científico clave de Atari cambia a Apple. The New York Times 133,46,033 (3 de mayo de 1984). 10. Thacker, C. P. et al. Alto, una computadora personal. Informe técnico de Xerox PARC CSL-79-11. 11. Thompson, K. Sistema de tiempo compartido UNIX: implementación de UNIX. Sistema de campana Tech J. 57,6 (1978). 1931-1946. 12. Watson. JD The Double Helix: un relato personal del descubrimiento de la estructura del ADN. Editorial Ateneo. Nueva York (1968). Copyright 1984 de Association for Computing Machinery, reimpreso con permiso de Communications of the ACM, agosto de 1984, volumen 27, número 8