Наука — Школе |
Весьма любопытны обстоятельства, приведшие Н.Вирта к программированию для электронных вычислительных машин, и существенно повлиявшие на его философию проектирования языков программирования.
В юности Клаус серьезно увлекался авиамоделированием, самостоятельно спроектировав и построив больше 20 моделей. Он был в числе первых трех цюрихских авиамоделистов, выписавших из Англии в 1952 г. радиокомплекты для дистанционного управления. Электроника оказалась ненадежной, и Клаусу пришлось с ней разбираться, что и привело его в 1954 г. на факультет электротехники знаменитого цюрихского университета ETH. В 50-х гг. развитие электронной вычислительной техники проходило в лоне электротехники с участием математиков в качестве консультантов и программистов (фон Нейман, Тьюринг и др.). Оценив потенциал программируемых управляющих устройств на основе электронных вычислительных машин, начинающий ученый окончательно занялся проблемой создания для них программного обеспечения, находившейся тогда в зародыше.
Однако интерес к авиации не пропал. Во время стажировок в США Н.Вирт занимался авиаспортом: ощущения пилота, выполняющего мертвую петлю или бочку, ему хорошо знакомы. Вершина его авиадостижений — ускорения до 5.5G, испытанные им во время пилотирования (в качестве второго пилота) сверхзвукового истребителя F-5 Tiger; см. снимки справа, сделанные за несколько минут перед стартом в мае 2000 г.
Во всех проектах Н.Вирта прослеживается влияние его интереса к встроенным системам управления: пожалуй, именно жесткие требования на надежность таких систем с самого начала предопределили философию Н.Вирта в отношении программирования — задолго до того, как требование безопасности программного обеспечения было осознано как критически важное для, скажем, офисных программ. Кстати говоря, классическим и самым распространенным методом атаки в Интернете является т. наз. "переполнение буфера" — ситуация невозможная для программ, написанных на Обероне/Компонентном Паскале, где нельзя ни случайно, ни по небрежности отключить проверки выхода за границы массивов.
Безопасность пилотов и пассажиров должна обеспечиваться, начиная уже с уровня компиляторов. |
Безопасность летательных аппаратов должна обеспечиваться, начиная уже с уровня компиляторов, используемых для создания бортового программного обеспечения: жизнь пилотов и пассажиров нельзя ставить в зависимость от случайных "зевков" программиста. Многократно доказано, что такие "зевки" в больших проектах неизбежны — такова природа человеческого мозга. Единственный способ исключить подобные ошибки — использовать адекватные инструменты, т.е. надлежащим образом спроектированные языки программирования и компиляторы для них, построенные систематическими математизированными методами.
Взрыв 4 июня 1996 г. ракеты Ариан-5, стоившей полмиллиарда долларов, имел причиной программную ошибку, которую компилятор Оберона/Компонентного Паскаля просто не пропустил бы. |
История постоянно подтверждает правоту Н.Вирта. Например, взрыв в 1996 г. ракеты-носителя Ариан-5 стоимостью около 500 миллионов долларов через 40 секунд после старта произошел, как выяснилось, из-за сбоя программного обеспечения: одна из вспомогательных подпрограмм пыталась преобразовать длинное целое значение в короткое без проверки величины значения. Компиляторы Оберона по умолчанию отказываются компилировать такие программы, считая их ошибочными, тем самым "тыкая носом" проектировщика в точки потенциальных сбоев.
Неудивительно, что предшественник Оберона язык Модула-2 широко использовался в европейской авиапромышленности и по праву считался лучшим языком для создания особо надежных программ (автоматизация, управление воздушным движением в аэропортах и т.п.). Оберон/Компонентный Паскаль идет еще дальше Модулы в этом отношении в силу большей простоты и использования новых технологий (исключение вариантных записей в пользу статически и динамически контролируемого полиморфизма) и весьма успешно используется в промышленной автоматизации. (Для сравнения: Майкрософт со своим вариантом Windows была вынуждена уйти из этого сегмента рынка.)
Парадоксальное сочетание предельной безопасности языка с предельной эффективностью компилятора, достигнутых без потери выразительности языка программирования как инструмента творческой деятельности, — главное интеллектуальное достижение Н.Вирта в системе Оберон. |
Существует мнение, что такого рода безопасность программ не совместима с их эффективностью. Уже Модула — и в еще большей мере Оберон — опровергают это распространенное заблуждение, и в этом заключается, пожалуй, едва ли не главное интеллектуальное достижение Н.Вирта.
Уникальный личный опыт Н.Вирта придает колоссальный вес его критике языков и практики программирования. |
Еще один проект, в котором Н.Вирт участвовал в течение нескольких лет, начиная с 1995 г., был посвящен созданию беспилотного вертолета, способного автономно пролететь по заданному маршруту (проект, предпринятый в the Institute of Automatic Control and Measurement; создание "умных" беспилотных летательных аппаратов вызывает огромный интерес во всем мире, в том числе и в России, и прежде всего, конечно, у военных). Н.Вирт написал для проекта все программное обеспечение, начиная с компилятора для процессора StrongARM и кончая бортовой управляющей системой реального времени. Бортовой компьютер (получивший, кстати, имя OLGA = Oberon Language Goes Airborne) оказался настолько компактным, благодаря компактности и эффективности получившихся программ (использовалось подмножество языка Оберон), что вес машины удалось резко снизить по сравнению с предыдущими версиями конструкции — всего до 15 кг. (Потомки компьютера OLGA используются в компании weControl.)
Читатель может прикинуть, сколько весила бы машина, если бы ее ПО создавалось на основе таких популярных языков как Java или C++ — и когда был бы закончен проект. В качестве масштабного множителя можно предложить отношение объемов описаний языков — 16 стр. для Оберона, 200 для Java и больше 1000 для C++. ;-))
Материал перепечатан латвийским еженедельником Digital Times pdf, 160K
Наука — Школе |