Douglas McIlroy

Matemático y científico informático estadounidense.
Malcolm Douglas McIlroy
McIlroy en la Fundación Premio Japón en 2011
Nacido( 24 de abril de 1932 )24 de abril de 1932 (92 años)
Newburgh, Nueva York
Alma máterUniversidad de Cornell (licenciatura, 1954)
Instituto Tecnológico de Massachusetts (doctorado, 1959)
Conocido porMacros , pipelines de Unix , filosofía de Unix , componentes de software , echo , diff , sort , join , RUNOFF , tr , manual de Unix
Carrera científica
CamposCiencias de la computación , matemáticas , ingeniería
TesisSobre la solución de las ecuaciones diferenciales de las capas cónicas  (1959)
Asesores de doctoradoEric Reissner
Sitio webwww.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 echo, 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 .

Biografía

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]

Investigación y contribuciones

Procesadores macro

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]

Contribuciones a Unix

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, de 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]

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 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é IBMSHARE 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]

Algoritmos

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]

Premios y reconocimientos

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]

Opiniones sobre informática

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).

Véase también

Literatura

  • Brock, David C.; McIlroy, Malcom D. (30 de septiembre de 2019). McIlroy, Malcom (Doug) Historia oral de Douglas, parte 1 de 2. Computer History Museum . p. 59.
  • Brock, David C.; McIlroy, Malcom D. (6 de noviembre de 2019). McIlroy, Malcom (Doug) Historia oral de Douglas, parte 2 de 2. Computer History Museum. pág. 52.

Referencias

  1. ^ ab "Premio STUG". USENIX. 6 de diciembre de 2011. Consultado el 5 de febrero de 2020 .
  2. ^ Bown, Rodney L., ed. (2–5 de junio de 1986). "Primera conferencia internacional sobre aplicaciones del lenguaje de programación Ada (R) para la Estación Espacial de la NASA, volumen 2 - NASA-TM-101202" (PDF) .
  3. ^ McIlroy, Malcolm Douglas (enero de 1969). "Componentes de software producidos en masa" (PDF) . Ingeniería de software: Informe de una conferencia patrocinada por el Comité Científico de la OTAN, Garmisch, Alemania, 7-11 de octubre de 1968. División de Asuntos Científicos, OTAN. pág. 79.
  4. ^ ab Endres, Albert; Rombach, H. Dieter (2003). Un manual de ingeniería de software y sistemas: observaciones empíricas, leyes y teorías . Pearson Education. pág. 327.
  5. ^ abcdef "Douglas McIlroy". HOPL: Enciclopedia histórica en línea de lenguajes de programación .
  6. ^ "M. Douglas (Malcolm) McIlroy". Proyecto de genealogía matemática . Consultado el 7 de febrero de 2020 .
  7. ^ ab Layzell, P. (1985). "La historia de los macroprocesadores en la extensibilidad de los lenguajes de programación". The Computer Journal . 28 (1): 29–33. doi : 10.1093/comjnl/28.1.29 .
  8. ^ David Walden (2014). "Macro recuerdos, 1964-2013" (PDF) . TUGboat . 35 (1).
  9. ^ Krishnamurthi, Shriram; Felleisen, Matthias; Duba, Bruce F. (2000). "De las macros a la programación generativa reutilizable" (PDF) . En Czarnecki, Krzysztof; Eisenecker, Ulrich W. (eds.). Ingeniería de software generativa y basada en componentes . Apuntes de clase en informática. Vol. 1799. Berlín, Heidelberg: Springer. págs. 105–120. doi :10.1007/3-540-40048-6_9. ISBN. 978-3-540-40048-6. S2CID  2576063. Archivado desde el original (PDF) el 25 de noviembre de 2004.
  10. ^ abcd Holbrook, Bernard D.; Brown, W. Stanley. «Informe técnico sobre ciencias de la computación n.º 99: una historia de la investigación en computación en los Laboratorios Bell (1937-1975)». Bell Labs . Archivado desde el original el 2 de septiembre de 2014. Consultado el 2 de febrero de 2020 .
  11. ^ "Macro SAP – Modificación del compilador de macros de SAP". HOPL: Enciclopedia histórica en línea de lenguajes de programación . Archivado desde el original el 13 de agosto de 2008.
  12. ^ "Bell SAP – SAP con macros condicionales y recursivas". HOPL: Enciclopedia histórica en línea de lenguajes de programación . Archivado desde el original el 21 de agosto de 2007.
  13. ^ Mooers, CN ; Deutsch, LP (1965). "TRAC, un lenguaje de manejo de texto". Actas ACM '65 Actas de la 20.ª conferencia nacional de 1965 . págs. 229–246. doi :10.1145/800197.806048. S2CID  40013081.
  14. ^ Cole, AJ (1981). Macro Processors (2.ª edición revisada). Archivo CUP. pág. 254.
  15. ^ ab Hall, AD, "El sistema ALTRAN para la manipulación racional de funciones: una encuesta". Communications of the ACM , 14(8):517–521 (agosto de 1971).
  16. ^ ab McIlroy, MD (1987). Un lector de Unix para investigación: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). Ciencias de la computación. AT&T Bell Laboratories. 139.
  17. ^ abc Ritchie, Dennis M. (1984). "La evolución del sistema de tiempo compartido Unix". AT&T Bell Laboratories Technical Journal . 63 (6 Parte 2): 1577–93. doi :10.1002/j.1538-7305.1984.tb00054.x. Archivado desde el original el 6 de mayo de 2010.En formato PDF
  18. ^ Johnson, Stephen C. (1975). Yacc: Yet Another Compiler-Compiler (Informe técnico). Murray Hill, Nueva Jersey: AT&T Bell Laboratories. 32 . Consultado el 31 de enero de 2020 .
  19. ^ Dzonsons, Kristaps; Schwarze, Ingo. "Historia de las páginas de manual de UNIX". Manuales prácticos de UNIX .
  20. ^ "La creación del sistema operativo UNIX". Bell Labs. Archivado desde el original el 14 de septiembre de 2004.
  21. ^ Griswold, Ralph (1978). "Una historia de los lenguajes de programación SNOBOL". Avisos SIGPLAN de la ACM . 13 (8). ACM: 275–308. doi :10.1145/960118.808393. ISSN  0362-1340. S2CID  5413577.
  22. ^ Lawson, Harold ; Bromberg, Howard (12 de junio de 1997). "Los primeros compiladores COBOL del mundo". Archivado desde el original el 4 de junio de 2004.
  23. ^ Michael S. Mahoney (18 de agosto de 1989). "Entrevista con MD McIlroy". Princeton.edu . Murray Hill.
  24. ^ RA Frieburghouse. "El compilador PL/1 de Multics". Multicians.org .
  25. ^ Tom Van Vleck (ed.). "La elección de PL/I". Multicians.org .
  26. ^ Stroustrup, Bjarne . "Una historia de C++: 1979-1991" (PDF) .
  27. ^ Jon L. Bentley; M. Douglas McIlroy (noviembre de 1993). "Ingeniería de una función de ordenación". Software: práctica y experiencia . 23 (11).
  28. ^ Narsingh Deo (1974). Teoría de grafos con aplicaciones a la ingeniería y la informática . Prentice-Hall. pág. 480.
  29. ^ "Miembros electos: lista de miembros actuales". aaas.org . Asociación Estadounidense para el Avance de la Ciencia.
  30. ^ "Premio Flame". USENIX. 6 de diciembre de 2011. Consultado el 5 de febrero de 2020 .
  31. ^ "Dr. M. Douglas McIlroy". nae.edu . Academia Nacional de Ingeniería . Consultado el 5 de febrero de 2020 .
  32. ^ Estas citas se escucharon durante una charla que dio en el DLSLUG el 3/12/09
  33. ^ "Código fuente de MacPaint y QuickDraw". Museo de Historia de la Computación . 18 de julio de 2010.
Laboratorios Bell
  • Página de inicio archivada en Bell Labs
  • La Historia del habla de Unix de McIlroy (audio) incluye muchas notas autobiográficas, junto con una discusión de muchos de los principales autores de Unix.
cs.dartmouth.edu
  • Página de inicio de Doug McIlroy
  • Biografía
  • Publicaciones de MD McIlroy
  • Datos sobre Doug McIlroy
Ascendencia de Linux
  • Ancestry of Linux - Cómo empezó la diversión Archivado el 3 de agosto de 2020 en Wayback Machine , presentación de noviembre de 2005: (presentación) Archivado el 2 de agosto de 2020 en Wayback Machine (audio) Archivado el 2 de agosto de 2020 en Wayback Machine (video)
código.google.com
  • Código fuente original de hechizos de Unix, escrito por Doug McIlroy
Obtenido de "https://es.wikipedia.org/w/index.php?title=Douglas_McIlroy&oldid=1254448470"