Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/OS/Unix/F19821020Elc063.shtml

Премия 1982 г. «За достижения»

УДК 621.3.049.771.14

Альфред Розенблат
Заместитель главного редактора

Alfred Rosenblatt. 1982 award for achievement, pp. 108—111.

Редакция журнала Electronics присудила премию «За достижения» 1982г. сотрудникам фирмы Bell Labs Кеннету Томпсону и Деннису. М. Ритчи, которые разработали язык программирования С и операционную систему Unix. Эти программные средства открыли возможности эффективного программирования и нашли сейчас широкое распространение.

В 1982г. премия журнала Electronics «За достижения» впервые за девять лет (с момента ее учреждения) присуждена специалистам, которые внесли заметный вклад в область программных средств, а не аппаратуры и технологии. Кен Томпсон и Деннис М. Ритчи, сотрудники научно-исследовательского центра вычислительной техники фирмы Bell Laboratories (Марри-Хилл, шт.Нью-Джерси), были удостоены этой премии за разработку операционной системы Unix и высокоуровневого языка программирования С, на котором эта система написана. Такое сочетание программных средств оказалось весьма эффективным и в существенной степени отразилось на применении самых разнообразных вычислительных машин — от микрокомпьютеров до крупных ЭВМ. По мнению редакторов журнала Electronics, язык С и операционная система Unix столь значительно стимулировали развитие вычислительной техники, что их создатели, несомненно, заслужили быть отмеченными в анналах истории техники.

Операционная система Unix — это набор программ, которые обеспечивают управление аппаратными устройствами и программными средствами, составляющими ЭВМ; эта система считается сейчас одной из наиболее мощных существующих операционных систем, особенно для микро- и мини-компьютеров. Поскольку система разрабатывалась не для какого-то конкретного компьютера, она является практически машинно-независимой, и ее можно приспосабливать для различных компьютеров при минимуме доработок. Она рассчитана на обеспечение нужд многих пользователей, которые могут, используя ОС Unix, получать в каждый момент доступ в диалоговом режиме более чем к одной программе; кроме того, она автоматически управляет системными файлами. Хотя эта система не считается самой эффективной, она предоставляет все необходимые возможности, обеспечивающие легкость прикладного программирования.

По состоянию на 1 июня 1982г. фирма American Telephone & Telegraph Corp. продала 1654 лицензии на операционную систему Unix, причем почти 8 тыс. систем было реально поставлено,— а это удивительные цифры для программного изделия, которое фирма AT&T практически не рекламирует, а просто продает по запросам, без всякого сопровождения и гарантий. Стоимость коммерческих лицензий лежит в диапазоне от 20 тыс. до 43 тыс. долл. в зависимости от версии, причем, хотя заказчикам приходится самим посылать запросы в фирму AT&T на получение операционной системы, они проявляют очень большую активность.

Кроме того, как сообщает информационная служба по ОС Unix фирмы — исследователя рыночных тенденций Gnostic Concepts (Менло-Парк, шт.Калифорния), к 1985г. ежегодный объем поставок вычислительных машин с ОС Unix, как ожидается, превысит 100 тыс. шт. По мнению фирмы, в 1985г. конечные пользователи в США затратят на машины с операционной системой Unix и связанные с ней программные средства, сопровождение и дополнительные поставки (главным образом для мини- и микрокомпьютеров) 5,1 млрд. долл.

Создание столь удачной системы, какой оказалась ОС Unix, чаще всего является результатом хорошо продуманного и успешно выполненного плана, цель которого — выполнение четко определенных требований. Однако, как говорит Ритчи, «здесь было все по-другому». Фактически разработка операционной системы для многоабонентской и многопрограммной работы была явно темой низкого приоритета в фирме Bell Labs, когда Томпсон начал работу над ней в 1969г. Как указал Ритчи в своей статье в журнале Bell Systems Technical Journal (номер за июль-август 1978г.), если считать, что ОС Unix разрабатывалась для удовлетворения какой-то конкретной потребности, то это (по мнению ее основного разработчика Кена Томпсона, а вскоре после ее появления и Ритчи) потребность в организации удобного аппарата для написания и использования программ».

Свобода действий. Операционную систему Unix удалось создать, поскольку блестящим специалистам с нестандартным мышлением, которые занимались исследованиями в области программных средств, были предоставлены возможности следовать своим интересам и своей интуиции. С первого взгляда на рабочее место Томпсона и Ритчи на верхнем этаже корпуса 2 в Марри-Хилле видно, что они и их группа работают в режиме, совершенно не похожем на обычный режим фирмы. Как правило, здесь ходят в джинсах, спортивных рубашках-майках и теннисных туфлях, а рабочие часы не регламентированы. Томпсон и Ритчи зачастую работают не в лаборатории, а дома, где у обоих установлены компьютерные терминалы.

Ритчи говорит, что он фактически относится к категории «сов», причем дома работает гораздо продуктивнее, «поскольку в лаборатории слишком много отвлекающих факторов — правда, большинство из них я нахожу сам. Я все утро или полдня провожу, беседуя с людьми относительно различных проблем: выслушиваю, какие существуют трудности, обдумываю их, собираю мнения, а затем вечером думаю о том, как решить их». Стиль работы Томпсона еще более необычен — известно, что он может работать непрерывно по 30 ч.

Томпсону 39 лет, он женат, у него 13-летний сын. Он родился в Новом Орлеане, но в детстве жил в различных местах, поскольку его отец служил в ВМС. Учась в средней школе в Италии, он научился свободно говорить на неаполитанском жаргоне.

Ритчи уроженец Бронксвилла (шт.Нью-Йорк), ему 41 год, он холост, всю жизнь прожил на Северо-востоке.

Оба разработчика пришли в лабораторию приблизительно в одно время: Томпсон в 1966 г., после окончания Калифорнийского университета в Беркли со степенью магистра по электротехнике, а Ритчи в 1967г., после восьми лет учебы в Гарвардском университете, где «почти» получил степень доктора.

Оба в течение длительного времени интересуются вычислительной техникой. Томпсон рассматривает свою степень магистра по электротехнике как «дань времени». В те времена вычислительная техника только начинала отделяться от других факультетов, где была одной из неосновных дисциплин. В Беркли это был факультет электротехники. Мне было достаточно интересно изучать различные схемы по электричеству, однако главным всегда было программирование и программное обеспечение». Ритчи также пришел к вычислительной технике после защиты диссертации по прикладной математике, более конкретно — по теории рекурсивных функций.

В фирме Bell Labs оба специалиста с увлечением занялись работой над проектом под названием Multics (многоабонентская информационно-вычислительная служба) — это система разделения времени, имеющая весьма любопытную историю. Разработанная в конце 1960-х годов фирмой General Electric Co. и Массачусетским технологическим институтом с ориентацией на крупные компьютеры фирмы Honeywell Inc. (сейчас фирма Honeywell предлагает эту систему на продажу), система Multics в конце концов оказалась для фирмы Bell слишком дорогой и, как считала ее администрация, неудачной. Однако нынешние лауреаты придерживались другого мнения.

Трудности. «Система Multics была довольно удачной как исследовательский проект в области операционных систем,— говорит Ритчи.— Однако она оказалась дорогой игрушкой для лаборатории, поскольку ее продавали как систему для реальных вычислительных работ, а не просто как средство для научных экспериментов».

И вдруг после примерно четырех лет работы над проектом фирма Bell Labs в 1969г. бросила систему Multics, оставив заинтересованную пару научных сотрудников в подвешенном состоянии. Томпсон, которому тогда было 27 лет, тяжело переживал сложившуюся ситуацию. «Тогда осталась возможность работать на Фортране в пакетном режиме и практически ничего другого»,— говорит он, поскольку после неудачного опыта с системой Multics лаборатория решила просто покупать машинное время вычислительных центров на коммерческих началах или операционные системы, сопровождение которых обеспечивали бы их изготовители.

«Мне хотелось разработать собственную операционную систему,— говорит Томпсон. — Я писал программы и мне нужны были какие-то аппаратные средства, которые упростили бы создание системы. Здесь не было никакой определенности, поэтому мы (сотрудники научно-исследовательской группы по вычислительной технике) выдвинули некоторые предложения по приобретению машин для этой цели, однако нам отказали».

Чтобы не бросать начатого дела, Томпсон сам проявил инициативу в поисках каких-либо возможностей и обнаружил устаревшую списанную вычислительную машину PDP-7 фирмы Digital Equipment Corp., которая содержала все средства, необходимые для реализации операционной системы. Томпсону удалось восстановить работоспособность очень высокоскоростного дискового накопителя и двух терминалов — графического дисплея и телетайпа,— так что получилась система разделения времени на два абонента, позволившая проверить в работе файловую подсистему, которую Томпсон и его коллега разработали на бумаге. Таким образом, как плод неугомонного интеллекта родилась одноабонентская многопрограммная система Unix; это наименование Томпсон, отличающийся оригинальным складом ума, присвоил ей по аналогии с Multics, но с использованием суффикса ix вместо ics.

Эта разработка привлекла к Томпсону внимание его коллег в научно-исследовательском отделе. «Именно тогда подключились к работе Деннис Ритчи и другие сотрудники»,— вспоминает Томпсон. Прошло еще два года, и Томпсон оказался готовым к переходу на более крупную машину. Он настроился было на ЭВМ PDP-11, однако в лаборатории еще не было условий, чтобы оперировать такими терминами, как «операционная система» и «разделение времени» для характеристики научно-исследовательской и опытно-конструкторской работ. Поэтому Томпсон и его друзья, когда они случайно узнали, что патентный отдел фирмы подыскивает систему обработки текста, быстро подготовили предложение о создании системы, которую сегодня назвали бы системой для автоматизации учрежденческих и конторских работ, «хотя такое наименование еще не было придумано,— говорит Томпсон. — Мы назвали ее системой редактирования для конторских задач, этот замаскированный вариант системы, которую мы реально хотели сделать, был утвержден, и мы получили ЭВМ PDP-11».

Правда, оказалось, что они получили аппаратные средства и весьма скудное программное обеспечение. «Машина почти не имела программного обеспечения — только некоторые диагностические средства, но никаких системных программ,— вспоминает он. — Впоследствии фирма DEC разработала многоабонентский интерпретатор RSTS, ориентированный на язык Бейсик. Этот интерпретатор был совершенно не приспособлен для создания новых языков программирования и выполнения на машинах тех работ, которые мы планировали,— т.е. для написания программ, а не перемножения чисел».

В конце концов патентный отдел принял у Томпсона систему, реализованную на ЭВМ PDP-11, так что он получил возможность купить более мощную машину PDP-11/20 и устройство управления памятью PDP-10. В это время в различных филиалах фирмы Bell Systems начали появляться разнообразные задачи, связанные с применением компьютеров, как правило, для регистрационных целей или составления отчетов с указанием узких мест. Здесь обычно требовался какой-либо вариант режима многопрограммной работы или разделения времени, так что пользователи независимо выбирали ЭВМ PDP-11 для выполнения ряда работ, поскольку, как говорит Томпсон, «она имела много хороших внешних устройств, была надежной, небольшой по габаритам и дешевой — т.е. являлась типичным решением проблемы с точки зрения аппаратных средств. Когда пользователям не удавалось обеспечить необходимую эффективность, используя программное обеспечение фирмы DEC, они начинали консультироваться с другими пользователями, узнавали о существовании операционной системы Unix и неизменно переходили на эту систему».

Таким образом, система Unix начала широко применяться в рамках фирмы Bell, а затем выявилась необходимость, как говорит Томпсон, ее полной переработки. В систему приходилось вводить средства для работы с гораздо большим количеством терминалов, чем первоначально считалось необходимым, «причем по возможности без больших затрат труда и без написания своих системных программ для каждой конфигурации. С нашей стороны это решение было продиктовано здравым смыслом: мы слишком много времени тратили на консультации по телефону».

До создания языка С. Что касается языка, на котором была написана операционная система Unix, то Томпсон начал писать ее на Фортране; но здесь сложилась ситуация, о которой он юворит следующее: «Мне не хватало самодисциплины. Когда при написании системных программ выяснялось, что Фортран накладывает различные ограничения, я несколько ослаблял их, и в конце концов стало очевидным, что это уже не Фортран. Я назвал его языком В. Это был по сути интерпретатор».

Вскоре после этого Ритчи взял промежуточный язык этого интерпретатора и разработал машинный язык для крупного компьютера фирмы Honeywell, поскольку, как отмечает Томпсон, группа с самого начала уделяла большое внимание транспортабельности программ. Ритчи написал компилятор для ЭВМ PDP-11, а затем для машины фирмы Honeywell. После этого он переписал его и ввел средства структурного программирования, и эта система получила наименование языка С. «С этого момента главным разработчиком языка стал Деннис»,— говорит Томпсон, а в 1973г. на язык С было переписано ядро операционной системы Unix вместе с программами-утилитами.

Язык С — это гибкий язык программирования высокого уровня, в нем сочетаются мощные логические инструкции и возможность индивидуально обрабатывать биты и знаки данных. Программисту легче освоить работу на этом языке, чем на языке ассемблера, на котором обычно пишутся операционные системы. «Это было принципиальное и радикальное решение — написать операционную систему на высокоуровневом языке для малого компьютера,— говорит Томвсон. — Раньше считалось, что для операционной системы необходим эффективный машинный язык. А нам сейчас стало ясно, что это вовсе не так».

При написании следующей версии системы Unix Томпсон ориентировался на машину, которая существенно отличалась от ЭВМ PDP-11,— на 32-разрядный компьютер 8/32 фирмы Interdata (несколько лет назад эта фирма была куплена корпорацией Perkin-Elmer Corp., Норуолк, шт.Коннектикут). «Мы поняли, что написание операционной системы на языке высокого уровня обеспечивает возможность переносить ее на другие машины»,— говорит Ритчи.

Это было сделано следующим образом: разработчики проанализировали ядро операционной системы Unix — ту часть системы, которая управляет работой компьютера и его периферийных устройств,— выявили части, реализованные применительно к PDP-11, и переписали их, чтобы сделать машинно-независимыми. По словам Томпсона, удалось подавляющую часть операционной системы, примерно 90%, сделать независимой от конкретной машины. «Это вся файловая подсистема, организация очередей для обращения к дисковым накопителям, распределение памяти, в общем почти все, кроме фактического взаимодействия с устройствами ввода-вывода».

Чтобы упорядочить остающиеся 10% программного кода, разработчики создали новые типы и концепции для параметров — например, адресов памяти или способа выражения времени суток,— которые меняются в зависимости от конкретной машины. Благодаря этому изменения спецификации осуществляются довольно легко.

Полученные результаты оказались исключительно удачными. Ритчи указывает, что система Unix — это операционная система, которая наиболее широко применяется на различных вычислительных машинах. Она используется на мини-компьютере VAX фирмы DEC, микропроцессорах 68000 и 8086, а также в двух версиях на крупных компьютерах «Системы 370» фирмы IBM. По оценке Ритчи, вместо обычных человеко-лет, требующихся для переноса операционной системы на новый компьютер, систему Unix можно подготовить для демонстрации работоспособности всего лишь за три человеко-месяца.

Фактически программистам нравится работать с ОС Unix, по-видимому, именно потому, что она написана на языке С. «Система Unix и язык С начали использоваться сразу же по мере их разработки,— указывает Ритчи. — Здесь не было такой достаточно типичной ситуации, когда программист сидит и говорит: «Итак, вот спецификация, сделаем-ка программу, а затем, в случае чего, переделаем». Все, что мы делали, было вызвано явной необходимостью. В частности, в обоих случаях при разработке интерфейса с пользователем мы выбирали решения, которые были бы удобны для нас самих.

Одна из положительных сторон подобного подхода к разработке заключается в том, что Кен благодаря своей интуиции и квалификации мог достаточно четко решать возникающие проблемы. Система Unix достаточно проста, так что любой грамотный программист может полностью разобраться в том, каким образом она построена. То же самое справедливо и для языка С. Это язык, разработанный с четкими прагматическими целями».

По мнению Томпсона, многим операционным системам по-прежнему не хватает некоторых концепций, реализованных в Unix. Он отмечает, в частности, иерархическую файловую систему — для нее характерно использование одного и того же базового интерфейса при работе с файлами и устройствами. Программы-утилиты могут взаимодействовать как с файлами, так и с устройствами, а это означает, что они существенно упрощаются. Кроме того, существует бесформатный интерфейс с файловой подсистемой. «Наши файлы,— это строки байтов, заканчивающиеся десятичной точкой,— говорит Томпсон.— Здесь нет множества необязательных вещей, которые вы должны точно оговаривать. Бесформатные файлы и все остальные связанные с ними механизмы означают, что выходные данные любой программы можно использовать в качестве входных данных для любой другой программы». Эта последняя концепция получила название программных каналов.

Однако и Томпсон и Ритчи опасаются, что такой успех системы Unix может нести в себе также зародыш ее гибели. В настоящее время систему Unix можно получить из нескольких источников, причем получаемые версии системы начинают все сильнее различаться и становятся несовместимыми. Несколько версий существует в фирме Bell Systems, в Калифорнийском университете (Беркли) имеется собственная версия BSD4, разработаны и некоторые другие версии. «Поскольку одним из главных интересующих нас факторов является мобильность операционной системы, существование различных версий вполне может оказаться препятствием к достижению этой цели»,— замечает Ритчи.

Что касается будущего, то Ритчи с исключительным упорством и настойчивостью выискивает слабые места системы Unix, вносит необходимые модификации, перерабатывает различные подпрограммы, чтобы обеспечить более простое взаимодействие с терминалами и вычислительными сетями. Он интересуется также распределенными вычислениями и стремится обеспечить более простую реализацию распределенной обработки данных при помощи системы Unix.

Томпсон также сейчас работает над сетевыми программными средствами, а вторым его любимым направлением являются компьютеры, играющие в шахматы,— вместе со своим коллегой Джозефом Кондоном он разработал и собрал машину Belle, которая играет в шахматы с другими машинами и является трехкратным чемпионом США по шахматам среди компьютеров.

Дочерние статьи:

Премия "За достижения" 1982г

Выходные данные:

Журнал "Электроника" том 55, No.21 (651), 1982г - пер. с англ. М.: Мир, 1982, стр.110

Electronics Vol.55 No.21 October 20, 1982 A McGraw-Hill Publication

Раздел: ДОСТИЖЕНИЯ И ПЕРСПЕКТИВЫ РАЗВИТИЯ ЭЛЕКТРОННОЙ ТЕХНИКИ

Тема:     Люди и техника





Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/OS/Unix/F19821020Elc063.shtml