Douglas 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 Invention, invent, design, analyze, build and test machines, complex systems, structures, gadgets and materials to fulfill functional objectives and requirements while considerin ...
, and
programmer A computer programmer, sometimes referred to as a software developer, a software engineer, a programmer or a coder, is a person who creates computer programs — often for larger computer software. A programmer is someone who writes/creates ...
. 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 Applied science, practical discipli ...
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, ...
tools, such as spell, diff, sort,
join Join may refer to: * Join (law), to include additional counts or additional defendants on an indictment *In mathematics: ** Join (mathematics), a least upper bound of sets orders in lattice theory ** Join (topology), an operation combining two topo ...
, graph, speak, and tr. He was also one of the pioneering researchers of
macro processor A general-purpose macro processor or general purpose preprocessor is a macro processor that is not tied to or integrated with a particular language or piece of software. A macro processor is a program that copies a stream of text from one place ...
s 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,
ALTRAN ALTRAN (ALgebraic TRANslator) is a programming language for the formal manipulation of rational functions of several variables with integer coefficients. It was developed at Bell Labs in 1960s. ALTRAN is a FORTRAN version of ALPAK rational algebr ...
, TMG and C++. His seminal work on software componentization and code reuse makes him a pioneer of
component-based software engineering Component-based software engineering (CBSE), also called component-based development (CBD), is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a giv ...
and
software product line engineering Product-family engineering (PFE), also known as product-line engineering, is based on the ideas of "domain engineering" created by the Software Engineering Institute, a term coined by James Neighbors in his 1980 dissertationhttps://escholarship.or ...
.


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 si ...
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. in applied mathematics from MIT 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 development, research and scientific developm ...
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 the ...
. 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 The Association for Computing Machinery (ACM) is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional member ...
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 compu ...
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 wi ...
'', 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''. He also served on the executive committee of
CSNET The Computer Science Network (CSNET) was a computer network that began operation in 1981 in the United States. Its purpose was to extend networking benefits, for computer science departments at academic and research institutions that could not be d ...
.


Research and contributions


Macro processors

McIlroy is considered to be a pioneer of
macro processor A general-purpose macro processor or general purpose preprocessor is a macro processor that is not tied to or integrated with a particular language or piece of software. A macro processor is a program that copies a stream of text from one place ...
s. In 1959, together with Douglas E. Eastwood of Bell Labs, he introduced conditional and recursive macros into popular SAP assembler, creating what is known as Macro SAP. His 1960 paper was also seminal in the area of extending any (including
high-level High-level and low-level, as technical terms, are used to classify, describe and point to specific goals of a systematic operation; and are applied in a wide range of contexts, such as, for instance, in domains as widely varied as computer scien ...
) 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 Trac is an open-source, web-based project management and bug tracking system. It has been adopted by a variety of organizations for use as a bug tracking system for both free and open-source software and proprietary projects and products. Tr ...
macro processor. He also coauthored M6 macro processor in FORTRAN IV, which was used in
ALTRAN ALTRAN (ALgebraic TRANslator) is a programming language for the formal manipulation of rational functions of several variables with integer coefficients. It was developed at Bell Labs in 1960s. ALTRAN is a FORTRAN version of ALPAK rational algebr ...
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 Runoff, run-off or RUNOFF may refer to: * RUNOFF, the first computer text-formatting program * Runoff or run-off, another name for bleed, printing that lies beyond the edges to which a printed sheet is trimmed * Runoff or run-off, a stock marke ...
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, ...
operating systems (such as '' diff'', ''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 in ...
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 and
PDP-11 The PDP-11 is a series of 16-bit minicomputers sold by Digital Equipment Corporation (DEC) from 1970 into the 1990s, one of a set of products in the Programmed Data Processor (PDP) series. In total, around 600,000 PDP-11s of all models were sol ...
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 Dennis MacAlistair Ritchie (September 9, 1941 – October 12, 2011) was an American computer scientist. He is most well-known for creating the C (programming language), C programming language and, with long-time colleague Ken Thompson, the Unix ...
compilation of the
Unix manual A man page (short for manual page) is a form of software documentation usually found on a Unix or Unix-like operating system. Topics covered include computer programs (including library and system calls), formal standards and conventions, ...
"as a labor of love". Particularly, he edited volume 1 of the manual pages for Version 7 Unix. According to
Sandy Fraser Alexander G. Fraser (8 June 1937 – 13 June 2022), also known as A. G. Fraser and Sandy Fraser, was a noted British- American computer scientist. Fraser received his B.Sc. degree in Aeronautical Engineering from Bristol University in 1958, a ...
: "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 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. 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 ALTRAN (ALgebraic TRANslator) is a programming language for the formal manipulation of rational functions of several variables with integer coefficients. It was developed at Bell Labs in 1960s. ALTRAN is a FORTRAN version of ALPAK rational algebr ...
programming language for
IBM 7094 The IBM 7090 is a second-generation transistorized version of the earlier IBM 709 vacuum tube mainframe computer that was designed for "large-scale scientific and technological applications". The 7090 is the fourth member of the IBM 700/7000 s ...
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 wi ...
'', 14(8):517–521 (August 1971).
McIlroy has also made a significant influence on design of the programming language C++ (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 with Jon Bentley. In 1969, he contributed an efficient algorithm to generate all
spanning tree In the mathematical field of graph theory, a spanning tree ''T'' of an undirected graph ''G'' is a subgraph that is a tree which includes all of the vertices of ''G''. In general, a graph may have several spanning trees, but a graph that is ...
s in a graph (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 The American Association for the Advancement of Science (AAAS) is an American international non-profit organization with the stated goals of promoting cooperation among scientists, defending scientific freedom, encouraging scientific respons ...
. 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 ancest ...
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 makes the number of lines of code decrease ('negative' code), while its overall quality, readability or speed improves).


See also

*
Darwin (programming game) Darwin was a programming game invented in August 1961 by Victor A. Vyssotsky, Robert Morris Sr., and M. Douglas McIlroy. ( Dennis Ritchie is sometimes incorrectly cited as a co-author, but was not involved.) The game was developed at Bell Lab ...
* Homoiconicity *
Unix philosophy The Unix philosophy, originated by Ken Thompson, is a set of cultural norms and philosophical approaches to minimalist, modular software development. It is based on the experience of leading developers of the Unix operating system. Early Uni ...


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)