stringtranslate.com

Дуглас Макилрой

Малкольм Дуглас Макилрой (родился в 1932 году) — американский математик , инженер и программист . По состоянию на 2019 год он является адъюнкт-профессором компьютерных наук в Дартмутском колледже . Макилрой наиболее известен тем, что изначально предложил конвейеры Unix и разработал несколько инструментов Unix , таких как echo, spell , diff , sort , join , graph , speak и tr . [1] Он также был одним из пионеров исследований макропроцессоров и расширяемости языков программирования. Он участвовал в разработке нескольких влиятельных языков программирования, в частности PL/I , SNOBOL , ALTRAN , TMG и C++ .

Его основополагающая работа по компонентизации программного обеспечения [2] и повторному использованию кода [3] [4] сделала его пионером компонентной разработки программного обеспечения и разработки линеек программных продуктов .

Биография

Макилрой получил степень бакалавра по инженерной физике в Корнеллском университете [ 5] и степень доктора философии по прикладной математике в Массачусетском технологическом институте в 1959 году за диссертацию «О решении дифференциальных уравнений конических оболочек» (руководитель Эрик Рейсснер ). [6] Он преподавал в Массачусетском технологическом институте с 1954 по 1958 год. [5]

Макилрой присоединился к Bell Laboratories в 1958 году; с 1965 по 1986 год он возглавлял исследовательский отдел вычислительной техники (место рождения операционной системы Unix), а затем стал почетным членом технического персонала. [5]

С 1967 по 1968 год Макилрой также работал приглашенным лектором в Оксфордском университете . [5]

В 1997 году Макилрой ушел из Bell Labs и занял должность внештатного профессора на кафедре компьютерных наук Дартмутского колледжа . [5]

Ранее он работал в Ассоциации вычислительной техники в качестве национального лектора, председателя премии Тьюринга , члена комитета по планированию публикаций и заместителя редактора для Communications of the ACM , Journal of the ACM и ACM Transactions on Programming Languages ​​and Systems . Он также работал в исполнительном комитете CSNET . [5]

Исследования и вклады

Макропроцессоры

Макилрой считается пионером макропроцессоров . [7] [8] [9] В 1959 году вместе с Дугласом Э. Иствудом из Bell Labs он ввел условные и рекурсивные макросы в популярный ассемблер SAP , [10] создав то, что известно как Macro SAP. [11] Его работа 1960 года также была основополагающей в области расширения любых (включая высокоуровневые ) языков программирования с помощью макропроцессоров. [7] [10] Эти вклады положили начало традиции макроязыков в Bell Labs («все от L6 и AMBIT до C»). [12] Идеи обработки макросов Макилроя также стали основным источником вдохновения для макропроцессора TRAC . [13]

Он также был соавтором макропроцессора M6 в FORTRAN IV [ 14] , который использовался в ALTRAN [15] и позже был портирован и включен в ранние версии Unix [16] .

Вклад в Unix

На протяжении 1960-х и 1970-х годов Макилрой вносил вклад в программы для Multics (такие как RUNOFF [17] ) и операционных систем Unix (такие как diff , echo , tr , join и look [16] ), версии которых широко распространены и по сей день благодаря принятию стандарта POSIX и операционных систем, подобных Unix . Он представил идею конвейеров Unix. [17] Он также реализовал компилятор-компилятор TMG в ассемблере PDP-7 и PDP-11 , который стал первым языком программирования высокого уровня, работающим на Unix, стимулируя разработку и влияя на язык программирования B Кена Томпсона [ 17] и парсер-генератор Yacc Стивена Джонсона . [18]

Макилрой также перенял от Денниса Ритчи компиляцию руководства Unix "в качестве труда любви". В частности, он отредактировал том 1 страниц руководства для версии 7 Unix. [19] По словам Сэнди Фрейзера : "Тот факт, что было руководство, что он [Макилрой] настаивал на высоком стандарте для руководства, означал, что он настаивал на высоком стандарте для каждой из программ, которые были задокументированы". [20]

Разработка компьютерного языка

Макилрой оказал влияние на разработку и реализацию языка программирования SNOBOL . Его макросы для обработки строк широко использовались в первоначальной реализации SNOBOL 1962 года и занимали видное место в последующих работах, в конечном итоге приведя к его машинно-независимому языку реализации SIL. Тип таблицы ( ассоциативный массив ) был добавлен в SNOBOL4 по настоянию Макилроя в 1969 году. [21]

В 1960-х годах он принимал участие в разработке языка программирования PL/I . [4] [22] Он был членом комитета IBM – SHARE , который разработал язык [23] и вместе с Робертом Моррисом написал компилятор Early PL/I (EPL) в TMG для проекта Multics . [24] [25]

Около 1965 года Макилрой совместно с У. Стэнли Брауном реализовал оригинальную версию языка программирования ALTRAN для компьютеров IBM 7094. [15] [10]

Макилрой также оказал значительное влияние на разработку языка программирования C++ (например, он предложил оператор потокового вывода <<). [26]

Алгоритмы

В 1990-х годах Макилрой работал над улучшением методов сортировки, в частности, он был соавтором оптимизированной qsort совместно с Джоном Бентли . [27]

В 1969 году он предложил эффективный алгоритм для генерации всех остовных деревьев в графе (впервые открытый Джорджем Дж. Минти в 1965 году). [10] [28]

Награды и признание

В 1995 году он был избран членом Американской ассоциации содействия развитию науки . [29] В 2004 году он выиграл премию USENIX за достижения всей жизни («The Flame») [30] и премию Software Tools User Group (STUG). [1] В 2006 году он был избран членом Национальной инженерной академии . [31]

Взгляды на вычисления

Макилрою приписывают цитату «Настоящий герой программирования — тот, кто пишет отрицательный код» [32] , где значение отрицательного кода понимается как аналогичный анекдоту известного разработчика Apple Билла Аткинсона [33] (т. е. когда изменение в исходном коде программы приводит к уменьшению количества строк кода («отрицательный» код), в то время как его общее качество, читаемость или скорость улучшаются).

Смотрите также

Литература

Ссылки

  1. ^ ab "STUG Award". USENIX. 6 декабря 2011 г. Получено 5 февраля 2020 г.
  2. ^ Боун, Родни Л., ред. (2–5 июня 1986 г.). «Первая международная конференция по применению языка программирования Ada (R) для космической станции NASA, том 2 — NASA-TM-101202» (PDF) .
  3. ^ Макилрой, Малкольм Дуглас (январь 1969). "Массовые программные компоненты" (PDF) . Программная инженерия: Отчет о конференции, спонсируемой Научным комитетом НАТО, Гармиш, Германия, 7–11 октября 1968 г. Отдел научных дел, НАТО. стр. 79.
  4. ^ ab Эндрес, Альберт; Ромбах, Х. Дитер (2003). Справочник по программному обеспечению и системной инженерии: эмпирические наблюдения, законы и теории . Pearson Education. стр. 327.
  5. ^ abcdef "Дуглас Макилрой". HOPL: Онлайновая историческая энциклопедия языков программирования .
  6. ^ "M. Douglas (Malcolm) McIlroy". Проект генеалогии математики . Получено 7 февраля 2020 г.
  7. ^ ab Layzell, P. (1985). «История макропроцессоров в расширяемости языков программирования». The Computer Journal . 28 (1): 29–33. doi : 10.1093/comjnl/28.1.29 .
  8. ^ Дэвид Уолден (2014). «Макровоспоминания, 1964–2013» (PDF) . TUGboat . 35 (1).
  9. ^ Кришнамурти, Шрирам; Феллейзен, Маттиас; Дуба, Брюс Ф. (2000). «От макросов к многоразовому генеративному программированию» (PDF) . В Чарнецки, Кшиштоф; Эйзенекер, Ульрих В. (ред.). Генеративная и компонентно-ориентированная программная инженерия . Конспект лекций по информатике. Том 1799. Берлин, Гейдельберг: Springer. стр. 105–120. doi :10.1007/3-540-40048-6_9. ISBN 978-3-540-40048-6. S2CID  2576063. Архивировано из оригинала (PDF) 25 ноября 2004 г.
  10. ^ abcd Холбрук, Бернард Д.; Браун, У. Стэнли. «Технический отчет по вычислительной науке № 99 – История исследований в области вычислительной техники в лабораториях Белла (1937–1975)». Bell Labs . Архивировано из оригинала 2 сентября 2014 г. Получено 2 февраля 2020 г.
  11. ^ "Macro SAP – Макро компиляторная модификация SAP". HOPL: Онлайновая историческая энциклопедия языков программирования . Архивировано из оригинала 13 августа 2008 г.
  12. ^ "Bell SAP – SAP с условными и рекурсивными макросами". HOPL: Онлайновая историческая энциклопедия языков программирования . Архивировано из оригинала 21 августа 2007 г.
  13. ^ Mooers, CN ; Deutsch, LP (1965). "TRAC, язык обработки текста". Труды ACM '65 Труды 20-й национальной конференции 1965 года . С. 229–246. doi :10.1145/800197.806048. S2CID  40013081.
  14. ^ Коул, А. Дж. (1981). Макропроцессоры (2-е, исправленное издание). Архив CUP. стр. 254.
  15. ^ ab Hall, AD, «Система ALTRAN для рационального манипулирования функциями — обзор». Communications of the ACM , 14(8):517–521 (август 1971 г.).
  16. ^ ab McIlroy, MD (1987). Исследовательский ридер Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). Computing Science. AT&T Bell Laboratories. 139.
  17. ^ abc 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. Архивировано из оригинала 6 мая 2010 г.В формате PDF
  18. ^ Джонсон, Стивен С. (1975). Yacc: Yet Another Compiler-Compiler (технический отчет). Мюррей-Хилл, Нью-Джерси: AT&T Bell Laboratories. 32 . Получено 31 января 2020 г. .
  19. ^ Дзонсонс, Кристапс; Шварце, Инго. «История страниц руководства UNIX». Практические руководства UNIX .
  20. ^ "Создание операционной системы UNIX". Bell Labs. Архивировано из оригинала 14 сентября 2004 г.
  21. ^ Грисволд, Ральф (1978). «История языков программирования SNOBOL». ACM SIGPLAN Notices . 13 (8). ACM: 275–308. doi :10.1145/960118.808393. ISSN  0362-1340. S2CID  5413577.
  22. Lawson, Harold ; Bromberg, Howard (12 июня 1997 г.). «Первые в мире компиляторы COBOL». Архивировано из оригинала 4 июня 2004 г.
  23. Майкл С. Махони (18 августа 1989 г.). «Интервью с МД Макилроем». Princeton.edu . Мюррей Хилл.
  24. ^ RA Frieburghouse. «Компилятор Multics PL/1». Multicians.org .
  25. ^ Том Ван Флек (ред.). «Выбор PL/I». Multicians.org .
  26. ^ Страуструп, Бьярн . «История C++: 1979–1991» (PDF) .
  27. ^ Джон Л. Бентли; М. Дуглас Макилрой (ноябрь 1993 г.). «Разработка функции сортировки». Программное обеспечение — практика и опыт . 23 (11).
  28. ^ Нарсингх Део (1974). Теория графов с приложениями к инженерии и информатике . Prentice-Hall. стр. 480.
  29. ^ "Избранные члены: Список действительных членов". aaas.org . Американская ассоциация содействия развитию науки.
  30. ^ "Flame Award". USENIX. 6 декабря 2011 г. Получено 5 февраля 2020 г.
  31. ^ "Dr. M. Douglas McIlroy". nae.edu . Национальная инженерная академия . Получено 5 февраля 2020 г. .
  32. ^ Эти цитаты были услышаны во время его выступления перед DLSLUG 12/3/09
  33. ^ "MacPaint и QuickDraw Исходный код". Музей компьютерной истории . 18 июля 2010 г.

Внешние ссылки

Белл Лабс
cs.dartmouth.edu
Происхождение Linux
код.google.com