Douglas McIlroy

Malcolm 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.

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)[1]. Ha insegnato al MIT dal 1954 al 1958[2]. 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

[modifica | modifica wikitesto]

Processori macro

[modifica | modifica wikitesto]

McIlroy è considerato un pioniere dei macroprocessori[3]. 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[4]. È anche coautore del macro processore M6 in FORTRAN IV[5], che è stato utilizzato in ALTRAN e successivamente è stato portato e incluso nelle prime versioni di Unix.

Contributi a Unix

[modifica | modifica wikitesto]

Per tutti gli anni '60 e '70 McIlroy contribuì con programmi per Multics (come RUNOFF[6]) 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

[modifica | modifica wikitesto]

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[7]. Era un membro del comitato IBM-SHARE che ha progettato il linguaggio[8] e, insieme a Robert Morris, ha scritto il compilatore Early PL / I (EPL) in TMG per il progetto Multics[9][10]. 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 <<).

Negli anni '90, McIlroy ha lavorato per migliorare le tecniche di smistamento, in particolare è stato coautore di un qsort ottimizzato con Jon Bentley[11]. 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)[12].

Premi e riconoscimenti

[modifica | modifica wikitesto]

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

Opinioni sull'informatica

[modifica | modifica wikitesto]

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[17] (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).

  1. ^ M. Douglas (Malcolm) McIlroy, in Mathematics Genealogy Project. URL consultato il 7 febbraio 2020.
  2. ^ Douglas McIlroy, in HOPL: Online Historical Encyclopaedia of Programming Languages. URL consultato il 10 marzo 2021 (archiviato dall'url originale il 3 agosto 2020).
  3. ^ Shriram Krishnamurthi, Matthias Felleisen e Bruce F. Duba, From Macros to Reusable Generative Programming (PDF), in Czarnecki, Krzysztof e Eisenecker, Ulrich W. (a cura di), Generative and Component-Based Software Engineering, Lecture Notes in Computer Science, vol. 1799, Berlin, Heidelberg, Springer, 2000, pp. 105-120, DOI:10.1007/3-540-40048-6_9, ISBN 978-3-540-40048-6 (archiviato dall'url originale il 25 novembre 2004).
  4. ^ C.N. Mooers e L.P. Deutsch, TRAC, A Text-Handling Language, in Proceeding ACM '65 Proceedings of the 1965 20th national conference, 1965, pp. 229-246, DOI:10.1145/800197.806048.
  5. ^ A. J. Cole, Macro Processors, 2nd, revised, CUP Archive, 1981, p. 254.
  6. ^ Dennis M. Ritchie, The Evolution of the Unix Time-sharing System, in AT&T Bell Laboratories Technical Journal, vol. 63, 6 Part 2, 1984, pp. 1577-93, DOI:10.1002/j.1538-7305.1984.tb00054.x (archiviato dall'url originale il 6 maggio 2010). As PDF
  7. ^ Harold Lawson e Howard Bromberg, The World's First COBOL Compilers, su computerhistory.org, 12 giugno 1997 (archiviato dall'url originale il 4 giugno 2004).
  8. ^ Michael S. Mahoney, Interview with M.D. McIlroy, su Princeton.edu, Murray Hill, 18 agosto 1989.
  9. ^ R. A. Frieburghouse, The Multics PL/1 Compiler, su Multicians.org.
  10. ^ Tom Van Vleck (a cura di), The Choice of PL/I, su Multicians.org.
  11. ^ Jon L. Bentley e M. Douglas McIlroy, Engineering a sort function, in Software—Practice & Experience, vol. 23, n. 11, novembre 1993.
  12. ^ Narsingh Deo, Graph Theory with Applications to Engineering and Computer Science, Prentice-Hall, 1974, pp. 480.
  13. ^ Elected Fellows: Listing of Fellows who are current members, su aaas.org, American Association for the Advancement of Science.
  14. ^ Flame Award, su usenix.org, USENIX. URL consultato il 5 febbraio 2020.
  15. ^ STUG Award, su usenix.org, USENIX. URL consultato il 5 febbraio 2020.
  16. ^ Dr. M. Douglas McIlroy, su nae.edu, National Academy of Engineering. URL consultato il 5 febbraio 2020.
  17. ^ MacPaint and QuickDraw Source Code, in Computer History Museum.

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàVIAF (EN23439870 · ISNI (EN0000 0000 2450 3201 · LCCN (ENn80070005 · J9U (ENHE987007338097805171