Douglas McIlroy

Ajustar Compartir Imprimir Citar
Matemático americano y científico informático

Malcolm Douglas McIlroy (nacido en 1932) es matemático, ingeniero y programador. A partir de 2019, es profesor adjunto de informática en Dartmouth College. McIlroy es mejor conocido por haber propuesto originalmente canalizaciones de Unix y haber desarrollado varias herramientas de Unix, como deletrear, diff, ordenar, unir, graficar, hablar y tr. También fue uno de los investigadores pioneros de los macroprocesadores y la extensibilidad del lenguaje de programación. Participó en el diseño de múltiples lenguajes de programación influyentes, particularmente PL/I, SNOBOL, ALTRAN, TMG y C++.

Su trabajo fundamental sobre la creación de componentes de software y la reutilización de código lo convierte en un pionero de la ingeniería de software basada en componentes y la ingeniería de línea de productos de software.

Biografía

McIlroy obtuvo su licenciatura en ingeniería física de la Universidad de Cornell y un doctorado. en matemáticas aplicadas del MIT en 1959 por su tesis On the Solution of the Differential Equations of Conical Shells (asesor Eric Reissner). Enseñó en el MIT de 1954 a 1958.

McIlroy se unió a Bell Laboratories en 1958; de 1965 a 1986 fue jefe de su Departamento de Investigación de Técnicas Informáticas (el lugar de nacimiento del sistema operativo Unix), y posteriormente fue Miembro Distinguido del Personal Técnico.

De 1967 a 1968, McIlroy también se desempeñó como profesor invitado en la Universidad de Oxford.

En 1997, McIlroy se retiró de Bell Labs y asumió el cargo de profesor adjunto en el Departamento de Ciencias de la Computación de Dartmouth College.

Anteriormente se desempeñó en la Association for Computing Machinery como conferencista nacional, presidente del Premio Turing, miembro del comité de planificación de publicaciones y editor asociado de Comunicaciones de la ACM, el Journal of el ACM, y Transacciones ACM en Lenguajes y Sistemas de Programación. También sirvió en el comité ejecutivo de CSNET.

Investigaciones y contribuciones

Macroprocesadores

McIlroy es considerado un pionero de los macroprocesadores. En 1959, junto con Douglas E. Eastwood de Bell Labs, introdujo macros condicionales y recursivas en el popular ensamblador SAP, creando lo que se conoce como Macro SAP. Su artículo de 1960 también fue fundamental en el área de la extensión de cualquier lenguaje de programación (incluido el de alto nivel) a través de macroprocesadores. Estas contribuciones iniciaron la tradición del lenguaje macro en Bell Labs ("todo, desde L6 y AMBIT hasta C"). Las ideas de procesamiento de macros de McIlroy también fueron la principal inspiración para el procesador de macros TRAC.

También fue coautor del procesador de macros M6 en FORTRAN IV, que se usó en ALTRAN y luego se transfirió e incluyó en las primeras versiones de Unix.

Contribuciones a Unix

Durante las décadas de 1960 y 1970, McIlroy contribuyó con programas para sistemas operativos Multics (como RUNOFF) y Unix (como diff, echo, tr, join y look), cuyas versiones están muy extendidas hasta el día de hoy gracias a la adopción del estándar POSIX y los sistemas operativos similares a Unix. Introdujo la idea de las canalizaciones de Unix. También implementó el compilador-compilador TMG en el ensamblaje PDP-7 y PDP-11, que se convirtió en el primer lenguaje de programación de alto nivel que se ejecuta en Unix, lo que impulsó el desarrollo e influyó en el lenguaje de programación B de Ken Thompson y en el de Stephen Johnson. Analizador-generador Yacc.

McIlroy también se hizo cargo de la compilación de Dennis Ritchie del manual de Unix 'como un trabajo de amor'. En particular, editó el volumen 1 de las páginas del manual para la Versión 7 de Unix. Según Sandy Fraser: "El hecho de que hubiera un manual, que él [McIlroy] insistiera en un estándar alto para el manual, significaba que insistió en un estándar alto para cada uno de los programas que se documentaron".

Diseño de lenguaje informático

McIlroy influyó en el diseño y la implementación del lenguaje de programación SNOBOL. Sus macros de manipulación de cadenas se usaron ampliamente en la implementación inicial de SNOBOL de 1962 y ocuparon un lugar destacado en el trabajo posterior, lo que finalmente condujo a su lenguaje de implementación independiente de la máquina SIL. El tipo de tabla (arreglo asociativo) se agregó a SNOBOL4 por insistencia de McIlroy en 1969.

En la década de 1960, participó en el diseño del lenguaje de programación PL/I. Fue miembro del comité IBM–SHARE que diseñó el lenguaje y, junto con Robert Morris, escribió el compilador Early PL/I (EPL) en TMG para el proyecto Multics.

Alrededor de 1965, McIlroy, junto con W. Stanley Brown, implementaron la versión original del lenguaje de programación ALTRAN para computadoras IBM 7094.

McIlroy también ha tenido una influencia significativa en el diseño del lenguaje de programación C++ (por ejemplo, propuso el operador de flujo de salida <<).

Algoritmos

En la década de 1990, McIlroy trabajó para mejorar las técnicas de clasificación, en particular, fue coautor de un qsort optimizado con Jon Bentley.

En 1969, contribuyó con un algoritmo eficiente para generar todos los árboles de expansión en un gráfico (descubierto por primera vez por George J. Minty en 1965).

Premios y reconocimientos

En 1995, fue elegido miembro de la Asociación Estadounidense para el Avance de la Ciencia. En 2004, ganó el premio USENIX Lifetime Achievement Award ("The Flame") y su premio Software Tools User Group (STUG). En 2006, fue elegido miembro de la Academia Nacional de Ingeniería.

Puntos de vista sobre la informática

A McIlroy se le atribuye la cita "El verdadero héroe de la programación es el que escribe código negativo" donde el significado de código negativo se considera similar a la anécdota del equipo del famoso desarrollador de Apple, Bill Atkinson (es decir, cuando un cambio en la fuente de un programa hace que el número de líneas de código disminuya (&# 39;código negativo'), mientras que mejora su calidad general, legibilidad o velocidad).

Literatura