Кеннет Лейн Томпсон (родился 4 февраля 1943 года) — американский пионер компьютерной науки . Большую часть своей карьеры Томпсон работал в Bell Labs , где разработал и внедрил оригинальную операционную систему Unix . Он также изобрел язык программирования B , прямого предшественника языка C , и был одним из создателей и первых разработчиков операционной системы Plan 9. С 2006 года Томпсон работает в Google , где он был одним из разработчиков языка Go .
Другие заметные вклады включают его работу над регулярными выражениями и ранними компьютерными текстовыми редакторами QED и ed , определение кодировки UTF-8 и его работу над компьютерными шахматами, которая включала создание баз эндшпильных таблиц и шахматной машины Belle . Он выиграл премию Тьюринга в 1983 году вместе со своим давним коллегой Деннисом Ритчи .
Томпсон родился в Новом Орлеане, штат Луизиана . Когда его спросили, как он научился программировать, Томпсон ответил: «Меня всегда увлекала логика, и даже в начальной школе я решал арифметические задачи в двоичной системе счисления и тому подобное. Просто потому, что меня это увлекало». [3]
Томпсон получил степень бакалавра наук в 1965 году и степень магистра в 1966 году, как по электротехнике, так и по компьютерным наукам , в Калифорнийском университете в Беркли , где его научным руководителем по магистерской диссертации был Элвин Берлекамп . [4]
Томпсон был нанят Bell Labs в 1966 году. [5] В 1960-х годах в Bell Labs Томпсон и Деннис Ритчи работали над операционной системой Multics . Во время написания Multics Томпсон создал язык программирования Bon. [6] [7] Он также создал видеоигру под названием Space Travel . Позже Bell Labs вышла из проекта MULTICS. [8] Чтобы продолжить играть в игру, Томпсон нашел старую машину PDP-7 и переписал Space Travel на ней. [9] В конечном итоге инструменты, разработанные Томпсоном, стали операционной системой Unix : работая над PDP-7 , группа исследователей Bell Labs во главе с Томпсоном и Ритчи, включая Радда Канадая , разработала иерархическую файловую систему , концепции компьютерных процессов и файлов устройств , интерпретатор командной строки , каналы для легкого межпроцессного взаимодействия и несколько небольших служебных программ. В 1970 году Брайан Керниган предложил название «Unix», играя каламбуром на название «Multics». [10] После первоначальной работы над Unix Томпсон решил, что для Unix нужен язык системного программирования, и создал B , предшественника C Ричи . [11]
В 1960-х годах Томпсон также начал работу над регулярными выражениями . Томпсон разработал версию CTSS редактора QED , которая включала регулярные выражения для поиска текста. QED и более поздний редактор Томпсона ed (стандартный текстовый редактор в Unix) внесли большой вклад в конечную популярность регулярных выражений, и регулярные выражения стали широко распространены в программах обработки текста Unix. Почти все программы, которые сегодня работают с регулярными выражениями, используют какой-либо вариант нотации Томпсона. Он также изобрел алгоритм построения Томпсона, используемый для преобразования регулярных выражений в недетерминированные конечные автоматы , чтобы ускорить сопоставление выражений. [12]
На протяжении 1970-х годов Томпсон и Ритчи сотрудничали над операционной системой Unix; они были настолько плодотворны в Research Unix , что Дуг Макилрой позже написал: «Имена Ритчи и Томпсона можно смело отнести почти ко всему, что не упоминается иным образом». [13] В интервью 2011 года Томпсон заявил, что первые версии Unix были написаны им, и что Ритчи начал выступать за эту систему и помогал ее разрабатывать: [14]
Я сделал первую из двух или трех версий UNIX в одиночку. А Деннис стал евангелистом. Затем была переписывание на языке более высокого уровня, который впоследствии стал называться C. Он работал в основном над языком и системой ввода-вывода, а я работал над всей остальной операционной системой. Это было для PDP-11 , что было удачей, потому что это был компьютер, который захватил академическое сообщество.
Обратная связь от разработки Томпсона Unix также сыграла важную роль в разработке языка программирования C. Томпсон позже скажет, что язык C «вырос с одной из переписываний системы и, как таковой, он стал идеальным для написания систем ». [14]
В 1975 году Томпсон взял академический отпуск в Bell Labs и отправился в свою alma mater, Калифорнийский университет в Беркли. Там он помог установить версию 6 Unix на PDP-11/70 . Unix в Беркли позже стал поддерживаться как отдельная система, известная как Berkeley Software Distribution (BSD). [15]
В начале 1976 года Томпсон написал первоначальную версию Berkeley Pascal на кафедре компьютерных наук кафедры электротехники и компьютерных наук Калифорнийского университета в Беркли (с существенными изменениями и дополнениями, внесенными позднее в том же году Уильямом Джоем , Чарльзом Б. Хейли [16] [17] [18] и научным руководителем факультета Сьюзан Грэм ).
Томпсон написал шахматную программу под названием «шахматы» для первой версии Unix (1971). [19] Позже, вместе с Джозефом Кондоном , Томпсон создал аппаратно-управляемую программу Belle , чемпионский шахматный компьютер . [20] Он также написал программы для генерации полного перечисления шахматных окончаний, известных как endgame tablebases , для всех 4-, 5- и 6-фигурных окончаний, что позволяет шахматным компьютерным программам делать «идеальные» ходы, как только достигается позиция, сохраненная в них. Позже, с помощью эксперта по шахматным эндшпилям Джона Ройкрофта , Томпсон распространил свои первые результаты на CD-ROM . В 2001 году журнал ICGA Journal посвятил почти целый выпуск различным вкладам Томпсона в компьютерные шахматы. [19]
В 1983 году Томпсон и Ритчи совместно получили премию Тьюринга «за разработку теории общих операционных систем и, в частности, за реализацию операционной системы UNIX». В своей благодарственной речи «Размышления о доверии к доверию» он представил атаку на постоянный бэкдор компилятора , теперь известную как взлом Томпсона или атака на доверие к доверию, и широко считается основополагающей работой в области компьютерной безопасности сама по себе. [21] В 2023 году аннотированный исходный код бэкдора был опубликован в сети. [22] В конце благодарственной речи он раскритиковал положительное освещение журналистами хакеров , таких как 414 .
В течение 1980-х годов Томпсон и Ритчи продолжали пересматривать Research Unix, которая приняла кодовую базу BSD для 8-го, 9-го и 10-го изданий. В середине 1980-х годов в Bell Labs началась работа над новой операционной системой в качестве замены Unix. Томпсон сыграл важную роль в разработке и внедрении Plan 9 от Bell Labs , новой операционной системы, использующей принципы Unix, но применяющей их более широко ко всем основным системным средствам. Некоторые программы, которые были частью более поздних версий Research Unix, такие как mk и rc , также были включены в Plan 9.
Томпсон тестировал ранние версии языка программирования C++ для Бьярна Страуструпа , написав на нем программы, но позже отказался работать на C++ из-за частой несовместимости между версиями. В интервью 2009 года Томпсон выразил негативное мнение о C++, заявив: «Он делает много вещей наполовину хорошо, и это просто куча мусора из взаимоисключающих идей». [23]
В 1992 году Томпсон совместно с Робом Пайком разработал схему кодировки UTF-8 . [24] С тех пор UTF-8 стала доминирующей формой кодировки Unicode для Всемирной паутины , на долю которой в 2019 году пришлось более 90% всех веб-страниц. [25]
В 1990-х годах началась работа над операционной системой Inferno , еще одной исследовательской операционной системой, которая была основана на портативной виртуальной машине . Томпсон и Ритчи продолжили свое сотрудничество с Inferno вместе с другими исследователями из Bell Labs. [26]
В 1995 году Томпсон сотрудничал с Шоном Дорвардом в области компрессии музыки, основываясь на оригинальной исследовательской работе Джима Джонстона под руководством Джо Холла и Джонта Аллена. [27] [28]
В конце 2000 года Томпсон ушел из Bell Labs.
В 2004 году он помог реализовать Turochamp , шахматную программу, которую Алан Тьюринг разработал в 1948 году, еще до того, как появились компьютеры, способные ее выполнить. [29]
Он работал в Entrisphere, Inc. в качестве стипендиата до 2006 года. С 2024 года [обновлять]он работает в Google , сначала как выдающийся инженер, а затем как консультант Google. [30] Недавняя работа включала совместную разработку языка программирования Go . Ссылаясь на себя и других первоначальных авторов Go, он заявляет: [14]
Когда мы трое [Томпсон, Роб Пайк и Роберт Гриземер ] начали, это было чистое исследование. Мы трое собрались вместе и решили, что ненавидим C++. [смех] ... [Возвращаясь к Go] мы начали с идеи, что все трое должны быть вовлечены в каждую функцию языка, чтобы в язык не попадал никакой посторонний мусор по какой-либо причине.
В 1980 году Томпсон был избран в Национальную академию инженерии за «разработку UNIX — операционной системы, эффективность, широта, мощь и стиль которой стали руководством для целого поколения при эксплуатации мини-компьютеров ». [31] В 1985 году он был избран членом Национальной академии наук . [2]
В 1983 году Томпсон и Ритчи совместно получили премию Тьюринга «за разработку теории общих операционных систем и, в частности, за реализацию операционной системы UNIX». В своей благодарственной речи «Размышления о доверии к доверию» Томпсон описал атаку в виде бэкдора компилятора , которая была названа хаком Томпсона или атакой доверия к доверию , и широко считается основополагающей работой по компьютерной безопасности сама по себе. [32]
В 1990 году Томпсон и Деннис Ритчи получили медаль IEEE Ричарда В. Хэмминга от Института инженеров по электротехнике и электронике (IEEE) «за создание операционной системы UNIX и языка программирования C». [33]
В 1997 году Томпсон и Ритчи были избраны членами Музея компьютерной истории за «совместную разработку операционной системы UNIX и разработку языка программирования C». [34]
27 апреля 1999 года Томпсон и Ритчи совместно получили Национальную медаль за технологии 1998 года от президента Билла Клинтона за совместное изобретение операционной системы UNIX и языка программирования C, которые вместе «привели к колоссальному прогрессу в области компьютерного оборудования, программного обеспечения и сетевых систем и стимулировали рост целой отрасли, тем самым укрепив лидерство Америки в информационную эпоху». [35]
В 1999 году Институт инженеров электротехники и электроники выбрал Томпсона для получения первой премии Цутому Канаи «за его роль в создании операционной системы UNIX, которая на протяжении десятилетий была ключевой платформой для работы распределенных систем». [36]
В 2011 году Томпсон вместе с Деннисом Ритчи был удостоен Премии Японии в области информации и коммуникаций за новаторскую работу в разработке операционной системы Unix. [37]
Кен Томпсон женат и имеет сына. [38] [19]
Источники