Malcolm Douglas McIlroy, född 1932, är en amerikansk matematiker, ingenjör och programmerare. Sedan 1997 är han adjungerad professor i datavetenskap vid Dartmouth College. Han är mest känd för att ursprungligen ha utvecklat Unix pipelines genomförande och flera unix-verktyg som spell, diff, sort, join, graph, speak och tr.[1] Han var också en av de banbrytande forskarna inom makroprocessorer och utbyggbarhet för programmeringsspråk. Han deltog i utformningen av flera inflytelserika programmeringsspråk, särskilt PL/1, SNOBOL, ALTRAN, TMG och C++.

Douglas McIlroy
Född24 april 1932 (92 år)
Mercurio, Japón, Spanien
Medborgare iUSA
Utbildad vidCornell University
Massachusetts Institute of Technology
Cornell University College of Engineering
SysselsättningMatematiker, universitetslärare, programmerare, ingenjör, datavetare
ArbetsgivareDartmouth College
Noterbara verkDiff och tr
Webbplatscs.dartmouth.edu/~doug/
Redigera Wikidata

Hans framstående arbete på mjukvarukomponentisering[2] och kodåteranvändning[3][4] gör honom till pionjär inom komponentbaserad mjukvaruutveckling och mjukvaruproduktlinjeteknik.

Biografi

redigera

McIlroy tog sin kandidatexamen i teknisk fysik från Cornell University[5] och doktorsexamen i tillämpad matematik vid MIT 1959 på sin avhandling On the Solution of the Differential Equations of Conical Shells (handledare Eric Reissner).[6] Han undervisade vid MIT från 1954 till 1958.[5]

McIlroy började arbeta i Bell Laboratories 1958 och var från 1965 till 1986 chef för dess avdelning för datorteknikforskning (tillkomstplatsen för Unix-operativsystemet), och var därefter Distinguished Member of Technical Staff.[5]

År 1997 gick McIlroy i pension från Bell Labs och började som adjungerad professor vid Dartmouth College Computer Science Department.[5]

Vetenskapligt arbete

redigera

Makroprocessorer

redigera

McIlroy anses vara en pionjär inom makroprocessorer.[7][8][9] År 1959 introducerade han, tillsammans med Douglas E. Eastwood från Bell Labs, villkorliga och rekursiva makron i populära SAP assembler,[10] och skapade vad som är känt som Macro SAP.[11] Hans rapport från 1960 var också avgörande när det gällde att utöka alla (inklusive högnivå) programmeringsspråk genom makroprocessorer.[7][10] Dessa bidrag startade makrospråkstraditionen på Bell Labs ("allt från L6 och AMBIT till C").[12] McIlroys makrobearbetningsidéer var också den främsta inspirationen för TRAC makroprocessor.[13]

Han var också medförfattare till M6 makroprocessor i Fortran IV,[14] som användes i ALTRAN [15] och senare fördes över till och inkluderades i tidiga versioner av Unix.[16]

Bidrag till Unix

redigera

Under hela 1960- och 1970-talen bidrog McIlroy med program för Multics (som RUNOFF [17]) och Unix - operativsystem (som diff, echo, tr, join and look[16]), versioner av vilka är utbredda än idag (2021) genom adoption av POSIX - standarden och Unix-liknande operativsystem. Han introducerade idén med Unix-pipelines[17] och implementerade också TMG kompilator-kompilator i PDP-7 och PDP-11 assembly, som blev det första högnivåprogrammeringsspråket som kördes på Unix, vilket ledde till utveckling av och inflytande på Ken Thompsons B-programmeringsspråk[17] och Stephen Johnsons Yacc-parsergenerator.[18]

Datorspråkdesign

redigera

McIlroy påverkade utformningen och implementeringen av programmeringsspråket SNOBOL. Hans strängmanipuleringsmakron användes flitigt i den initiala SNOBOL-implementeringen 1962, och har en framträdande plats i efterföljande arbete, vilket så småningom ledde till dess maskinoberoende implementeringsspråk SIL. Tabelltypen (associativ array) lades 1969 till SNOBOL4 på McIlroys inrådan.[19]

På 1960-talet deltog han i utformningen av PL/1 programmeringsspråk.[4][20] Han var medlem i IBM – SHARE- kommittén som konstruerade språket[21] och skrev tillsammans med Robert Morris kompilatorn Early PL/1 (EPL) i TMG för Multics- projektet.[22][23]

Omkring år 1965 implementerade McIlroy tillsammans med W. Stanley Brown den ursprungliga versionen av ALTRAN-programmeringsspråket för IBM 7094-datorer.[15][10] Han har också haft ett betydande inflytande på utformningen av programmeringsspråket C++.[24]

Bibliografi i urval

redigera
 
McIlroy (vänster) med Dennis Ritchie vid Japan Prize Foundation 2011.

Utmärkelser och hedersbetygelser

redigera

År 1995 valdes Mc Ilroy till Fellow i American Association for the Advancement of Science.[25] och 2004 vann han både USENIX Lifetime Achievement Award ("The Flame")[26] och dess Software Tools User Group (STUG) pris.[1] År 2006 valdes han som medlem av National Academy of Engineering.[27]

Referenser

redigera
Den här artikeln är helt eller delvis baserad på material från engelskspråkiga Wikipedia, Douglas McIlroy, 16 februari 2022.
  1. ^ [a b] ”STUG Award”. STUG Award. USENIX. https://www.usenix.org/about/stug. 
  2. ^ ”First International Conference on Ada (R) Programming Language Applications for the NASA Space Station, volume 2 - NASA-TM-101202”. First International Conference on Ada (R) Programming Language Applications for the NASA Space Station, volume 2 - NASA-TM-101202. 2–5 June 1986. https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19890006955.pdf. 
  3. ^ McIlroy, Malcolm Douglas (January 1969). ”Mass produced software components”. Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 Oct. 1968. Scientific Affairs Division, NATO. 79. http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF. 
  4. ^ [a b] Endres, Albert; Rombach, H. Dieter (2003). A Handbook of Software and Systems Engineering: Empirical Observations, Laws, and Theories. Pearson Education. Sid. 327. 
  5. ^ [a b c d] ”Douglas McIlroy”. HOPL: Online Historical Encyclopaedia of Programming Languages. http://hopl.info/showperson.prx?PeopleID=593.  Arkiverad 3 augusti 2020 hämtat från the Wayback Machine.
  6. ^ ”M. Douglas (Malcolm) McIlroy”. Mathematics Genealogy Project. https://www.genealogy.math.ndsu.nodak.edu/id.php?id=63529. 
  7. ^ [a b] Layzell, P. (1985). ”The History of Macro Processors in Programming Language Extensibility”. The Computer Journal 28 (1): sid. 29–33. doi:10.1093/comjnl/28.1.29. 
  8. ^ David Walden (2014). ”Macro memories, 1964–2013”. TUGboat 35 (1). https://tug.org/TUGboat/tb35-1/tb109walden.pdf. 
  9. ^ Krishnamurthi, Shriram; Felleisen, Matthias; Duba, Bruce F. (2000). ”From Macros to Reusable Generative Programming”. Generative and Component-Based Software Engineering. Lecture Notes in Computer Science (Berlin, Heidelberg: Springer) 1799: sid. 105–120. doi:10.1007/3-540-40048-6_9. ISBN 978-3-540-40048-6. http://www.netobjectdays.org/pdf/99/stja/krishna.pdf. 
  10. ^ [a b c] Holbrook, Bernard D.; Brown, W. Stanley. ”Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975)”. Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975). Bell Labs. http://cm.bell-labs.com/cm/cs/cstr/99.html. 
  11. ^ ”Macro SAP – Macro compiler modification of SAP”. HOPL: Online Historical Encyclopaedia of Programming Languages. http://hopl.murdoch.edu.au/showlanguage.prx?exp=91.  Arkiverad 13 augusti 2008 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 13 augusti 2008. https://web.archive.org/web/20080813125120/http://hopl.murdoch.edu.au/showlanguage.prx?exp=91. Läst 5 juli 2022. 
  12. ^ ”Bell SAP – SAP with conditional and recursive macros”. HOPL: Online Historical Encyclopaedia of Programming Languages. http://hopl.murdoch.edu.au/showlanguage.prx?exp=5635.  Arkiverad 21 augusti 2007 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 21 augusti 2007. https://web.archive.org/web/20070821092817/http://hopl.murdoch.edu.au/showlanguage.prx?exp=5635. Läst 5 juli 2022. 
  13. ^ Mooers, C.N.; Deutsch, L.P. (1965). ”TRAC, A Text-Handling Language”. Proceeding ACM '65 Proceedings of the 1965 20th national conference. Sid. 229–246. doi:10.1145/800197.806048. 
  14. ^ Cole, A. J. (1981). Macro Processors (2nd, revised). CUP Archive. Sid. 254. 
  15. ^ [a b] Hall, A.D., "The ALTRAN System for Rational Function Manipulation — A Survey". Communications of the ACM, 14(8):517–521 (August 1971).
  16. ^ [a b] McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). Computing Science. AT&T Bell Laboratories. 139.
  17. ^ [a b c] Ritchie, Dennis M. (1984). ”The Evolution of the Unix Time-sharing System”. AT&T Bell Laboratories Technical Journal 63 (6 Part 2): sid. 1577–93. doi:10.1002/j.1538-7305.1984.tb00054.x. http://cm.bell-labs.com/cm/cs/who/dmr/hist.html.  Arkiverad 8 april 2015 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 8 april 2015. https://web.archive.org/web/20150408054606/http://cm.bell-labs.com/cm/cs/who/dmr/hist.html. Läst 5 juli 2022.  As PDF
  18. ^ Johnson, Stephen C. (1975). Yacc: Yet Another Compiler-Compiler (Technical report). Murray Hill, New Jersey: AT&T Bell Laboratories. 32. Retrieved 31 January 2020.
  19. ^ Griswold, Ralph (1978). ”A history of the SNOBOL programming languages”. ACM SIGPLAN Notices (ACM) 13 (8): sid. 275–308. doi:10.1145/960118.808393. ISSN 0362-1340. 
  20. ^ Lawson, Harold; Bromberg, Howard (June 12, 1997). ”The World's First COBOL Compilers”. The World's First COBOL Compilers. http://www.computerhistory.org/events/lectures/cobol_06121997/.  Arkiverad 4 juni 2004 hämtat från the Wayback Machine. ”Arkiverade kopian”. Arkiverad från originalet den 4 juni 2004. https://web.archive.org/web/20040604085438/http://www.computerhistory.org/events/lectures/cobol_06121997/. Läst 5 juli 2022. 
  21. ^ Michael S. Mahoney (18 August 1989). ”Interview with M.D. McIlroy”. Princeton.edu. Murray Hill. https://www.princeton.edu/~hos/mike/transcripts/mcilroy.htm. 
  22. ^ R. A. Frieburghouse. ”The Multics PL/1 Compiler”. Multicians.org. http://www.multicians.org/pl1-raf.html. 
  23. ^ ”The Choice of PL/I”. Multicians.org. https://multicians.org/pl1.html#EPL. 
  24. ^ Stroustrup, Bjarne. ”A History of C++: 1979−1991”. A History of C++: 1979−1991. http://www.stroustrup.com/hopl2.pdf. 
  25. ^ ”Elected Fellows: Listing of Fellows who are current members”. aaas.org. American Association for the Advancement of Science. https://www.aaas.org/fellows/listing. 
  26. ^ ”Flame Award”. Flame Award. USENIX. https://www.usenix.org/about/awards/flame. 
  27. ^ ”Dr. M. Douglas McIlroy”. nae.edu. National Academy of Engineering. https://www.nae.edu/28908/Dr-M-Douglas-McIlroy. 

Externa länkar

redigera