Douglas McIlroy: Difference between revisions
add /bin/echo to the list of his inventions (see https://www.youtube.com/watch?v=Xe5ffO6Ouwg) |
|||
(13 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|American mathematician and computer scientist}} |
|||
{{Infobox scientist |
{{Infobox scientist |
||
| honorific_prefix = |
| honorific_prefix = |
||
Line 9: | Line 10: | ||
| alt = |
| alt = |
||
| caption = McIlroy at the Japan Prize Foundation in 2011 |
| caption = McIlroy at the Japan Prize Foundation in 2011 |
||
| birth_date = {{Birth |
| birth_date = {{Birth date and age|1932|04|24}} <!--{{birth date |YYYY|MM|DD}}--> |
||
| birth_place = |
| birth_place = Newburgh, New York |
||
| other_names = |
| other_names = |
||
| citizenship = |
| citizenship = |
||
Line 30: | Line 31: | ||
| website = {{URL|http://www.cs.dartmouth.edu/~doug/}} |
| website = {{URL|http://www.cs.dartmouth.edu/~doug/}} |
||
}} |
}} |
||
'''Malcolm Douglas McIlroy''' (born 1932) is |
'''Malcolm Douglas McIlroy''' (born 1932) is an American [[mathematician]], [[engineer]], and [[programmer]]. As of 2019 he is an [[Adjunct Professor]] of [[Computer Science]] at [[Dartmouth College]]. |
||
McIlroy is best known for having originally proposed [[pipeline (Unix)|Unix pipelines]] and developed several [[Unix]] tools, such as [[spell (Unix)|spell]], [[diff]], [[sort (Unix)|sort]], [[join (Unix utility)|join]], [[graph (Unix)|graph]], [[speak (Unix)|speak]], and [[tr (Unix)|tr]].<ref name="stug"/> He was also one of the pioneering researchers of [[general-purpose macro processor|macro processor]]s and programming language extensibility. He participated in the design of multiple influential programming languages, particularly [[PL/I]], [[SNOBOL]], [[ALTRAN]], [[TMG (language)|TMG]] and [[C++]]. |
McIlroy is best known for having originally proposed [[pipeline (Unix)|Unix pipelines]] and developed several [[Unix]] tools, such as echo, [[spell (Unix)|spell]], [[diff]], [[sort (Unix)|sort]], [[join (Unix utility)|join]], [[graph (Unix)|graph]], [[speak (Unix)|speak]], and [[tr (Unix)|tr]].<ref name="stug"/> He was also one of the pioneering researchers of [[general-purpose macro processor|macro processor]]s and programming language extensibility. He participated in the design of multiple influential programming languages, particularly [[PL/I]], [[SNOBOL]], [[ALTRAN]], [[TMG (language)|TMG]] and [[C++]]. |
||
His seminal work on software componentization<ref>{{cite web |url=https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19890006955.pdf |editor = Bown, Rodney L. |title = First International Conference on Ada (R) Programming Language Applications for the NASA Space Station, volume 2 - NASA-TM-101202 |date= 2–5 June 1986 }}</ref> and [[code reuse]]<ref>{{cite web |url=http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF |title=Mass produced software components |first=Malcolm Douglas |last=McIlroy |work=Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 Oct. 1968 |publisher=Scientific Affairs Division, NATO |date=January 1969 |page=79}}</ref><ref name="End03"/> makes him a pioneer of [[component-based software engineering]] and [[software product line engineering]]. |
His seminal work on software componentization<ref>{{cite web |url=https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19890006955.pdf |editor = Bown, Rodney L. |title = First International Conference on Ada (R) Programming Language Applications for the NASA Space Station, volume 2 - NASA-TM-101202 |date= 2–5 June 1986 }}</ref> and [[code reuse]]<ref>{{cite web |url=http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF |title=Mass produced software components |first=Malcolm Douglas |last=McIlroy |work=Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 Oct. 1968 |publisher=Scientific Affairs Division, NATO |date=January 1969 |page=79}}</ref><ref name="End03"/> makes him a pioneer of [[component-based software engineering]] and [[software product line engineering]]. |
||
Line 43: | Line 44: | ||
From 1967 to 1968, McIlroy also served as a visiting lecturer at [[University of Oxford|Oxford University]].<ref name="hoplBio"/> |
From 1967 to 1968, McIlroy also served as a visiting lecturer at [[University of Oxford|Oxford University]].<ref name="hoplBio"/> |
||
In 1997, McIlroy retired from Bell Labs, and took a position as an |
In 1997, McIlroy retired from Bell Labs, and took a position as an adjunct professor in the [[Dartmouth College]] Computer Science Department.<ref name="hoplBio"/> |
||
He has previously served the [[Association for Computing Machinery]] as national lecturer, [[Turing Award]] chairman, member of the publications planning committee, and associate editor for the ''[[Communications of the ACM]]'', the ''[[Journal of the ACM]]'', and ''[[ACM Transactions on Programming Languages and Systems]]''. He also served on the executive committee of [[CSNET]].<ref name="hoplBio"/> |
He has previously served the [[Association for Computing Machinery]] as national lecturer, [[Turing Award]] chairman, member of the publications planning committee, and associate editor for the ''[[Communications of the ACM]]'', the ''[[Journal of the ACM]]'', and ''[[ACM Transactions on Programming Languages and Systems]]''. He also served on the executive committee of [[CSNET]].<ref name="hoplBio"/> |
||
Line 49: | Line 50: | ||
== Research and contributions == |
== Research and contributions == |
||
=== Macro processors === |
=== Macro processors === |
||
McIlroy is considered to be a pioneer of [[macro processor]]s.<ref name="Lay85"/><ref>{{cite journal |author=David Walden |url=https://tug.org/TUGboat/tb35-1/tb109walden.pdf |title=Macro memories, 1964–2013 |year=2014 |journal=[[TUGboat]] |volume=35 |number=1 }}</ref><ref>{{cite |
McIlroy is considered to be a pioneer of [[macro processor]]s.<ref name="Lay85"/><ref>{{cite journal |author=David Walden |url=https://tug.org/TUGboat/tb35-1/tb109walden.pdf |title=Macro memories, 1964–2013 |year=2014 |journal=[[TUGboat]] |volume=35 |number=1 }}</ref><ref>{{cite book |last1=Krishnamurthi |first1=Shriram |last2=Felleisen |first2=Matthias |last3=Duba |first3=Bruce F. |editor1=Czarnecki, Krzysztof |editor2=Eisenecker, Ulrich W. |chapter=From Macros to Reusable Generative Programming |title=Generative and Component-Based Software Engineering |series=Lecture Notes in Computer Science |year=2000 |volume=1799 |publisher=Springer |location=Berlin, Heidelberg |pages=105–120 |doi=10.1007/3-540-40048-6_9 |isbn=978-3-540-40048-6 |s2cid=2576063 |chapter-url=http://www.netobjectdays.org/pdf/99/stja/krishna.pdf |archive-url=https://web.archive.org/web/20041125195330/http://www.netobjectdays.org/pdf/99/stja/krishna.pdf |archive-date=November 25, 2004 }}</ref> In 1959, together with Douglas E. Eastwood of Bell Labs, he introduced conditional and recursive macros into popular [[Symbolic Assembly Program|SAP]] assembler,<ref name="CSTR99">{{cite web |url=http://cm.bell-labs.com/cm/cs/cstr/99.html |archive-url=https://archive.today/20140902215751/http://cm.bell-labs.com/cm/cs/cstr/99.html |url-status=dead |archive-date=September 2, 2014 |title=Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975) |first1=Bernard D. |last1=Holbrook |first2=W. Stanley |last2=Brown |publisher=[[Bell Labs]] |access-date=February 2, 2020}}</ref> creating what is known as Macro SAP.<ref name="MSAP">{{cite encyclopedia |title=Macro SAP – Macro compiler modification of SAP |encyclopedia=HOPL: Online Historical Encyclopaedia of Programming Languages |url=http://hopl.murdoch.edu.au/showlanguage.prx?exp=91 |archive-url=https://web.archive.org/web/20080813125120/http://hopl.murdoch.edu.au/showlanguage.prx?exp=91 |archive-date=August 13, 2008}}</ref> His 1960 paper was also seminal in the area of extending any (including [[high-level programming language|high-level]]) programming languages through macro processors.<ref name="Lay85">{{cite journal |last=Layzell |first=P. |author-link=Paul Layzell |year=1985 |title=The History of Macro Processors in Programming Language Extensibility |journal=The Computer Journal |volume=28 |issue=1 |pages=29–33|doi=10.1093/comjnl/28.1.29 |doi-access=free }}</ref><ref name="CSTR99"/> These contributions started the macro-language tradition at Bell Labs ("everything from L6 and AMBIT to C").<ref name="BellSAP">{{cite encyclopedia |title=Bell SAP – SAP with conditional and recursive macros |encyclopedia=HOPL: Online Historical Encyclopaedia of Programming Languages |url=http://hopl.murdoch.edu.au/showlanguage.prx?exp=5635 |archive-url=https://web.archive.org/web/20070821092817/http://hopl.murdoch.edu.au/showlanguage.prx?exp=5635 |archive-date=August 21, 2007}}</ref> McIlroy's macro processing ideas were also the main inspiration for [[TRAC (programming language)|TRAC]] macro processor.<ref name="trac_paper">{{cite book |first1=C.N. |last1=Mooers |author-link=Calvin Mooers |first2=L.P. |last2=Deutsch |author-link2=L. Peter Deutsch |chapter=TRAC, A Text-Handling Language |title=Proceeding ACM '65 Proceedings of the 1965 20th national conference |pages=229–246 |year=1965 |doi=10.1145/800197.806048 |s2cid=40013081 }}</ref> |
||
He also coauthored M6 macro processor in [[FORTRAN IV]],<ref>{{cite book |last=Cole |first=A. J. |author-link=Jack Cole (scientist) |title=Macro Processors |edition=2nd, revised |year=1981 |publisher=CUP Archive |pages=254}}</ref> which was used in [[ALTRAN]]<ref name="hall71"/> and later was ported to and included into [[Research Unix|early versions of Unix]].<ref name="reader"/> |
He also coauthored M6 macro processor in [[FORTRAN IV]],<ref>{{cite book |last=Cole |first=A. J. |author-link=Jack Cole (scientist) |title=Macro Processors |edition=2nd, revised |year=1981 |publisher=CUP Archive |pages=254}}</ref> which was used in [[ALTRAN]]<ref name="hall71"/> and later was ported to and included into [[Research Unix|early versions of Unix]].<ref name="reader"/> |
||
=== Contributions to Unix === |
=== Contributions to Unix === |
||
Throughout the 1960s and 1970s McIlroy contributed programs for [[Multics]] (such as [[RUNOFF]]<ref name="Evolution">{{cite journal |first=Dennis M. |last=Ritchie |title=The Evolution of the Unix Time-sharing System |url=http://cm.bell-labs.com/cm/cs/who/dmr/hist.html |archive-url=http://webarchive.loc.gov/all/20100506231949/http://cm.bell-labs.com/cm/cs/who/dmr/hist.html |archive-date=6 May 2010 |journal=AT&T Bell Laboratories Technical Journal |volume=63 |number=6 Part 2 |year=1984 |pages=1577–93|doi=10.1002/j.1538-7305.1984.tb00054.x }} As [http://www.read.seas.harvard.edu/~kohler/class/aosref/ritchie84evolution.pdf PDF]</ref>) and [[Unix]] operating systems (such as ''[[diff]]'', [[echo (command)|''echo'']], [[tr (Unix)|''tr'']], [[join (Unix)|''join'']] and ''look''<ref name="reader">{{cite |
Throughout the 1960s and 1970s McIlroy contributed programs for [[Multics]] (such as [[RUNOFF]]<ref name="Evolution">{{cite journal |first=Dennis M. |last=Ritchie |title=The Evolution of the Unix Time-sharing System |url=http://cm.bell-labs.com/cm/cs/who/dmr/hist.html |archive-url=http://webarchive.loc.gov/all/20100506231949/http://cm.bell-labs.com/cm/cs/who/dmr/hist.html |archive-date=6 May 2010 |journal=AT&T Bell Laboratories Technical Journal |volume=63 |number=6 Part 2 |year=1984 |pages=1577–93|doi=10.1002/j.1538-7305.1984.tb00054.x }} As [http://www.read.seas.harvard.edu/~kohler/class/aosref/ritchie84evolution.pdf PDF]</ref>) and [[Unix]] operating systems (such as ''[[diff]]'', [[echo (command)|''echo'']], [[tr (Unix)|''tr'']], [[join (Unix)|''join'']] and ''look''<ref name="reader">{{cite tech report |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=http://www.cs.dartmouth.edu/~doug/reader.pdf |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=Computing Science |number=139 |institution=AT&T Bell Laboratories |df=dmy-all }}</ref>), versions of which are widespread to this day through adoption of the [[POSIX]] standard and [[Unix-like]] operating systems. He introduced the idea of Unix pipelines.<ref name="Evolution"/> He also implemented [[TMG (language)|TMG]] compiler-compiler in [[PDP-7]] and [[PDP-11]] assembly, which became the first high-level programming language running on Unix, prompting development and influencing [[Ken Thompson]]'s [[B (programming language)|B programming language]]<ref name="Evolution"/> and Stephen Johnson's [[Yacc]] parser-generator.<ref name="yacc">{{cite tech report |last=Johnson |first=Stephen C. |author-link=Stephen C. Johnson |year=1975 |title=Yacc: Yet Another Compiler-Compiler |number=32 |publisher=AT&T Bell Laboratories |location=Murray Hill, New Jersey |url=http://dinosaur.compilertools.net/yacc/ |access-date=31 January 2020}}</ref> |
||
McIlroy also took over from [[Dennis Ritchie]] compilation of the [[man page|Unix manual]] "as a labor of love". Particularly, he edited volume 1 of the manual pages for Version 7 Unix.<ref>{{cite web|url=https://manpages.bsd.lv/history.html |title=History of UNIX Manpages |first1= Kristaps |last1=Dzonsons |first2=Ingo |last2=Schwarze |work=Practical UNIX Manuals}}</ref> According to [[Sandy Fraser]]: "The fact that there was a manual, that he [McIlroy] insisted on a high standard for the manual, meant that he insisted on a high standard for every one of the programs that was documented".<ref name="crea">{{cite web |title=The Creation of the UNIX Operating System |url=http://csdev.cas.upm.edu.ph/~pfalcone/compsci/unix/unix-history1.html |publisher=Bell Labs |archive-url=https://web.archive.org/web/20040914025332/http://csdev.cas.upm.edu.ph/~pfalcone/compsci/unix/unix-history1.html |archive-date=September 14, 2004 }}</ref> |
McIlroy also took over from [[Dennis Ritchie]] compilation of the [[man page|Unix manual]] "as a labor of love". Particularly, he edited volume 1 of the manual pages for Version 7 Unix.<ref>{{cite web|url=https://manpages.bsd.lv/history.html |title=History of UNIX Manpages |first1= Kristaps |last1=Dzonsons |first2=Ingo |last2=Schwarze |work=Practical UNIX Manuals}}</ref> According to [[Sandy Fraser]]: "The fact that there was a manual, that he [McIlroy] insisted on a high standard for the manual, meant that he insisted on a high standard for every one of the programs that was documented".<ref name="crea">{{cite web |title=The Creation of the UNIX Operating System |url=http://csdev.cas.upm.edu.ph/~pfalcone/compsci/unix/unix-history1.html |publisher=Bell Labs |archive-url=https://web.archive.org/web/20040914025332/http://csdev.cas.upm.edu.ph/~pfalcone/compsci/unix/unix-history1.html |archive-date=September 14, 2004 }}</ref> |
||
Line 73: | Line 74: | ||
==Awards and recognition== |
==Awards and recognition== |
||
In 1995, he was elected as a Fellow of the [[American Association for the Advancement of Science]].<ref>{{cite web |url=https://www.aaas.org/fellows/listing |title=Elected Fellows: Listing of Fellows who are current members |publisher=American Association for the Advancement of Science |website=aaas.org }}</ref> In 2004, he won both the [[USENIX]] Lifetime Achievement Award ("The Flame")<ref>{{cite web|url=https://www.usenix.org/about/awards/flame |title=Flame Award |publisher=USENIX |access-date=February 5, 2020 }}</ref> and its Software Tools User Group (STUG) award.<ref name="stug">{{cite web|url=https://www.usenix.org/about/stug |title=STUG Award |publisher=USENIX |access-date=February 5, 2020 }}</ref> In 2006, he was elected as a member of the [[National Academy of Engineering]].<ref>{{cite web|url=https://www.nae.edu/28908/Dr-M-Douglas-McIlroy |title=Dr. M. Douglas McIlroy |publisher=National Academy of Engineering |website=nae.edu |access-date=February 5, 2020 }}</ref> |
In 1995, he was elected as a Fellow of the [[American Association for the Advancement of Science]].<ref>{{cite web |url=https://www.aaas.org/fellows/listing |title=Elected Fellows: Listing of Fellows who are current members |publisher=American Association for the Advancement of Science |website=aaas.org }}</ref> In 2004, he won both the [[USENIX]] Lifetime Achievement Award ("The Flame")<ref>{{cite web|url=https://www.usenix.org/about/awards/flame |title=Flame Award |date=6 December 2011 |publisher=USENIX |access-date=February 5, 2020 }}</ref> and its Software Tools User Group (STUG) award.<ref name="stug">{{cite web|url=https://www.usenix.org/about/stug |title=STUG Award |date=6 December 2011 |publisher=USENIX |access-date=February 5, 2020 }}</ref> In 2006, he was elected as a member of the [[National Academy of Engineering]].<ref>{{cite web|url=https://www.nae.edu/28908/Dr-M-Douglas-McIlroy |title=Dr. M. Douglas McIlroy |publisher=National Academy of Engineering |website=nae.edu |access-date=February 5, 2020 }}</ref> |
||
==Views on computing== |
==Views on computing== |
||
McIlroy is attributed the quote "The real hero of programming is the one who writes negative code,"<ref name="DLSLUG">These quotes were heard during a talk he gave to the DLSLUG 12/3/09</ref> where the meaning of ''negative code'' is taken to be similar to the famous [[Apple Inc.|Apple]] developer, [[Bill Atkinson]], team anecdote<ref>{{cite web |url=http://www.computerhistory.org/highlights/macpaint/|title=MacPaint and QuickDraw Source Code <!--maybe title changed?: — How do you measure programmer productivity? -->|work=Computer History Museum}}</ref> (i.e., when a change in a program [[source code|source]] makes the number of [[source lines of code|lines of code]] decrease ('negative' code), while its overall quality, readability or speed improves). |
McIlroy is attributed the quote "The real hero of programming is the one who writes negative code,"<ref name="DLSLUG">These quotes were heard during a talk he gave to the DLSLUG 12/3/09</ref> where the meaning of ''negative code'' is taken to be similar to the famous [[Apple Inc.|Apple]] developer, [[Bill Atkinson]], team anecdote<ref>{{cite web |url=http://www.computerhistory.org/highlights/macpaint/|title=MacPaint and QuickDraw Source Code <!--maybe title changed?: — How do you measure programmer productivity? -->|work=Computer History Museum|date=18 July 2010 }}</ref> (i.e., when a change in a program [[source code|source]] makes the number of [[source lines of code|lines of code]] decrease ('negative' code), while its overall quality, readability or speed improves). |
||
==See also== |
==See also== |
||
Line 92: | Line 93: | ||
==External links== |
==External links== |
||
{{Wikiquote|Doug McIlroy}} |
{{Wikiquote|Doug McIlroy}} |
||
;Bell Labs |
|||
* |
* [https://web.archive.org/web/20140930052048/http://cm.bell-labs.com/who/doug/index.html archived homepage] at Bell Labs |
||
⚫ | |||
;cs.dartmouth.edu |
|||
* [http://www.cs.dartmouth.edu/~doug/ Doug McIlroy's homepage] |
|||
* [http://www.cs.dartmouth.edu/~doug/biography Biography] |
* [http://www.cs.dartmouth.edu/~doug/biography Biography] |
||
⚫ | |||
* [https://web.archive.org/web/20110606075323/http://www.cs.dartmouth.edu/~sinclair/doug/?doug=mcilroy Doug McIlroy Facts] |
* [https://web.archive.org/web/20110606075323/http://www.cs.dartmouth.edu/~sinclair/doug/?doug=mcilroy Doug McIlroy Facts] |
||
;Ancestry of Linux |
|||
⚫ | |||
* [http://www.dlslug.org/past_meetings.html Ancestry of Linux - How the Fun Began], presentation November 2005: [http://www.dlslug.org/downloads/meetings/DougMcIlroy_AncestryOfLinux_DLSLUG.sxi (presentation)] [http://www.dlslug.org/downloads/meetings/DougMcIlroy_AncestryOfLinux_DLSLUG.mp3 (audio)] [https://archive.org/download/DougMcIlroy_AncestryOfLinux_DLSLUG/DougMcIlroy_AncestryOfLinux_DLSLUG_708kb.mp4 (video)] |
* [http://www.dlslug.org/past_meetings.html Ancestry of Linux - How the Fun Began] {{Webarchive|url=https://web.archive.org/web/20200803032411/http://www.dlslug.org/past_meetings.html |date=2020-08-03 }}, presentation November 2005: [http://www.dlslug.org/downloads/meetings/DougMcIlroy_AncestryOfLinux_DLSLUG.sxi (presentation)] {{Webarchive|url=https://web.archive.org/web/20200802200011/http://www.dlslug.org/downloads/meetings/DougMcIlroy_AncestryOfLinux_DLSLUG.sxi |date=2020-08-02 }} [http://www.dlslug.org/downloads/meetings/DougMcIlroy_AncestryOfLinux_DLSLUG.mp3 (audio)] {{Webarchive|url=https://web.archive.org/web/20200802232339/http://www.dlslug.org/downloads/meetings/DougMcIlroy_AncestryOfLinux_DLSLUG.mp3 |date=2020-08-02 }} [https://archive.org/download/DougMcIlroy_AncestryOfLinux_DLSLUG/DougMcIlroy_AncestryOfLinux_DLSLUG_708kb.mp4 (video)] |
||
;code.google.com |
|||
* [https://code.google.com/p/unix-spell/ Original unix spell source code, written by Doug McIlroy] |
* [https://code.google.com/p/unix-spell/ Original unix spell source code, written by Doug McIlroy] |
||
⚫ | |||
{{Multics}} |
{{Multics}} |
||
Line 115: | Line 121: | ||
[[Category:Plan 9 people]] |
[[Category:Plan 9 people]] |
||
[[Category:1932 births]] |
[[Category:1932 births]] |
||
[[Category:Date of birth missing (living people)]] |
Latest revision as of 01:24, 31 October 2024
Malcolm Douglas McIlroy | |
---|---|
Born | Newburgh, New York | April 24, 1932
Alma mater | Cornell University (B.S., 1954) Massachusetts Institute of Technology (Ph.D., 1959) |
Known for | Macros, Unix pipelines, Unix philosophy, software componentry, echo, diff, sort, join, RUNOFF, tr, Unix manual |
Scientific career | |
Fields | Computer science, mathematics, engineering |
Thesis | On the Solution of the Differential Equations of Conical Shells (1959) |
Doctoral advisors | Eric Reissner |
Website | www |
Malcolm Douglas McIlroy (born 1932) is an American mathematician, engineer, and programmer. As of 2019 he is an Adjunct Professor of Computer Science at Dartmouth College. McIlroy is best known for having originally proposed Unix pipelines and developed several Unix tools, such as echo, spell, diff, sort, join, graph, speak, and tr.[1] He was also one of the pioneering researchers of macro processors and programming language extensibility. He participated in the design of multiple influential programming languages, particularly PL/I, SNOBOL, ALTRAN, TMG and C++.
His seminal work on software componentization[2] and code reuse[3][4] makes him a pioneer of component-based software engineering and software product line engineering.
Biography
[edit]McIlroy earned his bachelor's degree in engineering physics from Cornell University,[5] and a Ph.D. in applied mathematics from MIT in 1959 for his thesis On the Solution of the Differential Equations of Conical Shells (advisor Eric Reissner).[6] He taught at MIT from 1954 to 1958.[5]
McIlroy joined Bell Laboratories in 1958; from 1965 to 1986 was head of its Computing Techniques Research Department (the birthplace of the Unix operating system), and thereafter was Distinguished Member of Technical Staff.[5]
From 1967 to 1968, McIlroy also served as a visiting lecturer at Oxford University.[5]
In 1997, McIlroy retired from Bell Labs, and took a position as an adjunct professor in the Dartmouth College Computer Science Department.[5]
He has previously served the Association for Computing Machinery as national lecturer, Turing Award chairman, member of the publications planning committee, and associate editor for the Communications of the ACM, the Journal of the ACM, and ACM Transactions on Programming Languages and Systems. He also served on the executive committee of CSNET.[5]
Research and contributions
[edit]Macro processors
[edit]McIlroy is considered to be a pioneer of macro processors.[7][8][9] In 1959, together with Douglas E. Eastwood of Bell Labs, he introduced conditional and recursive macros into popular SAP assembler,[10] creating what is known as Macro SAP.[11] His 1960 paper was also seminal in the area of extending any (including high-level) programming languages through macro processors.[7][10] These contributions started the macro-language tradition at Bell Labs ("everything from L6 and AMBIT to C").[12] McIlroy's macro processing ideas were also the main inspiration for TRAC macro processor.[13]
He also coauthored M6 macro processor in FORTRAN IV,[14] which was used in ALTRAN[15] and later was ported to and included into early versions of Unix.[16]
Contributions to Unix
[edit]Throughout the 1960s and 1970s McIlroy contributed programs for Multics (such as RUNOFF[17]) and Unix operating systems (such as diff, echo, tr, join and look[16]), versions of which are widespread to this day through adoption of the POSIX standard and Unix-like operating systems. He introduced the idea of Unix pipelines.[17] He also implemented TMG compiler-compiler in PDP-7 and PDP-11 assembly, which became the first high-level programming language running on Unix, prompting development and influencing Ken Thompson's B programming language[17] and Stephen Johnson's Yacc parser-generator.[18]
McIlroy also took over from Dennis Ritchie compilation of the Unix manual "as a labor of love". Particularly, he edited volume 1 of the manual pages for Version 7 Unix.[19] According to Sandy Fraser: "The fact that there was a manual, that he [McIlroy] insisted on a high standard for the manual, meant that he insisted on a high standard for every one of the programs that was documented".[20]
Computer language design
[edit]McIlroy influenced the design and implementation of SNOBOL programming language. His string manipulation macros were used extensively in the initial SNOBOL implementation of 1962, and figured prominently in subsequent work, eventually leading to its machine-independent implementation language SIL. The table type (associative array) was added to SNOBOL4 on McIlroy's insistence in 1969.[21]
In 1960s, he participated in the design of PL/I programming language.[4][22] He was a member of the IBM–SHARE committee that designed the language[23] and, together with Robert Morris, wrote the Early PL/I (EPL) compiler in TMG for the Multics project.[24][25]
Around 1965, McIlroy, together with W. Stanley Brown, implemented the original version of ALTRAN programming language for IBM 7094 computers.[15][10]
McIlroy has also made a significant influence on design of the programming language C++ (e.g., he proposed the stream output operator <<
).[26]
Algorithms
[edit]In the 1990s, McIlroy worked on improving sorting techniques, particularly he co-authored an optimized qsort with Jon Bentley.[27]
In 1969, he contributed an efficient algorithm to generate all spanning trees in a graph (first discovered by George J. Minty in 1965).[10][28]
Awards and recognition
[edit]In 1995, he was elected as a Fellow of the American Association for the Advancement of Science.[29] In 2004, he won both the USENIX Lifetime Achievement Award ("The Flame")[30] and its Software Tools User Group (STUG) award.[1] In 2006, he was elected as a member of the National Academy of Engineering.[31]
Views on computing
[edit]McIlroy is attributed the quote "The real hero of programming is the one who writes negative code,"[32] where the meaning of negative code is taken to be similar to the famous Apple developer, Bill Atkinson, team anecdote[33] (i.e., when a change in a program source makes the number of lines of code decrease ('negative' code), while its overall quality, readability or speed improves).
See also
[edit]Literature
[edit]- Brock, David C.; McIlroy, Malcom D. (September 30, 2019). McIlroy, Malcom (Doug) Douglas oral history, part 1 of 2. Computer History Museum. p. 59.
- Brock, David C.; McIlroy, Malcom D. (November 6, 2019). McIlroy, Malcom (Doug) Douglas oral history, part 2 of 2. Computer History Museum. p. 52.
References
[edit]- ^ a b "STUG Award". USENIX. 6 December 2011. Retrieved February 5, 2020.
- ^ Bown, Rodney L., ed. (2–5 June 1986). "First International Conference on Ada (R) Programming Language Applications for the NASA Space Station, volume 2 - NASA-TM-101202" (PDF).
- ^ McIlroy, Malcolm Douglas (January 1969). "Mass produced software components" (PDF). Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 Oct. 1968. Scientific Affairs Division, NATO. p. 79.
- ^ a b Endres, Albert; Rombach, H. Dieter (2003). A Handbook of Software and Systems Engineering: Empirical Observations, Laws, and Theories. Pearson Education. p. 327.
- ^ a b c d e f "Douglas McIlroy". HOPL: Online Historical Encyclopaedia of Programming Languages.
- ^ "M. Douglas (Malcolm) McIlroy". Mathematics Genealogy Project. Retrieved February 7, 2020.
- ^ a b Layzell, P. (1985). "The History of Macro Processors in Programming Language Extensibility". The Computer Journal. 28 (1): 29–33. doi:10.1093/comjnl/28.1.29.
- ^ David Walden (2014). "Macro memories, 1964–2013" (PDF). TUGboat. 35 (1).
- ^ Krishnamurthi, Shriram; Felleisen, Matthias; Duba, Bruce F. (2000). "From Macros to Reusable Generative Programming" (PDF). In Czarnecki, Krzysztof; Eisenecker, Ulrich W. (eds.). Generative and Component-Based Software Engineering. Lecture Notes in Computer Science. Vol. 1799. Berlin, Heidelberg: Springer. pp. 105–120. doi:10.1007/3-540-40048-6_9. ISBN 978-3-540-40048-6. S2CID 2576063. Archived from the original (PDF) on November 25, 2004.
- ^ a b c d Holbrook, Bernard D.; Brown, W. Stanley. "Computing Science Technical Report No. 99 – A History of Computing Research at Bell Laboratories (1937–1975)". Bell Labs. Archived from the original on September 2, 2014. Retrieved February 2, 2020.
- ^ "Macro SAP – Macro compiler modification of SAP". HOPL: Online Historical Encyclopaedia of Programming Languages. Archived from the original on August 13, 2008.
- ^ "Bell SAP – SAP with conditional and recursive macros". HOPL: Online Historical Encyclopaedia of Programming Languages. Archived from the original on August 21, 2007.
- ^ Mooers, C.N.; Deutsch, L.P. (1965). "TRAC, A Text-Handling Language". Proceeding ACM '65 Proceedings of the 1965 20th national conference. pp. 229–246. doi:10.1145/800197.806048. S2CID 40013081.
- ^ Cole, A. J. (1981). Macro Processors (2nd, revised ed.). CUP Archive. p. 254.
- ^ a b Hall, A.D., "The ALTRAN System for Rational Function Manipulation — A Survey". Communications of the ACM, 14(8):517–521 (August 1971).
- ^ 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.
- ^ 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): 1577–93. doi:10.1002/j.1538-7305.1984.tb00054.x. Archived from the original on 6 May 2010. As PDF
- ^ Johnson, Stephen C. (1975). Yacc: Yet Another Compiler-Compiler (Technical report). Murray Hill, New Jersey: AT&T Bell Laboratories. 32. Retrieved 31 January 2020.
- ^ Dzonsons, Kristaps; Schwarze, Ingo. "History of UNIX Manpages". Practical UNIX Manuals.
- ^ "The Creation of the UNIX Operating System". Bell Labs. Archived from the original on September 14, 2004.
- ^ Griswold, Ralph (1978). "A history of the SNOBOL programming languages". ACM SIGPLAN Notices. 13 (8). ACM: 275–308. doi:10.1145/960118.808393. ISSN 0362-1340. S2CID 5413577.
- ^ Lawson, Harold; Bromberg, Howard (June 12, 1997). "The World's First COBOL Compilers". Archived from the original on June 4, 2004.
- ^ Michael S. Mahoney (18 August 1989). "Interview with M.D. McIlroy". Princeton.edu. Murray Hill.
- ^ R. A. Frieburghouse. "The Multics PL/1 Compiler". Multicians.org.
- ^ Tom Van Vleck (ed.). "The Choice of PL/I". Multicians.org.
- ^ Stroustrup, Bjarne. "A History of C++: 1979−1991" (PDF).
- ^ Jon L. Bentley; M. Douglas McIlroy (November 1993). "Engineering a sort function". Software—Practice & Experience. 23 (11).
- ^ Narsingh Deo (1974). Graph Theory with Applications to Engineering and Computer Science. Prentice-Hall. p. 480.
- ^ "Elected Fellows: Listing of Fellows who are current members". aaas.org. American Association for the Advancement of Science.
- ^ "Flame Award". USENIX. 6 December 2011. Retrieved February 5, 2020.
- ^ "Dr. M. Douglas McIlroy". nae.edu. National Academy of Engineering. Retrieved February 5, 2020.
- ^ These quotes were heard during a talk he gave to the DLSLUG 12/3/09
- ^ "MacPaint and QuickDraw Source Code". Computer History Museum. 18 July 2010.
External links
[edit]- Bell Labs
- archived homepage at Bell Labs
- McIlroy's History of Unix speech (audio), includes many autobiographical notes, along with discussion of many of the major Unix authors
- cs.dartmouth.edu
- Ancestry of Linux
- Ancestry of Linux - How the Fun Began Archived 2020-08-03 at the Wayback Machine, presentation November 2005: (presentation) Archived 2020-08-02 at the Wayback Machine (audio) Archived 2020-08-02 at the Wayback Machine (video)
- code.google.com