Архитекторы компьютерного мира
Шрифт:
Нортон продолжает работать с программистами корпорации, но занимается в основном решением стратегических вопросов и уже подумывает уйти на покой и посвятить оставшуюся жизнь семье и различным хобби. Ему сегодня больше нравится придумывать новые названия для своих благотворительных проектов, чем разрабатывать программное обеспечение.
Нортон — большой любитель искусства и науки, и в 1989 году основал Семейный фонд Нортонов "Нортон Фемили Фаундейшн", который занимается тем, что вкладывает около 1,5 млн. долларов в год в различные гуманитарные проекты. Нортон часто помогает материально и другим фондам — борьбы со СПИДом, поддержки нищих, защиты одиноких людей. (Кстати, сам Питер познакомился в свое время с женой по объявлению в журнале.) Чета Нортонов также поддерживает финансами несколько музеев США. Журнал ARTNEWS включил Нортона в список 200 известнейших коллекционеров мира.
Питер Нортон — это имя, которое вошло в компьютерную
ЭДСГЕР ДЕЙКСТРА
"Смиренный" программист
Я прихожу к выводу, что возникает настоятельная необходимость перестать подходить к программированию с точки зрения минимизации коэффициента отношения стоимости к результату. Следует осознать, что даже теперь программирование в гораздо большей степени стало интеллектуальным состязанием: искусство программирования — это умение организовать сложную систему и управлять ее бесчисленными элементами, пресекая всеми силами присущую им тенденцию к изначальному хаосу.
Эдсгер Дейкстра
Один из тех людей, с именем которых связано превращение программирования из шаманства в науку, — Эдсгер Дейкстра. Профессиональный словарь программиста полон слов, введенных или предложенных Э. В. Дейкстрой, — "дисплей", "мертвая хватка", "семафор", "программирование с минимумом операторов go to", "структурное программирование". Однако его влияние на программирование является более всепроникающим. Ценнейший вклад Дейкстры — его стиль: подход к программированию как к высокому искусству и интеллектуальному творчеству, настойчивые требования и практическая демонстрация того, что программы должны быть с самого начала правильно составлены, а не просто отлаживаться до тех пор, пока не станут правильными; ясное понимание того, какие проблемы лежат в основе программирования. Во всех своих исследованиях Дейкстра придает большое значение простоте и изяществу математических рассуждений. При написании своих работ он создал новый стиль научных и технических сообщений, который можно описать как нечто среднее между журнальными публикациями и дружеской перепиской.
Эдсгер Вайб Дейкстра родился в Роттердаме (Голландия) в 1930 году. Его родители принадлежали к интеллигенции и были хорошо образованными людьми: отец был химиком, а мать — математиком. В 1942 году в возрасте 12 лет Дейкстра поступил в гимназию Эрасминиум — школу для особо одаренных детей, где преподавался ряд разнообразных предметов, в том числе греческий, латынь, французский, немецкий и английский языки, биология, математика и химия.
В 1945 году Дейкстра подумал, что он мог бы изучать право и, возможно, работать в качестве представителя Нидерландов в ООН. Однако, вследствие его успехов в изучении химии, математики и физики, он поступил в университет Лейдена, где решил заняться теоретической физикой. В 1951 году он посещал летнюю школу по программированию в Кембриджском университете.
Вследствие длинной череды совпадений Дейкстра официально стал программистом первым весенним утром 1952 года и был первым голландцем, начавшим заниматься этим в своей стране. Он стал работать в качестве совместителя в Математическом центре в Амстердаме. После того как он прозанимался программированием где-то около трех лет, у него состоялась важная беседа с ван Вейнгаарденом, который был тогда его руководителем в Математическом центре. Дело в том, что Дейкстра параллельно изучал теоретическую физику в Лейденском университете, но совмещать эти два занятия становилось все труднее, и ему надо было сделать выбор — либо прекратить программировать и стать настоящим физиком, либо стать… кем же? Программистом? Но разве это респектабельная профессия? Однажды Дейкстра постучал в дверь кабинета ван Вейнгаардена и, когда, несколько часов спустя, покидал его кабинет, он чувствовал себя абсолютно другим человеком. Терпеливо выслушав, что беспокоит Дейкстра, ван Вейнгаардена согласился, что в настоящее время есть не так уж много вещей, которые можно было бы отнести к дисциплине программирования, но затем он спокойно продолжал объяснять, что автоматические вычисления машины — не кратковременная мода, за ними будущее, что мы находимся у самых истоков и — как знать? — может быть, именно Дейкстра призван превратить программирование в почетную научную дисциплину. Это был поворотный
момент всей жизни Эдсгера Дейкстра, и он как можно быстрее прошел все курсы, требующиеся для получения диплома в области теоретической физики, и начал заниматься программированием.Однако одной из проблем, с которой он столкнулся, было то, что к тому времени программирование еще не было официально признано профессией. (Когда он подавал документы для регистрации брака в 1957 году, ему пришлось написать в качестве своей профессии "физик-теоретик".) Все первые автоматические электронные компьютеры были уникальными, построенными в единственном экземпляре машинами, очень громоздкими и действительно фантастическими. Поэтому несчастных программистов едва замечали. По мере того как мощность машин возросла более чем в тысячу раз, честолюбивые замыслы общества, связанные с применением этих машин, росли в той же пропорции, и именно несчастный программист обнаружил, что его работа оказалась в поле зрения между целями и средствами. Тогда, в середине 60-х годов, случилось нечто ужасное: появились компьютеры так называемого третьего поколения. Когда о таких ЭВМ было объявлено и стали известны их функциональные спецификации, многим из программистов стало не по себе; по крайней мере, такое чувство возникло у Эдсгера Дейкстра. Было естественно ожидать, что такие вычислительные машины хлынут потоком на компьютерный рынок, и следовало ожидать, что их организация будет более разумной. Но проект содержал такие серьезные ошибки, что Дейкстра почувствовал, что одним ударом прогресс в информатике был заторможен по меньшей мере лет на десять. Это была самая черная неделя во всей его профессиональной карьере. Вот, что говорил он по этому поводу: "Быть может, печальнее всего то, что после всех этих лет разочаровывающего опыта многие все еще честно верят в то, что в силу некоторого закона природы машины должны быть именно такими".
Причиной, по которой Дейкстра уделил столько внимания аппаратной части, было ощущение, что одним из наиболее важных аспектов любого вычислительного устройства является его влияние на способ мышления тех. кто его использует.
Когда была создана машина EDSAC в Кембридже, Дейкстра считал очень примечательным, что с самого начала понятие библиотеки подпрограмм играло центральную роль в конструкции этой машины и способе, которым она должна была использоваться. Много лет спустя в своей статье он выделяет четыре самые крупные изобретения в области программного обеспечения.
Одним из величайших изобретений, он считал, является замкнутая подпрограмма, которая воплощает одну из фундаментальных абстракций. Вторым крупным достижением в области программного обеспечения Дейкстра называл рождение FORTRAN. Это был чрезвычайно смелый проект, который должен оцениваться как успешная методика программирования, но с очень ограниченным числом средств поддержки основной концепции. В наши дни этот язык считают устаревшим. Трагическая судьба FORTRAN — следствие его широкого признания, приковавшего мышление тысяч и тысяч программистов к прошлым ошибкам.
Третьим проектом, о котором упоминает Дейкстра, является LISP. На использовании LISP основаны многие в некотором смысле наиболее изощренные программные продукты. В шутку LISP описывался как "наиболее интеллигентный способ злоупотребления компьютером". Дейкстра считал, что подобная характеристика является большим комплиментом, поскольку она передает всю полноту освобождения: LISP помогает многим из наиболее одаренных программистов мыслить о вещах, ранее считавшихся немыслимыми.
Четвертым проектом был ALGOL-60. В то время как определение LISP до сих пор остается причудливой мешаниной из того, что язык означает, и того, как он работает, знаменитое "Сообщение об алгоритмическом языке ALGOL-60" является плодом подлинных усилий перейти на следующий уровень абстрактности и определить язык программирования способом, не зависящим от его реализации.
Это все было в прошлом. Однажды Дейкстра набросал один из вариантов будущего развития программного обеспечения. "Картина такова, что еще до завершения семидесятых мы сможем изобрести и реализовать системы такого рода, которые сейчас находятся на пределе наших возможностей программировать, и затратить на них лишь несколько процентов тех усилий, которых они требуют ныне, и, кроме того, эти системы будут практически свободными от ошибок. Такая решительная перемена за такой короткий период времени была бы революцией. Но на сколько вероятно, что эта революция произойдет? По-видимому, надо, чтобы выполнились три основных условия. Весь мир должен признать необходимость перемены; во- вторых, экономическая необходимость этой перемены должна быть достаточно сильной; и, в-третьих, эта перемена должна быть технически выполнимой". Поворотной точкой была Конференция по технике программного обеспечения в Гармише в октябре 1968 года. Эта конференция стала сенсационной, когда на ней впервые был открыто признан кризис программного обеспечения. Поэтому первое условие Дейкстра считал выполненным.