stringtranslate.com

Douglas McIlroy

Malcolm Douglas McIlroy (nacido en 1932) es un matemático , ingeniero y programador estadounidense . Desde 2019 es profesor adjunto de Ciencias de la Computación en Dartmouth College . McIlroy es mejor conocido por haber propuesto originalmente canalizaciones de Unix y haber desarrollado varias herramientas de Unix , como hechizo , diff , ordenar , unir , graficar , hablar y tr . [1] También fue uno de los investigadores pioneros de los macroprocesadores y la extensibilidad de los lenguajes 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 componenteizació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 de la Universidad de Cornell , [5] y un doctorado. en matemáticas aplicadas del MIT en 1959 por su tesis Sobre la solución de ecuaciones diferenciales de capas cónicas (asesor Eric Reissner ). [6] Enseñó en el MIT de 1954 a 1958. [5]

McIlroy se incorporó a los Laboratorios Bell en 1958; de 1965 a 1986 fue jefe de su Departamento de Investigación de Técnicas Informáticas (cuna del sistema operativo Unix) y posteriormente fue Miembro Distinguido del Personal Técnico. [5]

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

En 1997, McIlroy se retiró de Bell Labs y asumió un puesto como profesor adjunto en el Departamento de Ciencias de la Computación de 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]

Investigaciones y contribuciones

Macroprocesadores

McIlroy es considerado un pionero de los macroprocesadores . [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 la extensión de cualquier lenguaje de programación (incluido el de alto nivel ) a través de macroprocesadores. [7] [10] Estas contribuciones iniciaron la tradición del macrolenguaje 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 macroprocesador M6 en FORTRAN IV , [14] que se usó en ALTRAN [15] y luego fue portado e incluido en las primeras versiones de Unix . [dieciséis]

Contribuciones a Unix

A lo largo de las décadas de 1960 y 1970, McIlroy contribuyó con programas para Multics (como RUNOFF [17] ) y sistemas operativos Unix (como diff , echo , tr , join y look [16] ), cuyas versiones están muy extendidas hasta el día de hoy gracias a la adopción de el estándar POSIX y sistemas operativos tipo Unix . Introdujo la idea de los pipelines Unix. [17] También implementó el compilador-compilador TMG en el ensamblador 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 [17] y en el de Stephen Johnson. Analizador-generador Yacc . [18]

McIlroy también tomó el relevo 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 de la Versión 7 de Unix. [19] Según Sandy Fraser : "El hecho de que hubiera un manual, que él [McIlroy] insistiera en un alto nivel para el manual, significó que insistió en un alto nivel para cada uno de los programas que estaban documentados". [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 de 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 ante la 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, implementaron la versión original del lenguaje de programación ALTRAN para computadoras IBM 7094 . [15] [10]

McIlroy también tuvo 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ó el premio USENIX Lifetime Achievement Award ("The Flame") [30] y el 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 se considera que el significado del código negativo es 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 mejora).

Ver también

Literatura

Referencias

  1. ^ ab "Premio STUG". USENIX. 6 de diciembre de 2011 . Consultado el 5 de febrero de 2020 .
  2. ^ Bown, Rodney L., ed. (2 a 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 a 11 de octubre de 1968 . División de Asuntos Científicos, OTAN. pag. 79.
  4. ^ ab Endres, Albert; Rombach, H. Dieter (2003). Un manual de ingeniería de sistemas y software: observaciones empíricas, leyes y teorías . Educación Pearson. pag. 327.
  5. ^ abcdef "Douglas McIlroy". HOPL: Enciclopedia histórica en línea de lenguajes de programación .
  6. ^ "M. Douglas (Malcolm) McIlroy". Proyecto Genealogía Matemática . Consultado el 7 de febrero de 2020 .
  7. ^ ab Layzell, P. (1985). "La historia de los macroprocesadores en la extensibilidad del lenguaje de programación". La revista informática . 28 (1): 29–33. doi : 10.1093/comjnl/28.1.29 .
  8. ^ David Walden (2014). "Macro memorias, 1964-2013" (PDF) . Remolcador . 35 (1).
  9. ^ Krishnamurthi, Shriram; Felleisen, Matías; Duba, Bruce F. (2000). Czarnecki, Krzysztof; Eisenecker, Ulrich W. (eds.). "De las macros a la programación generativa reutilizable" (PDF) . Ingeniería de Software Generativa y Basada en Componentes . Apuntes de conferencias sobre informática. Berlín, Heidelberg: Springer. 1799 : 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.; Marrón, W. Stanley. "Informe técnico n.º 99 de ciencias de la computación: una historia de la investigación en computación en los laboratorios Bell (1937-1975)". Laboratorios Bell . Archivado desde el original el 2 de septiembre de 2014 . Consultado el 2 de febrero de 2020 .
  11. ^ "Macro SAP: modificación del macrocompilador 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 ; Alemán, LP (1965). "TRAC, un lenguaje de manejo de texto". Actas ACM '65 Actas de la vigésima conferencia nacional de 1965 . págs. 229–246. doi :10.1145/800197.806048. S2CID  40013081.
  14. ^ Cole, AJ (1981). Macroprocesadores (segunda edición revisada). Archivo COPA. pag. 254.
  15. ^ ab Hall, AD, "El sistema ALTRAN para la manipulación de funciones racionales: una encuesta". Comunicaciones de la ACM , 14(8):517–521 (agosto de 1971).
  16. ^ ab McIlroy, MD (1987). Un lector de Research Unix: extractos comentados del Manual del programador, 1971-1986 (PDF) (Informe técnico). La ciencia de Computación. Laboratorios Bell de AT&T. 139.
  17. ^ a b C Ritchie, Dennis M. (1984). "La evolución del sistema de tiempo compartido Unix". Revista técnica de AT&T Bell Laboratories . 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.Como PDF
  18. ^ Johnson, Stephen C. (1975). Yacc: Otro compilador-compilador más (Informe técnico). Murray Hill, Nueva Jersey: Laboratorios AT&T Bell. 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". Laboratorios Bell. Archivado desde el original el 14 de septiembre de 2004.
  21. ^ Griswold, Ralph (1978). "Una historia de los lenguajes de programación SNOBOL". Avisos ACM SIGPLAN . ACM. 13 (8): 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 el médico McIlroy". Princeton.edu . Murray Hill.
  24. ^ Friburgo de Brisgovia. "El compilador Multics PL/1". 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 clasificació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. pag. 480.
  29. ^ "Becarios electos: listado de becarios que son miembros actuales". aaas.org . Asociación Estadounidense para el Avance de la Ciencia.
  30. ^ "Premio Llama". 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 al DLSLUG 3/12/09
  33. ^ "Código fuente de MacPaint y QuickDraw". Museo de Historia de la Computación . 18 de julio de 2010.

enlaces externos

Laboratorios Bell
cs.dartmouth.edu
Ascendencia de Linux
código.google.com