Malcolm Douglas McIlroy | |
---|---|
Nacido | ( 24 de abril de 1932 )24 de abril de 1932 Newburgh, Nueva York |
Alma máter | Universidad de Cornell (licenciatura, 1954) Instituto Tecnológico de Massachusetts (doctorado, 1959) |
Conocido por | Macros , pipelines de Unix , filosofía de Unix , componentes de software , echo , diff , sort , join , RUNOFF , tr , manual de Unix |
Carrera científica | |
Campos | Ciencias de la computación , matemáticas , ingeniería |
Tesis | Sobre la solución de las ecuaciones diferenciales de las capas cónicas (1959) |
Asesores de doctorado | Eric Reissner |
Sitio web | www.cs.dartmouth.edu/~doug/ |
Malcolm Douglas McIlroy (nacido en 1932) es un matemático , ingeniero y programador estadounidense . A partir de 2019 es profesor adjunto de Ciencias de la Computación en Dartmouth College . McIlroy es mejor conocido por haber propuesto originalmente las canalizaciones de Unix y desarrollado varias herramientas de Unix , como spell , diff , sort , join , graph , speak y tr . [1] 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 componentización de software [2] y la reutilización de código [3] [4] lo convierte en un pionero de la ingeniería de software basada en componentes y de la ingeniería de líneas de productos de software .
McIlroy obtuvo su licenciatura en ingeniería física en la Universidad de Cornell , [5] y un doctorado en matemáticas aplicadas en el MIT en 1959 por su tesis Sobre la solución de las ecuaciones diferenciales de las capas cónicas (asesor Eric Reissner ). [6] Enseñó en el MIT de 1954 a 1958. [5]
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 (la cuna del sistema operativo Unix), y posteriormente fue Miembro Distinguido del Personal Técnico. [5]
De 1967 a 1968, McIlroy también trabajó como profesor visitante en la Universidad de Oxford . [5]
En 1997, McIlroy se retiró de Bell Labs y aceptó un puesto como profesor adjunto en el Departamento de Ciencias de la Computación del Dartmouth College . [5]
Anteriormente trabajó en la Association for Computing Machinery como conferenciante nacional, presidente del premio Turing , miembro del comité de planificación de publicaciones y editor asociado de Communications of the ACM , Journal of the ACM y ACM Transactions on Programming Languages and Systems . También formó parte del comité ejecutivo de CSNET . [5]
McIlroy es considerado un pionero de los procesadores de macros . [7] [8] [9] En 1959, junto con Douglas E. Eastwood de Bell Labs, introdujo macros condicionales y recursivas en el popular ensamblador SAP , [10] creando lo que se conoce como Macro SAP. [11] Su artículo de 1960 también fue fundamental en el área de extensión de cualquier lenguaje de programación (incluidos los de alto nivel ) a través de procesadores de macros. [7] [10] Estas contribuciones iniciaron la tradición de los lenguajes de macros en Bell Labs ("todo desde L6 y AMBIT hasta C"). [12] Las ideas de procesamiento de macros de McIlroy también fueron la principal inspiración para el procesador de macros TRAC . [13]
También fue coautor del procesador de macros M6 en FORTRAN IV , [14] que se utilizó en ALTRAN [15] y luego se adaptó e incluyó en las primeras versiones de Unix . [16]
A lo largo de los años 1960 y 1970, McIlroy contribuyó con programas para Multics (como RUNOFF [17] ) y sistemas operativos Unix (como diff , echo , tr , join y look [16] ), versiones de los cuales están muy extendidas hasta el día de hoy a través de la adopción del estándar POSIX y sistemas operativos similares a Unix . Introdujo la idea de las canalizaciones de Unix. [17] También implementó el compilador-compilador TMG en ensamblador PDP-7 y PDP-11 , que se convirtió en el primer lenguaje de programación de alto nivel que se ejecutaba en Unix, impulsando el desarrollo e influyendo en el lenguaje de programación B de Ken Thompson [17] y el analizador-generador Yacc de Stephen Johnson . [18]
McIlroy también se hizo cargo de la compilación del manual de Unix por parte de Dennis Ritchie "como una labor de amor". En particular, editó el volumen 1 de las páginas del manual para la versión 7 de Unix. [19] Según Sandy Fraser : "El hecho de que hubiera un manual, y que él [McIlroy] insistiera en un alto nivel para el manual, significaba que insistía en un alto nivel para cada uno de los programas que se documentaban". [20]
McIlroy influyó en el diseño y la implementación del lenguaje de programación SNOBOL . Sus macros de manipulación de cadenas se utilizaron ampliamente en la implementación inicial de SNOBOL en 1962 y ocuparon un lugar destacado en trabajos posteriores, lo que finalmente condujo a su lenguaje de implementación independiente de la máquina SIL. El tipo de tabla ( matriz asociativa ) se agregó a SNOBOL4 por insistencia de McIlroy en 1969. [21]
En la década de 1960, participó en el diseño del lenguaje de programación PL/I . [4] [22] Fue miembro del comité IBM – SHARE que diseñó el lenguaje [23] y, junto con Robert Morris , escribió el compilador Early PL/I (EPL) en TMG para el proyecto Multics . [24] [25]
Alrededor de 1965, McIlroy, junto con W. Stanley Brown, implementó la versión original del lenguaje de programación ALTRAN para las computadoras IBM 7094. [15] [10]
McIlroy también ha tenido una influencia significativa en el diseño del lenguaje de programación C++ (por ejemplo, propuso el operador de salida de flujo <<
). [26]
En la década de 1990, McIlroy trabajó en la mejora de las técnicas de clasificación, en particular fue coautor de un qsort optimizado con Jon Bentley . [27]
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). [10] [28]
En 1995, fue elegido miembro de la Asociación Estadounidense para el Avance de la Ciencia . [29] En 2004, ganó tanto el premio USENIX Lifetime Achievement Award ("The Flame") [30] como su premio Software Tools User Group (STUG). [1] En 2006, fue elegido miembro de la Academia Nacional de Ingeniería . [31]
A McIlroy se le atribuye la cita "El verdadero héroe de la programación es aquel que escribe código negativo", [32] donde el significado de código negativo se toma como similar a la anécdota del equipo del famoso desarrollador de Apple , Bill Atkinson [33] (es decir, cuando un cambio en la fuente de un programa hace que el número de líneas de código disminuya (código 'negativo'), mientras que su calidad general, legibilidad o velocidad mejoran).