Стремительное падение уровня вузовского образования в сфере ИТ, усугубляемое высокими темпами изменения технологий, резко обострило сегодня проблему организации учебного процесса подготовки высококвалифицированных программистов. Несмотря на то что российские программисты работают сегодня во всех ведущих компаниях мира, давно и с неизменным успехом применяющих разработанные у нас высокотехнологичные решения, над страной нависла угроза дефицита профессионалов в сфере ИТ. Где и как готовить программистов? Какое ПО использовать в учебном процессе? Свои соображения по этим вопросам высказал ведущий российский специалист в области системного программирования Виктор Петрович Иванников1 в своем выступлении «Использование СПО в образовании» на Восьмой ежегодной конференции «Свободное программное обеспечение в высшей школе» (OSEDUCONF-2013), прошедшей в Переславле-Залесском 26–27 января 2013 года. Данная статья подготовлена редакцией с сохранением стилистики автора на основе этого выступления.

Мнение В.П. Иванникова, разработчика первой ОС для ЭВМ БЭСМ-6, предложившего средства организации параллельных процессов для отечественных многомашинных комплексов, одного из создателей отечественной научной школы системного программирования, по вопросам подготовки кадров сегодня важно как никогда. Именно В.П. Иванников предложил опробованную временем модель работы научных организаций — «образование через исследование», представляющую собой сплав образования, исследований и промышленных внедрений при тесном взаимодействии с ведущими учеными и исследовательскими лабораториями крупнейших игроков ИТ-индустрии. Ведущую роль в экосистеме из фундаментальных и прикладных исследований, индустриальных решений и системы подготовки кадров играет созданный им Институт системного программирования, получивший сегодня международное признание и авторитет у ведущих международных ИТ-компаний.

Статья сопровождается воспоминаниями соратников и учеников Виктора Петровича, позволяющими получить более полное представление о характере, обстановке и задачах, которые приходилось решать Иванникову. В ней также приводятся высказывания представителей ИСП РАН и МГУ, принимающих непосредственное участие в подготовке программистов и реализации приведенных в статье идей автора.

— Дмитрий Волков, главный редактор, «Открытые системы.СУБД»

 

Как хорошо было раньше преподавать: съездил Фибоначчи в Кордову или в Толедо, а там арабская десятичная позиционная система счисления, тогда как в Пизе была принята римская система — этот кошмар при выполнении арифметических действий. Вернувшись, он написал книгу о действиях арифметики, с задачами, которые и по сей день кочуют из учебника в учебник, — например, о популяции кроликов на необитаемом острове, откуда и пошла последовательность Фибоначчи. Книга на протяжении трех столетий служила в качестве удобного пособия в преподавании арифметики. Или более современное: Вейерштрасс упорядочил матанализ — ну, отличаются, конечно, современные курсы, но великий человек прекрасно все это сделал в первый раз… Сегодня же, особенно в ИТ, идет перманентная революция: технологии наращиваются, инструменты развиваются, появляются абсолютно новые вещи, и рассказывать студентам об этом становится все сложнее.

В конце 1960-х годов Никлаус Вирт проводил в Стэнфорде курс по системному программированию, а в начале 70-х мне удалось прочитать ксерокопию его лекций. Это был сущий винегрет, чего там только не было: драйверы, семафоры Дейкстры, перевод из обычной инфиксной записи в польскую и т. п. Уже тогда остро встала проблема упорядочения, причем студенты должны были освоить очень много инструментов, которые, как правило, относятся к открытому коду. Как их использовать? Причем не на уровне общих слов, а в конкретных учебных курсах для физтеха и ВМК: «Введение в алгоритмы», «Введение в архитектуру», курс по операционным системам для некоторых специальностей, в котором разбираются не только вопросы использования открытого кода, но и особенности работы с ним.

 

Дело прежде всего

Под руководством Виктора Петровича я начал работать в 1996 году, когда поступил в аспирантуру ИСП РАН. Теперь кажется, что он был рядом всю мою сознательную жизнь, учителем, наставником, научным руководителем, а с какого-то времени и другом.

Для меня, как и для многих, он был живой легендой, однако работать с ним было непросто. Виктор Петрович всегда предъявлял очень высокие требования, ставя дело на первое место, а разговоры с ним на любые темы: о Вселенной, о Древнем мире, о книгах часто скатывались к обсуждению проблем института. После бурных дискуссий на семинарах он мог позвонить в любое время, и мы продолжали беседу.

Каждая из созданных Виктором Петровичем операционных систем разрабатывалась на основе самых передовых научных достижений своего времени, а главное — все шесть ОС были запущены в промышленную эксплуатацию. Научная школа Виктора Петровича показала свою жизнеспособность и эффективность: в институте под его прямым руководством были разработаны технологии мирового уровня, успешно конкурирующие с лучшими мировыми аналогами. Например, статический анализатор кода Svace, развиваемый с 2000-х годов, сегодня взят на вооружение в компании Samsung. В последнее время Виктор Петрович руководил разработкой отечественной ОС для авионики. Еу было 76 лет, но он в полную силу участвовал во всех разработках, показывая нам пример.

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

Благодаря созданной атмосфере высокого профессионализма, абсолютной честности и уважения друг к другу, ему удавалось привлекать в институт пассионарную молодежь, которая сейчас составляет у нас 80% сотрудников. Это позволило решить самую трудную задачу — преемственность поколений.

Трепетное отношение к своим ученикам я почувствовал и на себе — при таком отношении никакой уровень ответственности не казался завышенным. Виктор Петрович часто создавал ситуации, где нам казалось, что мы все придумали сами, чтобы могли гордиться своей работой и хотели двигаться дальше. Мы доверяли ему безусловно, хотя сам он не любил говорить о себе и был очень скромным.

— Арутюн Аветисян, член-корреспондент РАН, директор ИСП РАН

 

Мне много приходилось читать статей — к сожалению, не отечественных, а американских — о проблеме первого языка, на котором человек может написать программу. Я давний сторонник Паскаля, потому что, несмотря на несуразность языка, все-таки Вирт, а он умница, создавал свой язык совсем не для разработки программ, а для того, чтобы на нем учились программировать. Там строгая типизация, а не та вольница, с которой привык работать профессиональный программист. Но потом я столкнулся с такой вещью: и на ВМК, и на физтехе у ребят буквально создается путаница в головах. В первом семестре им дают фундаментальные алгоритмы, почти все можно было писать на Паскале. Мне хотелось, конечно, одну лекцию посвятить алгоритмам запросов к памяти, а в Паскале, ввиду строгой типизации, все можно написать, но коряво же будет выглядеть — нужно понятие адреса и пр. В результате студенты не знают, как происходит динамическое распределение памяти, а в следующем семестре они изучают ассемблер. А на физтехе еще и макроассемблер! Ну зачем еще макро?! И таким образом совсем сбивают студента. А потом начинается следующий семестр, рассказывают про Unix, а Unix и Си — это неразрывные вещи, и ребята уже полностью дезориентированы. И вот возникла идея сквозного прохода по курсам — использовать язык Си для разных вещей.

Обучение программированию в эпоху технологических революций

Итак, курс «Введение в алгоритмы»: изучение языка Си; вводный курс в алгоритмы; структуры и типы данных; таблицы; хеширование; деревья; очереди; стек; машинная арифметика, не имеющая отношения к математике, — не выполняются законы коммутативности и ассоциативности, но студент должен все это осознать. И конечно, нужны какие-то понятия об алгоритмической сложности — мы живем в мире эквивалентных алгоритмов (а их синонимы — «программы»), и нужно уметь их взаимно оценивать. Здесь же рассказывается и о машине Тьюринга, что такое неразрешимость и прочие обычные понятия, по которым имеется много учебников.

 

Создатель научной школы системного программирования

С Виктором Петровичем нас связывает долгая совместная работа и дружба. Мы познакомились в конце 1968 года в ИТМиВТ. Когда был создан Институт системного программирования, Виктор Петрович пригласил меня, и 18 лет я был заместителем директора института по науке, приходилось решать и разные административно-хозяйственные вопросы.

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

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

Виктор Петрович был всесторонне эрудированным человеком. Любил литературу, живопись. Собрал довольно большую коллекцию редких минералов. В быту он был очень скромен. Уделял внимание спорту и был отчаянным грибником.

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

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

— Виктор Шнитман, заведующий отделом ИСП РАН

 

Принципиальный вопрос курса «Введение в архитектуру» — как рассказывать, собственно, про архитектуру? Наверное, близко к языку ассемблера, однако стили программирования на языке высокого уровня и на ассемблере разные, другой менталитет. Понятно, что немногим придется реально писать на ассемблере, но с инструкциями, тем не менее, уметь работать нужно. Идея заключается в том, что нужно сконцентрироваться на мэппинге — студент должен видеть две программы: на Си и эквивалентную на ассемблере. Должен понимать обе и уметь вручную восстанавливать конструкции языка Си по ассемблерному коду. Студенту нужно именно понимать, а не научиться в совершенстве писать ассемблерные программы, не глядя в руководство. Он должен ориентироваться в семантике программы на ассемблере и уметь переписать ее на Си. Хотя отчасти можно это сделать автоматически, но в этом случае код на Си будет очень напоминать ассемблер.

Однако здесь есть тонкости: если во времена моей молодости архитектура компьютеров была достаточно простая, то сейчас, используя различные подходы работы с блоками памяти, разные шаги обработки в цепи массивов, разную иерархию кэшей и т. д., можно достигать производительности, отличающейся на порядки. К сожалению, нынешние студенты, да и аспиранты, этого не понимают, но именно это хотелось бы заложить как можно раньше, чтобы студенты осознали, что такое компьютер. Важно, чтобы студент не просто услышал различные понятия, связанные с термином «кэш», а понял, как он работает, что такое промах кэша. Цель курса как раз в этом. Конечно, есть еще многоядерность, когерентность кэшей и др., что можно оставить на аспирантуру, помня, что на этом-то и строится все распараллеливание.

 

Цели и средства

Под руководством Виктора Петровича я работал с начала 1984 года. В то время мы разрабатывали системы программирования и операционную систему для нового советского суперкомпьютера, уже через три года создав два ассемблера, ОС и пять компиляторов. В процессе этой работы сформировался коллектив, на базе которого в 1994 году и был организован ИСП, однако ему сразу пришлось столкнуться с испытаниями: финансирование иссякло, ведущие программисты уехали за рубеж. Тем не менее Виктор Петрович сумел заключить контракты на разработку ПО с крупными компаниями, например с Hewlett Packard. И с конца 90-х годов институт уже работал в нормальном режиме: появились деньги, большая часть которых шла на увеличение зарплаты сотрудников, и у них пропал стимул уезжать, текучка кадров прекратилась, студенты и аспиранты стали оставаться в ИСП после учебы, а институт получил признание как один их лучших институтов академии наук. Со многими компаниями, с которыми начали сотрудничать в 90-х, мы до сих пор продолжаем работать.

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

— Сергей Гайсарян, заведующий отделом компиляторных технологий ИСП РАН

 

Важно отметить, что даже лекционные курсы должны читать молодые специалисты — разница в возрасте не должна быть слишком большой, а когда курсы по ИТ читают восьмидесятилетние, это ужасно. Лекции — это верхушка айсберга курса, а основная работа идет на семинарах и в компьютерном классе. На ВМК — это шесть групп, и чтобы процесс был эффективным, нужно по два преподавателя на группу. Конечно, надо предусмотреть много самостоятельной работы, но, помимо прочего, есть индивидуальная работа — это не только решение задачи с автоматическим тестированием результатов, но и обучение под контролем преподавателя.

В третьем семестре на ВМК читается курс по операционным системам, однако на госэкзаменах ребята не понимают, что такое прерывания, и абсолютно не чувствуют синхронизацию. Если бы студенты за время обучения написали хотя бы один драйвер, где поработали бы с привилегированными командами, то сразу почувствовали бы, что такое запрещение и разрешение прерываний, какие там могут быть эффекты. В этом же курсе обязательно должно быть предусмотрено написание простейших драйверов, в том числе драйвер дисковый и виртуальной памяти — здесь есть тонкие моменты в работе с таблицами и переключателями. Здесь же потребуется написать планировщик, причем надо, чтобы была работа с запрещенными командами, с прерываниями, это управление виртуальной памятью, управление драйверами, переключение между задачами. Цель — научить студента все это делать очень аккуратно.

 

Кадры для науки

Виктор Петрович пришел к нам в МГУ в 1993 году на кафедру, которую до него возглавлял патриарх отечественного программирования М.Р. Шура-Бура. За почти полувековой период существования факультета ВМиК это единственный пока случай, когда новый молодой руководитель и прежний долгие годы успешно и плодотворно работали вместе. Профессура кафедры, знающая Виктора Петровича как высококлассного специалиста и ученого, безусловно, одобрила его приход. Работа со студентами, лекции, экзамены — это для Виктора Петровича было «святое», и при всей своей занятости он никогда не отменял лекции. В непростые 90-е годы Виктор Петрович, используя свои связи с зарубежными учеными, обеспечил безвозмездную поставку 100 персональных компьютеров из США, что позволило факультету поднять образовательный процесс на качественно новый уровень. За время работы на кафедре Виктор Петрович вырастил несколько поколений программистов, которыми по праву может гордиться не только Россия.

Став завкафедрой МГУ, Виктор Петрович одновременно занимался созданием Института системного программирования и очень гордился тем, что именно в Татьянин день был подписан приказ о создании ИСП РАН. Виктор Петрович очень много внимания уделял тому, чтобы молодые специалисты плодтворно работали, и многие талантливые ребята остались в науке исключительно благодаря его усилиям. К нему можно было обратиться с любой просьбой и вопросом, несмотря на его строгость и требовательность, — вершины в науке, которых он достиг, не заслоняли для Виктора Петровича проблем любого коллеги.

— Людмила Корухова, заслуженный преподаватель МГУ им. М. В. Ломоносова

 

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

Лично я написал шесть операционных систем и представляю, как просто и быстро написать ОС, но для учебных целей она должна быть компактная. Можно взять за основу систему JOS из МТИ, тем более что лицензия относится к классу BSD. Операционная система JOS — это около 8 тыс. строк на Си и 400 строк на ассемблере. Эмулятор QEMU, хотя есть и другие, например Valgrind, но QEMU хорош тем, что исполняет привилегированные команды и можно не прикрываться библиотечными вызовами. Отладчик gdb, компилятор gcc.

 

Ошибка начинающего дизайнера

Мы начали тесно общаться с Виктором Петровичем, когда я поступил в аспирантуру факультета ВМК и стал участвовать в проектах с компанией Nortel Networks. Особенно запомнились семинары в кабинете директора, на которых Виктор Петрович старался вникнуть во все детали, даже если не был непосредственным руководителем проекта. Когда начиналась работа по реализации нового планировщика для компилятора GCC, мне нужно было сделать для него доклад, в ходе подготовки к которому стали понятны многие нюансы, которые необходимо было учесть. Запомнился первый разнос, который я получил от Виктора Петровича за ошибку проектирования — результаты работы первой версии компилятора варьировались от запуска к запуску. Причина была в неправильно выбранных структурах данных, а в ИСП родилось популярное теперь выражение «ошибка начинающего дизайнера». Много позже, когда я сам стал вести проекты, я понял, что тогда директор внушение сделал исполнителям весьма мягко и корректно, а руководители, напротив, получили «по полной». Молодых сотрудников Виктор Петрович очень берег.

Виктор Петрович был очень живым и увлекающимся человеком, интересующимся не только программированием, — для него было естественно сослаться в лекции на Гнедича или «Илиаду», поинтересоваться у молодого сотрудника, что тому в школе ставили за сочинение. А прочитав черновик служебной записки в Президиум РАН, он мог посоветовать сотруднику брать пример с Флобера, дважды не повторявшего на странице одно и то же слово. Мы и сегодня часто обсуждаем важные проблемы в кабинете Виктора Петровича, и сложные решения принимаются как-то легче и спокойнее.

— Андрей Белеванцев, руководитель направления анализа и оптимизации программ ИСП РАН.

 

Данный курс нужно уложить в один семестр, и здесь кроется другая серьезная проблема — дефицит специалистов в сфере технологий компиляции, знающих предмет не на уровне учебников, а на уровне практиков, разбирающихся в коде. Люди, которые преподают курс, сильно загружены, обычно они еще работают над своими кандидатскими диссертациями, и если растянуть этот курс на год, то им просто придется переквалифицироваться в преподаватели. Смысл заключается в том, чтобы студентов обучали профессионалы в своей области, а это предполагает обязательное участие и студентов, и преподавателей в реальных проектах.

Обучение программированию в эпоху технологических революций

Отдельного разговора заслуживают компиляторы, причем обсуждать в курсе надо их внутреннее устройство и архитектуру, а не внешний интерфейс. Для целей обучения нужен достаточно компактный открытый код, чтобы он позволял вставлять различные плагины, и тут есть серьезная проблема с выбором. Например, gcc — это сейчас несколько компиляторов: фронтенды для каждого из входных языков программирования и два внутренних представления; только планировщиков кода там четыре штуки. Один из планировщиков мы по контракту с HP делали для микропроцессора Itanium, в котором много регистров, поэтому нельзя проводить их распределение только на базовом блоке, на линейном участке, а необходимо захватывать переходы, что означает спекулятивное выполнение и вероятностную оценку пути. Для того чтобы нашей команде углубиться в среду gcc, в свое время потребовался год. Ясно, что, если бы студенты были знакомы с этим компилятором еще в институте, такие работы выполнялись бы быстрее.

 

Преподавать должны профессионалы

Мне посчастливилось вместе с Виктором Петровичем работать над подготовкой нового учебного курса, тема которого ему была близка, как никакая другая. Началась эта история довольно неожиданно — с участия в приеме вступительных экзаменов в аспирантуру. Ответы выпускников университета на вопросы о работе операционных систем и обработке прерываний, скажем мягко, нельзя было назвать уверенными, что не оставило равнодушным Виктора Петровича. Почему талантливые ребята выходят из университета с такими пробелами в понимании базовых областей системного программирования? Только прочувствовав проблемы, можно полноценно освоить материал, поэтому решение созрело быстро: необходим курс по ядру операционных систем с акцентом на практической работе.

Я в тот момент уже около 10 лет участвовал в проведении курса «Методы формальной спецификации и верификации программ». Вызвав меня к себе в кабинет, Виктор Петрович был тверд: «Преподавать предмет должны те, кто профессионально работает в этой области, а у нас с операционными системами больше всего работаешь ты!» Действительно, в наших проектах по верификации модулей ядра ОС Linux и тестированию ОС РВ мне приходилось разбираться во многих деталях, готовить исправления выявленных ошибок в ядре Linux, поэтому возразить было нечего. Так стартовала работа по подготовке нового курса. Четыре месяца регулярных обсуждений, изучения курсов других университетов, учебных операционных систем, собственные истории из практики Виктора Петровича и пр. Но, наверное, самое ценное, что я вынес из общения с Виктором Петровичем, — это его очень теплое, но требовательное отношение ко всем ребятам, что в конечном счете способствовало более полному раскрытию талантов молодых специалистов.

— Алексей Хорошилов, директор Центра верификации ОС Linux ИСП РАН.

 

Другая вещь — LLVM (Low Level Virtual Machine), инфраструктура генерации оптимизированного машинного кода для различных платформ, используемая, в частности, в компаниях Adobe, Google и Apple, последняя из которых финансирует сообщество развития этой системы. Здесь речь идет о другом представлении, отличном от стековой машины, с более современной архитектурой, допускающей простую интеграцию, которой в gcc, ввиду древности этого компилятора, нет. Поэтому для целей обучения LLVM предпочтительнее: на этой архитектуре можно делать, например, компиляцию just-in-time, что иногда полезно для получения оптимального кода, когда в статике заранее неясно, как оптимизировать доступ к памяти и размещать регистры. Если заранее не знать размеры памяти, то будут сплошные промахи в кэше. Для LLVM имеются всевозможные API, кодогенерация для GPU разных производителей, и даже есть бинарная компиляция из кода одного процессора в код другого. Сама идея бинарной компиляции возникла в начале 90-х и впервые была реализована для знаменитого процессора DEC Alpha при решении проблемы переноса унаследованных приложений с VAX VMS на платформу Alpha, причем без деградации производительности. Аналогичная проблема сегодня имеется и для «Эльбруса» — архитектура и кристалл есть, но кто будет писать приложения для этой платформы, учитывая, кроме того, что большинство имеющихся приложений коммерческие? Выход только один — трансляция бинарного кода.

Курс по компиляторам, опять же семестровый, требуется разрабатывать самостоятельно — я не вижу явных примеров зарубежных университетов, курсы которых можно было бы взять за образец.

 

Романтик и реалист

Виктор Петрович уважал и высоко ценил талантливых и порядочных людей. Будучи сам таким же, он не раз говорил и отмечал в своих эссе, в частности о работе в ИТМ и ВТ и о своем учителе Льве Николаевиче Королеве, что счастлив жить именно среди таких людей. В его характере успешно сочетались качества романтика и реалиста в науке.

Я работал рядом с Виктором Петровичем со дня его прихода в ИТМ и ВТ — могу свидетельствовать о его постоянно сердечном отношении к делу и товарищам. Даже в случае неудачно складывающейся ситуации в работе, он, всегда прекрасно понимая суть дела, никогда не допускал несправедливых упреков.

Мыслил Виктор Петрович быстро, с ходу «определял» ситуацию. Приходилось, например, наблюдать, как, будучи оппонентом по диссертации, он почти мгновенно готовил содержательный отзыв, что, кстати, отмечали и студенты МФТИ: «Лекции Иванникова слушать непросто, но шарит он немерено…».

О студентах Виктор Петрович заботился постоянно: по окончании учебы решительно говорил им, что надо идти работать «туда, где есть чему учиться и есть кому учить». Именно Виктору Петровичу принадлежит идея организации послевузовского обучения специалистов экстра-класса в процессе выполнения ими концептуально значимых проектов по созданию новых технологий разработки программного обеспечения вычислительных систем.

— Александр Томилин, главный научный сотрудник ИСП РАН.

 

Отдельно надо сказать про прикладные пакеты и среды типа OpenFOAM. Сегодня в стране сложилась катастрофическая ситуация. Все отечественные производители: «КамАЗ», «Рыбинские моторы», «Сухой», «Микоян» и другие, даже нефтянка — «сидят» на иностранных расчетных пакетах. Однако каждая ведущая западная компания (Boeing, Airbus, Intel, Schlumberger) имеет у себя на вооружении собственные системы расчета. Сегодня качество проектирования определяется качеством пакетов CAD/CAM/CAE, а то, что предлагается на открытом рынке, — это ширпотреб. Не имея доступа к таким системам и при отсутствии разработки собственных, наша экономика в результате автоматически отстает лет на десять, несмотря на то что средства на приобретение таких западных пакетов тратятся огромные. Есть, конечно, отечественные программы, например FlowVision, но смешно их сравнивать с западными, в развитие которых вложены миллиарды. Выход — открытый код, что уже многие осознали. Например, 80% всех вычислительных экспериментов в Audi выполняются на OpenFOAM.

В OpenFOAM для разных задач имеется больше сотни специализированных программ — решателей, которые можно модифицировать под конкретную область или же создать свои с нуля. Конечно, можно заказать решатель у той же ANSYS, но хватит ли у вас средств на его оплату, при том что специалисты у нас умные, сами способны организовать вычислительное моделирование. На «КамАЗе» в свое время использовали продукты ANSYS, но там не оказалось нужного решателя для моделирования подрыва заряда тротила под днищем автомобиля. Тогда все сделали сами, написали программу, провели вычислительный эксперимент, результаты которого совпали с данными натурных испытаний. Может быть, эту программу следовало использовать шире, например, автобусы так проверять, но программа, по сути, так и осталась одноразовой, а нужно было, чтобы она была интегрирована в среду типа OpenFOAM и была доступна.

 

Идеи, меняющие представление о проблеме

Виктор Петрович любил работать со студентами. Когда я еще учился на первом курсе ВМК МГУ, он читал курс по структурам данных и алгоритмам. Первая пара в субботу собирала весь поток, и после лекции всегда было сложно пробиться к нему через толпу студентов с вопросами. Операционные системы, которые разрабатывал Виктор Петрович, эксплуатировались на лучших для своего времени компьютерах и летали в космос — этот опыт очень чувствовался на его лекциях. Хотя сам он считал, что преподавать программирование должны люди, разрабатывающие промышленное программное обеспечение, — именно так, из первых рук студенты могут постичь мастерство разработки современного ПО. Эта идея воплотилась и в модели работы ИСП РАН — сейчас большинство сотрудников руководят научной работой студентов, многие читают лекции и ведут семинары в МФТИ, МГУ и ВШЭ. Кстати, именно благодаря Виктору Петровичу при преподавании алгоритмов на ВМК МГУ стали использовать промышленный язык Cи вместо академичного Паскаля.

Как человек и руководитель он был очень разносторонним: свободно говорил по-английски, у него на столе можно было увидеть разные книги от классической литературы до истории Кореи. В его кабинете можно было встретить не только сотрудников, но и студентов младших курсов базовых кафедр, которым требовался его совет. Казалось, что на любой вопрос он может либо ответить сам, либо дать прочитать книгу. Всегда можно было прийти к нему и обсудить сложную проблему — как научную, так и управленческую. Часто он сразу выдавал неожиданное решение. Иногда брал паузу, а потом мог позвонить поздно вечером или рано утром, чтобы обсудить идею, которая пришла ему в голову. Зачастую эта идея меняла все представление о проблеме и в дальнейшем приводила к успешному решению.

— Денис Турдаков, заведующий отделом информационных систем ИСП РАН.

 

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

Все эти инструменты достаточно сложны даже в смысле API, поэтому, конечно, нужно пройти серьезный тренинг по пакетам. Я однажды был на научно-техническом совете «Рыбинских моторов», и там выступал в том числе главный технолог или главный инженер. Они используют ANSYS, и, конечно, у них идет производственный процесс. И когда я сказал про OpenFOAM, он говорит: «Вы поймите такую вещь: у нас же процесс, мы попробовали OpenFOAM, но не пошло». Потому что OpenFOAM — это не только пользовательский интерфейс, нужно влезть вовнутрь, чтобы получить другое качество! При этом автоматизация пакетов и пользовательские интерфейсы — это целая отрасль, которой успешно занимаются отдельные компании, например в Германии и в рамках Open Source.

Все это относится и к открытому коду в целом: используют широко, но очень редко, когда кто-то «влезает внутрь», к сожалению.

1 Виктор Петрович Иванников (1940–2016) — выдающийся российский специалист в области вычислительной техники и системного программирования, создатель первой ОС для ЭВМ БЭСМ-6, руководитель проектов создания и внедрения систем автоматизации проектирования и программного обеспечения суперкомпьютеров. Основатель и первый директор Института системного программирования РАН с 1994 по 2014 год. В 1980 году удостоен звания лауреата Государственной премии СССР за разработку математического обеспечения системы АС-6. В 1984 году был избран членом-корреспондентом АН СССР, а в 2008 году — академиком РАН. Под непосредственным руководством В.П. Иванникова в ИСП РАН были, в частности, разработаны математические методы и алгоритмы анализа ПО, решающие задачи поиска уязвимостей и других дефектов программ на уровне лучших мировых систем; технологии анализа и извлечения семантики из больших массивов неструктурированных данных.