Малкольм Дуглас Макилрой (родился в 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] .
На протяжении 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] (т. е. когда изменение в исходном коде программы приводит к уменьшению количества строк кода («отрицательный» код), в то время как его общее качество, читаемость или скорость улучшаются).