Главная страница проекта ИНФОРМАТИКА-21

Наука Школе

Никлаус Вирт (Niklaus Wirth)

Приветственное письмо Н.Вирта

Почему так весомы мнения Н.Вирта о языках и практике программирования

Вступительный доклад на открытии Международной конференции
по преподаванию программирования, Аархус, июнь 2002 г.

Школа Н.Вирта

Профессор Никлаус (Николай Вальтерович) Вирт — живая легенда в мире программирования, блестящий инженер и глубокий исследователь, удостоенный в 1984 г. премии им. Тьюринга среди прочего за разработку языка программирования Паскаль, с которым знаком каждый школьник. Тьюринговская премия — аналог Нобелевской и высшая почесть в информатике.

Паскаль (1970) — первый в серии его пророческих проектов (см. полный список). К концу 60-х гг. Н.Вирт уже получил признание как один из ведущих специалистов по языкам программирования (язык высокого уровня Euler [Эйлер], достаточно широко применявшийся язык низкого уровня PL/360, эффективный компилятор для подмножества Алгола-60 — Algol-W). В этом качестве он был включен в состав Международного комитета IFIP по разработке универсального языка программирования на основе Алгола-60. Однако из-за категорического несогласия с проектной философией, возобладавшей в комитете, Н.Вирт из него вышел в 1968 г. и в 1970 г. представил свой Паскаль. Блестящий успех Паскаля на фоне провала Алгола-68, произведенного комитетом, доказали проницательность Н.Вирта. О принципах, заложенный в основу Паскаля, см. доклад Н.Вирта на Международной конференции НАТО по разработке программного обеспечения, Рим, 1969.

Н.Вирт был одним из первых, кто ввел в практику принцип пошагового уточнения (step-wise refinement) как ключевого для систематического создания программ — см. его классическую статью 1971 г. (В более широком плане здесь речь идет о методологии структурного программирования, идеологом которой был другой легендарный пионер программирования — Эдсгер Дейкстра [E.W.Dijkstra, 1930-2002].)

В рамках его проекта Паскаль-P (1972-74) был эффективно применен промежуточный псевдо-машинный язык P-code для облегчения переносимости компиляторов Паскаля; сейчас эта идея легко узнается в байт-коде для языка Java корпорации Sun и в еще большей степени — в аналогичном промежуточном языке проекта .NET корпорации Microsoft.

Его Модула-2 (1979) наиболее четко воплотила концепции структурного и модульного программирования, зарекомендовав себя как лучший в свое время язык для создания особо надежных программных комплексов (сейчас по надежности Модула-2 превзойдена Обероном и его производными, см. ниже; впрочем, Модула-2, благодаря лучшей стандартизации, имеет известные преимущества для низкоуровневой работы типа написания драйверов; заметим, что программное обеспечение для бортовых компьютеров российских спутников связи создается с помощью уникальной системы кросс-программирования на основе Модулы-2; другой пример: Модула-2 вместе с Адой являются двумя языками, разрешенными в создании систем управления атомными электростанциями в Великобритании и Канаде).

Построенный Н.Виртом в 1983-85 гг. однопроходный компилятор для Модулы-2, по быстроте и компактности на порядок превзошедший альтернативные разработки, продемонстрировал:
(1) мощь систематических математизированных методов в создании сложного программного обеспечения; 
(2) громадные преимущества языков с четким компактным формальным определением синтаксиса при создании компиляторов и сопутствующего инструментального обеспечения.

Важнейший проект Оберон (1988, 1992) синтезировал более четверти века исследований Н.Вирта по методологии и языкам программирования. В Обероне ему с учениками удалось добиться точного синтеза "старых" достижений структурного и модульного программирования (представленных еще в Модуле-2) с "новыми" объектными методами (языки Simula, Smalltalk ...). При этом была решена задача выделить
(а) рациональное, (б) обозримое, (в) универсальное ядро конструктов программирования,
в том числе объектных, которое могло бы составить основу для разработки любого программного обеспечения. Такое компактное ядро представлено в исключительно тщательно спроектированном, мощном, но простом и прозрачном языке программирования Оберон. Оберон воплотил приверженность Н.Вирта принципу систематической простоты. ("Правая рука" Н.Вирта Юрг Гуткнехт предпочитает говорить о чистоте дизайна, см. его доклад The Power of Purity. См. также об идеале точного минимализма.)

В Обероне в полном блеске продемонстрирована концепция компонентно-ориентированного программирования (КОП). КОП интенсивно обсуждается в мировой индустрии программирования с 90-х гг. и представляет собой очередной шаг в развитии технологий программирования после широкого принятия на вооружение объектных методов в 80-х гг. В контексте новых возможностей Интернета концепция КОП трансформировалась в идею сетевых услуг (Web services), реализуемую ведущими производителями программного обеспечения.

Воздействие идей школы Н.Вирта на развитие технологий программирования прослеживается в стратегических мега-проектах лидеров информационной индустрии: Java (Sun) и Microsoft.NET.
Можно говорить о формировании под влиянием Оберона стандартной парадигмы процедурного программирования (впрочем, Оберон в известном смысле выходит за рамки классического процедурного программирования).
В орбите этой парадигмы оказываются также языки Java и C#, лежащие в основе проектов Java и .NET. При этом сам Оберон остается непревзойденным по чистоте дизайна и, как прямое следствие, по эффективности как инструмент создания сложных программных комплексов.

Для программистов-"непрофессионалов" бессмысленная борьба с негодными инструментами — верх абсурда.

С 1993 г. ученики Н.Вирта осуществляют успешный перенос технологий Оберона на наиболее популярные платформы Microsoft Windows, Apple Mac OS ...
При этом язык получил название Компонентный Паскаль — Component Pascal, чтобы подчеркнуть как прямую преемственность со всемирно известным Паскалем, так и ориентированность на поддержку современного компонентно-ориентированного программирования; система программирования получила названия Блэкбокс — BlackBox Component Builder.
Эти усилия делают конструктивную мощь Оберона доступной весьма широкому кругу программистов, в т.ч. программистов-"непрофессионалов" (т.е. специалистов других профессий, более или менее систематически использующих программирование в своей основной деятельности).

Последнее обстоятельство особенно заслуживает внимания: если для программистов-"профессионалов" агония борьбы с программными ошибками, спровоцированными плохим дизайном языка программирования и архаичными средствами разработки, еще сходит за неизбежную часть их трудной работы, то, скажем, для лингвиста — а тем более для инженера-конструктора беспилотных летающих аппаратов — бессмысленная борьба с плохими рабочими инструментами абсолютно неприемлема.

Ядро технологий, выделенное в Обероне, не подлежит устареванию в обозримом будущем.

Нет сомнения, что ядро технологий, выделенное в Обероне из множества техник и приемов программирования, и закрепленное индустрией в языках Java и C#, не подлежит устареванию в обозримом будущем: понятия цикла, подпрограммы, модуля, типа (класса), наследования ... составляют основу программистского мышления.
Все эти ключевые понятия представлены в Обероне/Компонентном Паскале с предельной ясностью.

Важность достигнутого в проекте Оберон как с профессиональной, так и с педагогической точек зрения трудно переоценить:

  • Программирование становится столь же необходимым и обыденным элементом ремесла для самых различных профессий — физиков, химиков, инженеров, экономистов, лингвистов ... — каким уже давно являются базовые математические знания.
  • Как и в случае с математикой, выделение самых существенных, "вечных" основ алгоритмического мышления и программирования, и систематическое преподавание этих основ будущим гражданам информационного общества становится первоочередной задачей особенно в России, где для этого имеется уникальный фундамент добротного математического образования.
  • В этом отношении значение системы Оберон/Компонентный Паскаль для программирования следует сравнивать со значением евклидовых "Начал" для классической математики.

С мая 1999 г. профессор Н.Вирт отошел от преподавательской деятельности, не оставляя своих исследований и увлечений, и занимаясь, среди прочего, изучением русского языка (что отразилось в его приветственном письме для данного проекта). Он имеет троих взрослых детей и проживает в г. Цюрих (Швейцария).

О главном хобби Н.Вирта и как оно повлияло на его разработки языков программирования


Персональный сайт Н.Вирта: http://www.inf.ethz.ch/personal/wirth/

Книги Н.Вирта

Краткая история языка Паскаль

Интервью 1999 г. (англ.)

Интервью журналу Эксперт-Сибирь, данное во время поездки по Уралу и Сибири (сентябрь-октябрь 2005).

Главная страница проекта ИНФОРМАТИКА-21

Наука Школе