Никлаус Вирт: путь к истине
15 февраля швейцарскому профессору Никлаусу Вирту исполняется 80 лет. Заметный рубеж, чтобы задуматься о том, что же сделал для современного мира лауреат компьютерной «нобелевки» — премии Алана Тьюринга (The ACM A.M.Turing Award).
15 февраля швейцарскому профессору Никлаусу Вирту исполняется 80 лет. Заметный рубеж, чтобы задуматься о том, что же сделал для современного мира лауреат компьютерной «нобелевки» — премии Алана Тьюринга (The ACM A.M.Turing Award).
На первый взгляд, всё весьма печально — современный мир почти не знает Вирта и даже не догадывается о его огромном вкладе в мировую компьютерную науку. В мире программирования царит американский подход. Я бы назвал его «либеральным программированием»: даёшь свободу самовыражения, прощай порядок и да здравствует «управляемый» хаос!
Никлаус Вирт во время российского турне
Посмотрим на рейтинги популярности языков программирования. Разные методики дают различные результаты, но в любых топ-листах лидируют С++, С#, Java, PHP. И это бесконечно грустно. Я бы не удивился, если бы то была выборка худших языков программирования. Но самых популярных?.. Немногие знают, что Java и С# построены на идеях Вирта, но индустриальными компьютерными гигантами (Sun и Microsoft) искажены и доведены до абсурда. Почти так же, как до того Borland, а потом и Embarcadero угробили виртовский Паскаль. Увы, лучшие языки Вирта — Модула-2 и Оберон — почти не используются в мире, хотя программы, написанные на них, всё ещё несут службу в нашем ближнем космосе.
Вклад Никлауса Вирта не сводится к созданию одних лишь новых языков программирования. Швейцарский профессор дал нам ключ, вектор движения. И его можно выразить ёмким афоризмом Альберта Эйнштейна, который Вирт поместил в самое начало описания языка Оберон: «Make it as simple as possible, but not simpler» («делай как можно проще, но не чересчур»). По правде говоря, мне очень не нравится вторая часть. Она лишняя, так как первая уже содержит «as possible». Думаю, что человек как божественное творение был создан простым, насколько это возможно. И то, что человек – cложное создание, даже если мы рассматриваем только телесную часть, никак не мешает ему быть «простым, насколько это возможно». Кроме того, вторая часть фразы как бы воздвигает преграду развитию. Где граница божественной простоты? Может ли человек, ограниченный самим своим биологическим воплощением, видеть границу простоты? Мне без разницы, ограничена ли скорость света, мне важно, не буду ли я ограничен в своём движении: «тихо, тихо ползи, улитка, по склону Фудзи, вверх, до самых высот» (Кобаяси Исса).
Так где же граница простоты программирования? Ещё в студенческие времена у нас в новосибирском Академгородке ходила шутка, что совершенный компьютер должен иметь всего две команды: RPM и MAKEIT
RPM – Read Programmers Mind («прочти мысли программиста»).
MAKEIT – Make It («сделай это»).
Никлаус Вирт устами Альберта Эйнштейна даёт нам подсказку: Make it as simple as possible…
Но ведь это движение совсем в другую сторону. Не туда, куда движется всё «либеральное программирование». Эволюция языков Никлауса Вирта иная: Паскаль — Модула-2 — Оберон. Чем дальше, чем проще!
Апологеты «либерального программирования» постоянно твердят нам о сложности. О том, что сложность неразрывно связана с программированием. О том, что программы – это самые сложные системы, когда-либо создаваемые человеком. Они не задумываются, как уменьшить сложность программирования. Они воспевают Его Величество Сложность. Здесь как и в бизнесе: объясни покупателю, что дело очень непростое, и запроси побольше денег. Вот и живём мы в мире кривых зеркал, где ошибка в программе — дело обычное, никого уже не удивляющее.
Лучше всего мотивацию работ Никлауса Вирта раскрыл его коллега по Стенфордскому университету (США), знаменитый профессор Дональд Кнут: «Вирт всегда хотел создавать аэропланы, и ему нужен был самый лучший инструментарий. Вот почему он проектировал много компьютерных языков и микрокомпьютеров…»
Вирт прежде всего инженер… Три друга, три лауреата премии Тьюринга: Эдсгер Дейкстра (1972) – Тони Хоар (1980) — Никлаус Вирт (1984). В этой тройке великих учёных Европы первый был философом-пророком, второй — идеологом научных основ программирования, третий — блестящим инженером-практиком.
Эдсгер Дейкстра не стеснялся называть вещи своими именами: «Настало время сорвать маску с компьютерного сообщества — Тайного общества по созданию и сохранению искусственной сложности. Контроль сложности и избавление от всего вторичного и надуманного — вот истинный путь развития программирования. мы являемся свидетелями массового, повсеместного распространения полного ошибок программного обеспечения, из-за чего нам должно быть очень стыдно… Мы просто не знаем, до какой степени можно всё упростить».
Ему вторил и Тони Хоар: «Но существует одно качество, которое нельзя купить, — это надёжность. Цена надёжности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить».
Мы живём в эпоху безудержной гонки технологий и надуманной сложности. Всю свою жизнь Никлаус Вирт посвятил борьбе с этими пагубными явлениями, но его не слышат или просто не хотят слышать. «Крайнюю степень ума, — писал Блез Паскаль, — обвиняют в безумии точно так же, как и полное его отсутствие. Хороша только посредственность».
Низкий поклон Учителю за то, что он показывает нам путь к истине…
—
Алексей Недоря – кандидат физико-математических наук (1995).
Алексей Недоря (слева) и Никлаус Вирт (в центре)
Родился 11 января 1963 г. (Чита). В 1979 г. поступил в Новосибирский государственный университет (НГУ). В 1982 г. стал одним из основателей Intruders Club – неформальной компьютерной группы студентов физического и механико-математического факультетов НГУ. В 1984 г. окончил НГУ (дипломная работа — компилятор с языка Edison Пер Бринч Хансена для многопроцессорного вычислительного комплекса «Эльбрус-1»). Весной 1984 г. участвовал в создании легендарной группы «Кронос» (первый советский 32-разрядный процессор), являлся основным разработчиком ОС Excelsior и нескольких компиляторов с языка Модула-2. С 1985 до 1988 гг. работал в ВНТК «Старт» (ответ СССР на японский амбициозный проект компьютеров пятого поколения). Далее до 1998 г. в Институте систем информатики им. А.П.Ершова Сибирского отделения РАН. В 1990 г. познакомился лично с Никлаусом Виртом; в 1991 г. был на стажировке у профессора Вирта в ETH Zurich (Швейцарский федеральный технологический институт, Цюрих). В 1991-1994 гг. работал над инструментальной многоцелевой системой XDS (Модула-2 и Оберон-2) и системами генерации программного кода для бортовых космических комплексов. C 1994 г. – глобальный ИТ-аутсорсинг и офшорное программирование. C 2001 г. — разработка нового инструментария программирования.