Вход   Регистрация
Рекомендуемое

Инженерия зодчества: от железа к софту. Часть 2

Какое отношение этот исторический экскурс имеет к Никлаусу Вирту? Самое непосредственное.

Эдсгер Дейкстра и Никлаус Вирт были технарями и отлично знали то, поверх чего и на чём конкретно работают создаваемые программы. Напомню, что Дейкстра в 1956 г. окончил факультет теоретической физики Лейденского университета (Universiteit Leiden), старейшего в Нидерландах. Он досконально знал мэйнфрейм Electrologica X8, на котором реализовывал свою знаменитую операционную систему THE OS (1965-1968), а также изучил всю линейку компьютеров Burroughs (B5000/B5500/B6500/B6700/B7700). В Burroughs Corporation Эдсгер Дейкстра проработал с 1973 по 1984 гг.

Никлаус Вирт окончил в 1954 г. факультет электроники в ETH Zurich (по специальности electrical engineering). С раннего детства его увлекала сложная техника — поезда, самолёты, авиамоделизм. В 1949 г. он даже выступал в Великобритании за национальную команду Швейцарии в международных соревнованиях по авиамоделизму. Новейшая английская электроника для дистанционного управления моделями была для него мощным стимулом для интеллектуального развития. 

Сентябрь 2005. Центральный музей ВВС в Монино. Никлаус Вирт
Сентябрь 2005. Центральный музей ВВС в Монино

Вспоминаю, как он восторгался богатейшей коллекцией советской авиационной техники, представленной в Центральном музее ВВС в Монино, куда в сентябре 2005 г. его и Юрга Гуткнехта удалось отвезти на масштабную экскурсию. Никлаус Вирт стоял у истоков беспилотной авиации. Неудивительно, что его языки помимо автоматизации Швейцарских федеральных железных дорог (SBB-CFF-FFS) активно использовались для разработки бортового программного обеспечения как наших спутников (Modula-2; «Информационные спутниковые системы им. академика М. Ф. Решетнёва», Красноярск), так и некоторых моделей БПЛА. 

В стенах ETH Zurich он имел доступ к немецким компьютерам Z4 и Z11 Конрада Цузе. В Университете Калифорнии в Беркли работал на американском компьютере Bendix G-15, созданном под влиянием британского ACE (Automatic Computing Engine) Алана Тьюринга. В Стэнфордском университете основным у него был мэйнфрейм IBM System/360, на котором экспериментировал с языком и компилятором Algol-W.

Октябрь 2006. ETH Zurich. Карл-Август Зендер и Никлаус Вирт. Рядом с компьютером Lilith
ETH Zurich. Проф. Никлаус Вирт

Будучи блестящим знатоком современных промышленных и исследовательских компьютеров и процессорных архитектур с середины 1970-х годов проф. Вирт начал создавать собственное железо: так появились 16-разрядный настольный компьютер Lilith (Modula-2, Medos, процессор AMD2901 компании Advanced MicroDevices) и 32-разрядная рабочая станция Ceres (Oberon, Oberon System, процессор NS32032 компании National Semiconductor). Компьютер Lilith в Советском Союзе послужил прототипом, основой разработки 32-разрядного семейства Kronos (Modula-2, операционная система Excelsior). Работы велись во второй половине 1980-х годов в Новосибирском Академгородке (ВЦ СО АН СССР) под руководством В. Е. Котова. Ведущие разработчики: Д. Н. Кузнецов, А. Е. Недоря, Е. В. Тарасов, В. Э. Филиппов. На основе работ этого коллектива в 1990 г. был образован Институт систем информатики им. А. П. Ершова СО РАН (ИСИ СО РАН). В 2005 г. свой личный экземпляр Lilith Никлаус Вирт передал в дар Политехническому музею. А. Е. Недоря и В. Э. Филиппов подарили музею рабочую станцию «Кронос-2.6WS». Причём именно тот экземпляр, который в НПО ПМ им. М. Ф. Решетнёва использовался в 1990-х годах в качестве инструментальной машины для создания бортового программного обеспечения для российских спутников. Другие экземпляры отечественного технологического чуда находятся теперь в стенах Музея науки в Лондоне (Science Museum), в Музее Сибирского отделения РАН, в НГУ и в ИСИ СО РАН. 

Никлаус Вирт не боялся всё делать с нуля. Невольно вспоминается недостижимый ныне универсализм титанов классической музыки: Иоганн Себастьян Бах был не только гениальным композитором, непревзойдённым архитектором выверенных музыкальных конструкций, вдохновенным капельмейстером, виртуозным органистом, но и своими руками создавал и настраивал установленные в немецких готических храмах гигантские органы.

Приведу небольшую выдержку из книги известного советского математика, одного из зачинателей отечественного программирования Александра Семёновича Кронрода «Беседы о программировании» (1963). Она во многом разъясняет скрытую мотивацию проф. Вирта: «Пусть нам нужно выкопать большой канал. С чего стоит начать? Первое, что приходит в голову, — взять лопаты и копать. И, если не думать, что можно построить экскаватор, то чем скорее возьмешь лопату и чем энергичнее станешь ею действовать, — тем быстрее и глубже будет твоя канава. Ну, а если поверить, что экскаватор построить всё-таки можно? Тогда, пожалуй, стоит повременить с лопатой. И как можно энергичнее заняться экскаватором. Особенно, если копать лопатой и строить экскаватор должны одни и те же люди. И, конечно, если канава не нужна немедленно и непосредственно, во имя спасения жизни».

21 сентября 2005 г. Москва. Политехнический музей. Алексей Недоря, Никлаус Вирт и Владимир Филиппов

Раз уж зашла речь о генезисе, о корнях ментальности Никлауса Вирта, стоит привести здесь и краткую биографическую справку.

Его альма-матер — Высшая Политехническая школа ETH Zurich, где учились Альберт Эйнштейн (1896) и Джон фон Нейман (1923). Именно туда он поступил на факультет электроники в 1954 г. Далее после получения степени бакалавра (electrical engineering) — в 1958 г. переезд по совету отца в Канаду, в Лавальский университет Квебека, где становится магистром. Научную карьеру (PhD, язык Euler) продолжил в университете Калифорнии в Беркли (1960-1963) под руководством Гарри Хаски, сподвижника Алана Тьюринга по созданию компьютера ACE. Затем работал доцентом в Стэнфордском университете (1963-1967), где дорабатывал Euler и создавал язык Algol-W, после чего вернулся в 1967 г. в родную Швейцарию и основал там свою школу программирования в стенах ETH. Долгие годы возглавлял Институт компьютерных систем при ETH. Оставался профессором ETH вплоть до 1999 г.

Среди учителей и наставников Никлауса Вирта — президент международной ассоциации IFIP Амброз Спайзер (Ambros Speiser) в ETH Zurich (Швейцария), президент американской ассоциации ACM Гарри Хаски (Harry Huskey) в University of California, Berkeley (США), а также директор Mathematisch Centrum Адриан ван Вейнгаарден (Aadrian van Wijngaarden) в University of Amsterdam (Нидерланды).

Важную роль в разработке его языков сыграли научные стажировки в Xerox Palo Alto Research Center (Xerox PARC): 1976-1977 (Modula-2 под влиянием Mesa) и 1984-1985 (Oberon под влиянием Cedar). Весьма продуктивным оказалось и его сотрудничество с IBM Zurich Research Laboratory (Мартин Рейзер).

Вспомним доминантные универсальные языки программирования и те компании, которые вносили решающий вклад в их продвижение: Fortran (IBM), PL/I (IBM), Basic (Microsoft), Pascal (Borland), C++ (Microsoft), Java (Sun Microsystems), C# (Microsoft). Особняком стоит язык C. Он проникал в индустрию через разные диалекты UNIX, его продвигали на рынок сразу несколько компаний и здесь трудно кому-то отдать предпочтение.

Мир науки и мир бизнеса активно пересекались и сталкивались. Но интересы их всё больше расходились. Переломным в программировании стал 1968 г. На конференции NATO по программной инженерии в Гармиш-Партенкирхене (Германия) в октябре 1968 г. Фридрих Бауэр, профессор Технического университета Мюнхена, ввёл в обиход термин «кризис программного обеспечения». Его подхватил и Эдсгер Дейкстра. Спустя несколько лет вовсю заговорили о программировании в малом (programming-in-the-small) и программировании в большом (programming-in-the-large).

Это переосмысление сути программирования неизбежно отразилось и на языках. При этом академизм стал всё чаще противопоставляться прагматизму.

Никлаус Вирт заложил традицию присвоения языкам программирования имён выдающихся математиков прошлого. В 1963 г. он дал имя Леонарда Эйлера, великого швейцарского математика, основателя русской математической школы, своему первому творению — языку Euler. А в 1970 г. Блез Паскаль, великий французский математик и философ, творчеством которого восхищались Н. Г. Чернышевский и Л. Н. Толстой, был увековечен проф. Виртом в языке Pascal. 

Генеалогия языков / "Технология программирования" (1995, #1)

Язык Euler (1963) — расширение и обобщение языка Algol-60, поддерживающее динамическую типизацию. Это одно из ранних архитектурных творений Никлауса Вирта, которым так восхищался Алан Кей, отец-основатель объектно-ориентированного программирования (ООП), автор языка и системы Smalltalk. Сам же Вирт спустя годы сдержанно-скептически относился к своему творению. И похоже считал его тупиковой ветвью в своей научной карьере. Что вполне объяснимо выбранными приоритетами — смиренный классицизм программной архитектуры, контроль инженерной надёжности для проф. Вирта куда важнее кружевной барочности фонтанирующего произвола безудержной мысли. Именно смиренный классицизм позволяет эффективно бороться с всё возрастающей сложностью.

В 2005 г. мне довелось пообщаться с Леоном Кацнельсоном, директором IBM по конкурентным технологиям при департаменте информационного управления. Тогда я упомянул о работе Пола Хорна (главный вице-президент IBM Research) по автономному компьютингу. В ней высказывается следующая мысль: сложность современных ИТ-систем — это серьёзный вызов. Как это ни парадоксально, чтобы избежать сложности, утверждает Хорн, надо делать ещё более сложные системы. Т. е. сложность преодолевается через сложность. Хорн подчёркивает, что следуя принципам автономного компьютинга, надо системы ещё более усложнять, но внедрять при этом элементы адаптивности. Кацнельсон отреагировал на мысль Хорна весьма дипломатично, сохранив парадоксальность: «Чем сложнее система, тем больше необходимость её упрощать. При этом сам процесс упрощения ещё больше усложняет эти системы».

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

Руслан Богатырев из цикла "Никлаус Вирт. Заветы смиренного зодчего".