# Douglas McIlroy

Malcolm Douglas McIlroy (Newburgh, 24 aprile 1932) è un matematico, ingegnere e programmatore statunitense.
Dal 2019 è professore a contratto di informatica al Dartmouth College. McIlroy è meglio conosciuto per aver originariamente proposto pipeline Unix e sviluppato diversi strumenti Unix, come spell, diff, sort, join, graph, speak e tr. È stato anche uno dei ricercatori pionieri dei macro processori e dell'estensibilità del linguaggio di programmazione. Ha partecipato alla progettazione di molteplici linguaggi di programmazione influenti, in particolare PL / I, SNOBOL, ALTRAN, TMG e C++. Il suo lavoro fondamentale sulla componentizzazione del software e sul riutilizzo del codice lo rende un pioniere dell'ingegneria del software basata sui componenti e dell'ingegneria della linea di prodotti software.

## Biografia

McIlroy ha conseguito la laurea in fisica ingegneristica presso la Cornell University e un dottorato di ricerca in matematica applicata al MIT nel 1959 per la sua tesi sulla soluzione delle equazioni differenziali dei gusci conici (advisor Eric Reissner). Ha insegnato al MIT dal 1954 al 1958. McIlroy è entrato a far parte dei Bell Laboratories nel 1958; dal 1965 al 1986 è stato a capo del dipartimento di ricerca sulle tecniche di elaborazione (il luogo di nascita del sistema operativo Unix), e successivamente è stato illustre membro dello staff tecnico. Dal 1967 al 1968, McIlroy è stato anche docente in visita presso l'Università di Oxford. Nel 1997, McIlroy si ritirò dai Bell Labs e prese una posizione come professore a contratto presso il dipartimento di informatica del Dartmouth College. In precedenza ha servito l'Association for Computing Machinery come docente nazionale, presidente del Turing Award, membro del comitato di pianificazione delle pubblicazioni ed editore associato per le comunicazioni dell'ACM, il giornale dell'ACM e le transazioni ACM sui linguaggi e sui sistemi di programmazione. Ha anche fatto parte del comitato esecutivo del CSNET.

## Ricerca e contributi
### Processori macro

McIlroy è considerato un pioniere dei macroprocessori. Nel 1959, insieme a Douglas E. Eastwood dei Bell Labs, introdusse macro condizionali e ricorsive nel popolare assemblatore SAP, creando ciò che è noto come Macro SAP. Il suo articolo del 1960 è stato fondamentale anche nell'area dell'estensione di qualsiasi linguaggio di programmazione (compresi quelli di alto livello) attraverso i macro processori. Questi contributi hanno dato inizio alla tradizione del macro-linguaggio ai Bell Labs ("tutto da L6 e AMBIT a C"). Le idee di elaborazione macro di McIlroy sono state anche l'ispirazione principale per il macro processore TRAC. È anche coautore del macro processore M6 in FORTRAN IV, che è stato utilizzato in ALTRAN e successivamente è stato portato e incluso nelle prime versioni di Unix.

### Contributi a Unix

Per tutti gli anni '60 e '70 McIlroy contribuì con programmi per Multics (come RUNOFF) e sistemi operativi Unix (come diff, echo, tr, join e look), le cui versioni sono diffuse fino ad oggi grazie all'adozione dello standard POSIX e sistemi operativi simili a Unix. Ha introdotto l'idea delle pipeline Unix. Ha anche implementato il compilatore-compilatore TMG in PDP-7 e PDP-11 assembly, che è diventato il primo linguaggio di programmazione di alto livello in esecuzione su Unix, stimolando lo sviluppo e influenzando il linguaggio di programmazione B di Ken Thompson e il generatore di parser Yacc di Stephen Johnson.

### Progettazione in linguaggio informatico

McIlroy ha influenzato la progettazione e l'implementazione del linguaggio di programmazione SNOBOL. Le sue macro di manipolazione delle stringhe sono state ampiamente utilizzate nell'implementazione iniziale di SNOBOL del 1962 e hanno avuto un ruolo preminente nel lavoro successivo, portando infine al suo linguaggio di implementazione indipendente dalla macchina SIL. Il tipo di tabella (array associativo) è stato aggiunto a SNOBOL4 su insistenza di McIlroy nel 1969. Negli anni '60, ha partecipato alla progettazione del linguaggio di programmazione PL / I. Era un membro del comitato IBM-SHARE che ha progettato il linguaggio e, insieme a Robert Morris, ha scritto il compilatore Early PL / I (EPL) in TMG per il progetto Multics. Intorno al 1965, McIlroy, insieme a W. Stanley Brown, implementò la versione originale del linguaggio di programmazione ALTRAN per i computer IBM 7094. McIlroy ha anche avuto un'influenza significativa sulla progettazione del linguaggio di programmazione C++ (ad esempio, ha proposto l'operatore di output del flusso <<).

### Algoritmi

Negli anni '90, McIlroy ha lavorato per migliorare le tecniche di smistamento, in particolare è stato coautore di un qsort ottimizzato con Jon Bentley. Nel 1969, ha contribuito con un algoritmo efficiente per generare tutti gli spanning tree in un grafo (scoperto per la prima volta da George J. Minty nel 1965).

## Premi e riconoscimenti

Nel 1995 è stato eletto Fellow dell'American Association for the Advancement of Science. Nel 2004, ha vinto sia l'USENIX Lifetime Achievement Award ("The Flame") e il suo premio Software Tools User Group (STUG). Nel 2006 è stato eletto membro della National Academy of Engineering.

## Opinioni sull'informatica

A McIlroy viene attribuita la citazione "Il vero eroe della programmazione è colui che scrive codice negativo", dove il significato del codice negativo è considerato simile al famoso sviluppatore Apple, Bill Atkinson, aneddoto del team (es. , quando un cambiamento nella sorgente di un programma fa diminuire il numero di righe di codice (codice "negativo"), mentre la sua qualità, leggibilità o velocità complessiva migliora).