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

Наука Школе

Как возник этот проект

Общие тенденции на пост-советском пространстве, способствовавшие независимому возникновению интереса к Оберону у разных людей, обсуждаются отдельно. Здесь описываются конкретные мотивировки одного из координаторов проекта.

Имеет место острейший дефицит специалистов, владеющих ремеслом грамотного программирования, особенно среди профессионалов в других областях.

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

Нет механизмов соответствующей подготовки.

Оказалось, что ни среди действующей генерации физиков за редкими исключениями нет специалистов, владеющих современными методами программирования (здесь заключен парадокс, о котором стоило бы поговорить особо), ни в системе обучения нет адекватных механизмов подготовки — причем не только в России, но и почти всюду в мире.

Сложилась стандартная парадигма процедурного программирования
= классический набор базовых типов данных и структур управления
+ строгая статическая типизация переменных
+ минимальная доза объектных методов
– множественное наследование
+ автоматическое управление памятью ("сбор мусора").

И это несмотря на то обстоятельство, что в компьютерном мире сформировалось — под влиянием прежде всего проекта Оберон Н.Вирта и учеников — представление о минимальном наборе базовых средств программирования, позволяющих эффективно создавать как простые, так и самые сложные программы, так что можно говорить о сложившейся на данный момент стандартной парадигме программирования. Грубо говоря, это классический набор базовых типов и структур управления в языке со строгой статической типизацией переменных, плюс строго выверенная доза средств объектного программирования с автоматическим управлением памятью (сбор мусора), но без эксцессов вроде множественного наследования. В орбиту этой парадигмы, кроме Системы Оберон, по существу входят такие мега-проекты, как Java корпорации Sun и Microsoft.NET. Появились и весьма эффективные инструменты, весьма точно реализующие этот набор базовых средств, в том числе высококачественный вариант системы Оберон для популярных платформ — система Блэкбокс (точнее, BlackBox Component Builder), уже с 1994 г. доступная бесплатно через Интернет для преподавателей и ученых.

Однако компьютерный мир развивается с головокружительной быстротой, и в сочетании с огромными рекламными бюджетами это неизбежно приводит к возникновению иррациональной мифологии (выражающейся, например, в возникновении такого противоестественного монстра, как C++, по-дилетантски спроектированного по принципу "абсолютно все в одном флаконе").

Проблема является информационной, образовательной и  психологической.

Таким образом, на самом деле проблема является информационной, психологической и образовательной в большей степени, чем принципиальной или технологической. В такой ситуации логично было объявить спецкурс "Введение в современное программирование" на кафедре теоретической физики физфака МГУ (с благословения зав. кафедрой, академика А.А.Славнова, в круг научных интересов которого входят и проблемы, связанные с суперкомпьютерными вычислениями).

Речь идет о базовых и универсальных знаниях и навыках, столь же фундаментальных, как и базовые математические знания.

Было ясно, что речь идет о базовых и универсальных знаниях и навыках, столь же важных и фундаментальных, как и базовые математические знания. Это обстоятельство побудило приглашать на спецкурс не только студентов, уже распределившихся на кафедру (3-й год обучения и старше), но и студентов младших курсов. Неожиданно высокая стабильная посещаемость факультативного спецкурса, присутствие в числе слушателей студентов всех курсов и разнообразных кафедр, включая сотрудников, выявила остроту и всеобщий характер проблемы.

Трудности коренятся еще в школьном преподавании.

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

Привычка к беспорядочному, "корявому" программированию формирует совершенно неадекватное программистское мышление.

В отношении программирования ситуация очень похожа: навыки беспорядочного, "корявого" программирования быстро становятся привычкой и формируют совершенно неадекватное программистское мышление ("начнем как попало, потом 'отладим', гоняя пошаговый отладчик и лепя заплатку на заплатку, при этом демонстрируя остроумие в использовании самых неудачных и темных средств языка").

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

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

Высокое качество — всего лишь дело привычки.
-- Швейцарский шоколатье

Чтобы как-то приблизиться к решению этой проблемы (а в данном случае временные рамки и масштаб задаются строящимся гигантским ускорителем LHC в ЦЕРНе, работа которого намечена примерно на 2006-2020 гг.), пришлось пойти в прекрасный близлежащий лицей, много выпускников которого поступает в МГУ и другие ведущие вузы, и договориться с его энергичным директором Н.П.Кучером об экспериментальном классе по программированию. Сразу оценил ситуацию и директор Учебно-научного центра довузовского образования МГУ, физик-теоретик по образованию И.В.Кривченков и дал проекту зеленый свет.

Программно-алгоритмическое мышление должно быть неотъемлемой частью прикладного математического мышления.

Появление в проекте Н.Вирта и команды его учеников из Oberon microsystems тоже вполне естественно. Дело в том, что фундаментальный характер проблемы перевода математических идей в эффективные программы стал ясен координатору проекта еще в начале научной карьеры (в конце 70-х — начале 80-х гг.): противопоставление формул и программ достаточно условно за пределами простейших случаев, а привычный поиск "явных формул" нередко уводит в сторону от эффективных алгоритмов. (Мнение координатора на сей счет отличается от мнения большинства влиятельных ученых вне информатики, которые, как правило, трактуют программирование как "грязное кодирование", которое следует поручить подчиненным низшего звена — студентам и аспирантам; и это происходит даже в тех случаях, когда проектировать приходится весьма сложные комплексы. Такое невежество элиты является огромным тормозом.) Чтобы как следует понять проблему проектирования эффективных алгоритмов, пришлось "прочесать" довольно большой объем литературы по программированию, стараясь, говоря языком обработки экспериментальных данных, "выделить сигнал из шума". Поэтому уже в начале 80-х гг. координатор имел контакт с Н.Виртом по поводу его работ, связанных с Модулой-2.

Еще одно важное обстоятельство: с конца 80-х состояние науки в России было известно какое. Ряд связанных с этим эффектов (стремление российских коллег "толкнуть" на Запад все, что под руку подвернется, а западных — взять из России все, что плохо лежит) вынудил искать инструменты, которые позволили бы не зависеть от соавторов — как западных, так и российских — при реализации вновь изобретаемых алгоритмов. То есть заставило, фильтруя мифологию и рекламу, искать самые производительные на деле и в то же время простые и доступные средства современного программирования. Мотивация вовсе не шуточная, очень конкретная и исключающая увлечение теоретическими красотами вроде функционального программирования (с чем можно было бы с удовольствием поиграть в более расслабленной обстановке).

В противоречии с наивным инстинктом, мощь средств программирования как инструмента интеллектуальной творческой деятельности определяется тем, насколько строго и последовательно в их дизайне выдержан принцип "систематической простоты".

Инстинкт заставляет людей испытывать трепет прежде всего перед вещами сложными и труднопостижимыми. Однако в случае с системами программирования как инструментами конструктивной интеллектуальной деятельности дело обстоит ровно наоборот (см. приветственное письмо): в Системе Оберон Н.Вирт продемонстрировал, что "систематическая простота" средств программирования сильно и строго положительно коррелирует с их производительной мощью, а также с качеством создаваемых программ. Поэтому когда стал доступен Блэкбокс (полное название: BlackBox Component Builder), координатор был готов скачать и установить его на своем ноутбуке при первой возможности.

Нетребовательный к ресурсам, удивительно простой, легко русифицируемый и при всем этом ультра-современный Блэкбокс — то, что доктор прописал для российских школ на годы вперед.
И не только для школ.

Координатор работает с системой Блэкбокс (являющейся промышленным вариантом исследовательской системы Оберон Никлауса Вирта) уже несколько лет и имел возможность непосредственно убедиться в следующих ее качествах:

Короче говоря, система Блэкбокс — то, что доктор прописал для российских школ на годы вперед.

На Компонентном Паскале эффективно реализуются проекты, которые практически невозможно реализовать другими средствами.

И не только для школ. На Компонентном Паскале успешно реализуются весьма сложные проекты. В том числе такие, которые практически невозможно реализовать никакими другими средствами без значительных потерь в эффективности либо проектирования, либо готовых программ, а чаще и того, и другого вместе. (Это относится, например, к моим вычислительным проектам в теоретической физике элементарных частиц.) Даже искушенных программистов удивляет, что в Блэкбоксе одновременно:

Однако никакой мистики здесь нет: это "просто" результат более четверти века исследований по методологии и языкам программирования специалиста экстра-класса по информатике.

Компонентый Паскаль/Оберон представляет собой общий знаменатель для разных процедурных языков программирования общего назначения.

Неоспоримое достоинство Компонентного Паскаля как средства обучения основам программирования состоит в том, что по самому замыслу Компонентый Паскаль/Оберон представляет собой общий знаменатель для разных процедурных языков программирования общего назначения. Поэтому:

Таким образом, Компонентный Паскаль оказывается уникальным средством для построения вводных курсов программирования. Ведь в таких курсах важно в первую очередь подчеркнуть "бессмертные" принципы, не отвлекаясь на всякого рода "подводные камни", обусловленные дефектами дизайна (иначе есть вполне реальная опасность потерять из виду суть дела). В этом отношении Компонентный Паскаль/Оберон абсолютно не имеет конкурентов: достаточно сравнить объем основополагающих документов для разных языков: "Сообщение о языке Компонентный Паскаль" умещается в 30 страниц; для Java аналогичный документ — это книга толщиной более 200 страниц, а в случае C++ речь идет о тысяче страниц. После такого вводного курса достаточно давать специализированные курсы, посвященные специфике и "подводным камням" систем и языков типа Java; такие курсы легко строить по принципу перевода конструкций Компонентного Паскаля на соответствующий язык.

Для базовых курсов программирования, где важно подчеркнуть "бессмертные принципы", не отвлекаясь на мелочи и дефекты дизайна, Компонентный Паскаль/Оберон абсолютно не имеет конкурентов.

Если внедрение Компонентного Паскаля/Оберона в среде, скажем, физиков еще сталкивается с долгой традицией использования фортрана и C, то для уроков программирования в школе, где заслуженно популярен Паскаль, а также для вводных курсов программирования в вузах Компонентный Паскаль — особенно учитывая его нетребовательность к системным ресурсам — на данный момент в России (как впрочем и в других регионах мира) конкурентов просто не имеет.


Ф.В.Ткачев, 2002

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

Наука Школе