Doug McIlroy
   HOME

TheInfoList



OR:

Malcolm Douglas McIlroy (born 1932) is a
mathematician A mathematician is someone who uses an extensive knowledge of mathematics in their work, typically to solve mathematical problems. Mathematicians are concerned with numbers, data, quantity, structure, space, models, and change. History On ...
,
engineer Engineers, as practitioners of engineering, are professionals who invent, design, analyze, build and test machines, complex systems, structures, gadgets and materials to fulfill functional objectives and requirements while considering the limit ...
, and programmer. As of 2019 he is an Adjunct Professor of
Computer Science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to practical disciplines (includi ...
at
Dartmouth College Dartmouth College (; ) is a private research university in Hanover, New Hampshire. Established in 1769 by Eleazar Wheelock, it is one of the nine colonial colleges chartered before the American Revolution. Although founded to educate Native ...
. McIlroy is best known for having originally proposed Unix pipelines and developed several
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, an ...
tools, such as spell,
diff In computing, the utility diff is a data comparison tool that computes and displays the differences between the contents of files. Unlike edit distance notions used for other purposes, diff is line-oriented rather than character-oriented, but ...
, sort, join,
graph Graph may refer to: Mathematics *Graph (discrete mathematics), a structure made of vertices and edges **Graph theory, the study of such graphs and their properties *Graph (topology), a topological space resembling a graph in the sense of discre ...
, speak, and tr. 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 PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language developed and published by IBM. It is designed for scientific, engineering, business and system programming. I ...
,
SNOBOL SNOBOL ("StriNg Oriented and symBOlic Language") is a series of programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky, culminating in SNOBOL4. It was one of ...
, ALTRAN, TMG and
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
. His seminal work on software componentization and
code reuse In software development (and computer programming in general), code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software, following the reusability principles. Code reuse may be achie ...
makes him a pioneer of component-based software engineering and software product line engineering.


Biography

McIlroy earned his
bachelor's degree A bachelor's degree (from Middle Latin ''baccalaureus'') or baccalaureate (from Modern Latin ''baccalaureatus'') is an undergraduate academic degree awarded by colleges and universities upon completion of a course of study lasting three to six ...
in engineering physics from
Cornell University Cornell University is a private statutory land-grant research university based in Ithaca, New York. It is a member of the Ivy League. Founded in 1865 by Ezra Cornell and Andrew Dickson White, Cornell was founded with the intention to tea ...
, and a
Ph.D. A Doctor of Philosophy (PhD, Ph.D., or DPhil; Latin: or ') is the most common degree at the highest academic level awarded following a course of study. PhDs are awarded for programs across the whole breadth of academic fields. Because it is ...
in applied mathematics from
MIT The Massachusetts Institute of Technology (MIT) is a private land-grant research university in Cambridge, Massachusetts. Established in 1861, MIT has played a key role in the development of modern technology and science, and is one of the m ...
in 1959 for his thesis ''On the Solution of the Differential Equations of Conical Shells'' (advisor
Eric Reissner Max Erich (Eric) Reissner (January 5, 1913 – November 1, 1996) was a German-American civil engineer and mathematician, and Professor of Mathematics at the Massachusetts Institute of Technology. He was recipient of the Theodore von Karman Medal ...
). He taught at MIT from 1954 to 1958. McIlroy joined
Bell Laboratories Nokia Bell Labs, originally named Bell Telephone Laboratories (1925–1984), then AT&T Bell Laboratories (1984–1996) and Bell Labs Innovations (1996–2007), is an American industrial research and scientific development company owned by mult ...
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. From 1967 to 1968, McIlroy also served as a visiting lecturer at
Oxford University Oxford () is a city in England. It is the county town and only city of Oxfordshire. In 2020, its population was estimated at 151,584. It is north-west of London, south-east of Birmingham and north-east of Bristol. The city is home to th ...
. In 1997, McIlroy retired from Bell Labs, and took a position as an Adjunct Professor in the
Dartmouth College Dartmouth College (; ) is a private research university in Hanover, New Hampshire. Established in 1769 by Eleazar Wheelock, it is one of the nine colonial colleges chartered before the American Revolution. Although founded to educate Native ...
Computer Science Department. He has previously served the Association for Computing Machinery as national lecturer,
Turing Award The ACM A. M. Turing Award is an annual prize given by the Association for Computing Machinery (ACM) for contributions of lasting and major technical importance to computer science. It is generally recognized as the highest distinction in comput ...
chairman, member of the publications planning committee, and associate editor for the ''
Communications of the ACM ''Communications of the ACM'' is the monthly journal of the Association for Computing Machinery (ACM). It was established in 1958, with Saul Rosen as its first managing editor. It is sent to all ACM members. Articles are intended for readers with ...
'', the ''
Journal of the ACM The ''Journal of the ACM'' is a peer-reviewed scientific journal covering computer science in general, especially theoretical aspects. It is an official journal of the Association for Computing Machinery. Its current editor-in-chief is Venkatesan ...
'', and ''
ACM Transactions on Programming Languages and Systems The ''ACM Transactions on Programming Languages and Systems'' (''TOPLAS'') is a bimonthly, open access, peer-reviewed scientific journal on the topic of programming languages published by the Association for Computing Machinery. Background Publ ...
''. He also served on the executive committee of CSNET.


Research and contributions


Macro processors

McIlroy is considered to be a pioneer of macro processors. In 1959, together with Douglas E. Eastwood of Bell Labs, he introduced conditional and recursive macros into popular
SAP Sap is a fluid transported in xylem cells (vessel elements or tracheids) or phloem sieve tube elements of a plant. These cells transport water and nutrients throughout the plant. Sap is distinct from latex, resin, or cell sap; it is a separ ...
assembler, creating what is known as Macro SAP. His 1960 paper was also seminal in the area of extending any (including high-level) programming languages through macro processors. These contributions started the macro-language tradition at Bell Labs ("everything from L6 and AMBIT to C"). McIlroy's macro processing ideas were also the main inspiration for TRAC macro processor. He also coauthored M6 macro processor in FORTRAN IV, which was used in ALTRAN and later was ported to and included into early versions of Unix.


Contributions to Unix

Throughout the 1960s and 1970s McIlroy contributed programs for
Multics Multics ("Multiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of ...
(such as RUNOFF A
PDF
/ref>) and
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, an ...
operating systems (such as ''
diff In computing, the utility diff is a data comparison tool that computes and displays the differences between the contents of files. Unlike edit distance notions used for other purposes, diff is line-oriented rather than character-oriented, but ...
'', ''echo'', ''tr'', ''join'' and ''look''), versions of which are widespread to this day through adoption of the
POSIX The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming inter ...
standard and
Unix-like A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
operating systems. He introduced the idea of Unix pipelines. He also implemented TMG compiler-compiler in
PDP-7 The PDP-7 was a minicomputer produced by Digital Equipment Corporation as part of the PDP series. Introduced in 1964, shipped since 1965, it was the first to use their Flip-Chip technology. With a cost of , it was cheap but powerful by the s ...
and PDP-11 assembly, which became the first high-level programming language running on Unix, prompting development and influencing
Ken Thompson Kenneth Lane Thompson (born February 4, 1943) is an American pioneer of computer science. Thompson worked at Bell Labs for most of his career where he designed and implemented the original Unix operating system. He also invented the B programmi ...
's B programming language and Stephen Johnson's
Yacc Yacc (Yet Another Compiler-Compiler) is a computer program for the Unix operating system developed by Stephen C. Johnson. It is a Look Ahead Left-to-Right Rightmost Derivation (LALR) parser generator, generating a LALR parser (the part of a co ...
parser-generator. 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. According to Sandy Fraser: "The fact that there was a manual, that he cIlroyinsisted on a high standard for the manual, meant that he insisted on a high standard for every one of the programs that was documented".


Computer language design

McIlroy influenced the design and implementation of
SNOBOL SNOBOL ("StriNg Oriented and symBOlic Language") is a series of programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky, culminating in SNOBOL4. It was one of ...
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 In computer science, an associative array, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In mathematical terms an ...
) was added to
SNOBOL4 SNOBOL ("StriNg Oriented and symBOlic Language") is a series of programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky, culminating in SNOBOL4. It was one of ...
on McIlroy's insistence in 1969. In 1960s, he participated in the design of
PL/I PL/I (Programming Language One, pronounced and sometimes written PL/1) is a procedural, imperative computer programming language developed and published by IBM. It is designed for scientific, engineering, business and system programming. I ...
programming language. He was a member of the IBMSHARE committee that designed the language and, together with Robert Morris, wrote the Early PL/I (EPL) compiler in TMG for the
Multics Multics ("Multiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of ...
project. Around 1965, McIlroy, together with W. Stanley Brown, implemented the original version of ALTRAN programming language for IBM 7094 computers.Hall, A.D., "The ALTRAN System for Rational Function Manipulation — A Survey". ''
Communications of the ACM ''Communications of the ACM'' is the monthly journal of the Association for Computing Machinery (ACM). It was established in 1958, with Saul Rosen as its first managing editor. It is sent to all ACM members. Articles are intended for readers with ...
'', 14(8):517–521 (August 1971).
McIlroy has also made a significant influence on design of the programming language
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
(e.g., he proposed the stream output operator <<).


Algorithms

In the 1990s, McIlroy worked on improving sorting techniques, particularly he co-authored an optimized
qsort qsort is a C standard library function that implements a polymorphic sorting algorithm for arrays of arbitrary objects according to a user-provided comparison function. It is named after the "quicker sort" algorithm (a quicksort variant due to R ...
with Jon Bentley. In 1969, he contributed an efficient algorithm to generate all spanning trees in a
graph Graph may refer to: Mathematics *Graph (discrete mathematics), a structure made of vertices and edges **Graph theory, the study of such graphs and their properties *Graph (topology), a topological space resembling a graph in the sense of discre ...
(first discovered by George J. Minty in 1965).


Awards and recognition

In 1995, he was elected as a Fellow of the American Association for the Advancement of Science. In 2004, he won both the USENIX Lifetime Achievement Award ("The Flame") and its Software Tools User Group (STUG) award. In 2006, he was elected as a member of the
National Academy of Engineering The National Academy of Engineering (NAE) is an American nonprofit, non-governmental organization. The National Academy of Engineering is part of the National Academies of Sciences, Engineering, and Medicine, along with the National Academy of ...
.


Views on computing

McIlroy is attributed the quote "The real hero of programming is the one who writes negative code,"These quotes were heard during a talk he gave to the DLSLUG 12/3/09 where the meaning of ''negative code'' is taken to be similar to the famous
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple trees are cultivated worldwide and are the most widely grown species in the genus ''Malus''. The tree originated in Central Asia, where its wild ancestor, ' ...
developer,
Bill Atkinson Bill Atkinson (born March 17, 1951) is an American computer engineer and photographer. Atkinson worked at Apple Computer from 1978 to 1990. Atkinson was the principal designer and developer of the graphical user interface (GUI) of the Apple ...
, team anecdote (i.e., when a change in a program
source Source may refer to: Research * Historical document * Historical source * Source (intelligence) or sub source, typically a confidential provider of non open-source intelligence * Source (journalism), a person, publication, publishing institute o ...
makes the number of
lines of code Source lines of code (SLOC), also known as lines of code (LOC), is a software metric used to measure the size of a computer program by counting the number of lines in the text of the program's source code. SLOC is typically used to predict the am ...
decrease ('negative' code), while its overall quality, readability or speed improves).


See also

* Darwin (programming game) * Homoiconicity * Unix philosophy


Literature

* *


References


External links


Doug McIlroy's homepage
homepage at Bell Labs website)
Biography

Doug McIlroy Facts


(audio), includes many autobiographical notes, along with discussion of many of the major Unix authors

presentation November 2005
(presentation)(audio)(video)

Original unix spell source code, written by Doug McIlroy


{{DEFAULTSORT:McIlroy, Douglas Dartmouth College faculty Cornell University College of Engineering alumni Massachusetts Institute of Technology School of Science alumni Living people Members of the United States National Academy of Engineering Scientists at Bell Labs Multics people Unix people Plan 9 people 1932 births Date of birth missing (living people)