Наука — Школе |
Почему так весомы мнения Н.Вирта о языках и практике программирования
Вступительный доклад на открытии Международной конференции
по преподаванию программирования, Аархус, июнь 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).
Швейцарский вклад -- материал о Н.Вирте, автор: Sarah Genner, SwissInfo (2019):
https://www.swissinfo.ch/rus/%D1%88%D0%B2%D0%B5%D0%B9%D1%86%D0%B0%D1%80%D1%81%D0%BA%D0%B8%D0%B9-%D0%B2%D0%BA%D0%BB%D0%B0%D0%B4_%D0%BD%D0%B8%D0%BA%D0%BB%D0%B0%D1%83%D1%81-%D0%B2%D0%B8%D1%80%D1%82---%D0%B6%D0%B8%D0%B2%D0%B0%D1%8F-%D0%BB%D0%B5%D0%B3%D0%B5%D0%BD%D0%B4%D0%B0-%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8-%D0%B8%D0%B7-%D1%88%D0%B2%D0%B5%D0%B9%D1%86%D0%B0%D1%80%D0%B8%D0%B8/45364532
Наука — Школе |