в ETH (Swiss Federal Institute of Technology Zurich), бывшем Цюрихском политехникуме, где учились Альберт Эйнштейн и Джон фон Нейман. На этой же кафедре работал Никлаус Вирт, автор языков программирования Pascal, Modula, Oberon.
В Рыбинске на конференции «Преподавание ИТ в России» Б. Мейер выступил с пленарным докладом на тему «Touch of class: modern programming education through objects, contracts and components» («Начальный курс: обучение современному программированию через объекты, контракты и компоненты»). Предваряя разговор о целях обучения программированию в настоящее время, Б. Мейер заметил, что с учетом тенденций развития офшорного программирования не следует ставить во главу угла преподавания научение просто программированию. Европейские и российские студенты выдержат в ближайшем будущем конкуренцию с индийскими и китайскими программистами только в том случае, если смогут «конструировать высококачественный программный продукт». Поэтому курс программирования в ETH строится на изначальном погружении студентов в круг возможностей объектно-ориентированного программирования на основе обращенного учебного плана и подхода снаружи — внутрь.
Основные положения такого плана сводятся к следующему:
- Устойчивый навык — абстракциям научить, а не веровать.
- Базисные идеи — начинать с использования библиотек и постепенно открывать «черные ящики».
- Идти от программиста к поставщику не снизу вверх, не сверху вниз, а снаружи — внутрь, т.е. использовать компоненты библиотеки.
На первом же занятии студентам предлагается код объемом в 100 тыс. строк (в виде библиотеки Traffic Library и других программ), на базе которого на протяжении семестра нужно писать приложения. Сначала они знают лишь интерфейс методов, которые им даны, затем постигают устройство классов, а в итоге создают подобные библиотеки. При этом языком программирования служит Eiffel. Приведенное Б. Мейером в качестве примера учебного задания описание схемы парижского метрополитена с первых же шагов обучения погружает студентов в круг практических задач, что позволяет им писать полезные приложения вроде нахождения оптимального маршрута передвижения по метро.
При таком подходе требуется преодолеть ряд трудностей, например, приходится работать над выравниванием уровней подготовки слушателей, поступивших на факультет. Для этого привлекаются 12 ассистентов (6 аспирантов и 6 студентов старших курсов), помогающих профессору, а кроме того используются подготовленные учебные материалы, доступные в онлайне, видеозаписи лекций, своеобразные обратные связи для обучающихся и их учителей при работе с материалами лекций. На экзаменах в конце года текущие оценки игнорируются, но учитывается аттестат, где отражено количество заданий и типы решенных задач. На курсе в ETH занимаются около 250 студентов, на первом году обучения еженедельно проводятся две лекции и три практических занятия.
Основной задачей преподавания Б. Мейер считает научение навыкам системного программирования, при котором главным является не написание кода, а создание нужной системы программ. Как полагает профессор, сейчас это более всего востребовано на рынке профессионального программирования и, значит, облегчит выпускникам поиск работы.
Б. Мейер отметил, что в ETH студентов обучают инженерному ПО, связанному с разработкой программных систем, включая выполнение заданий в установленные сроки и в пределах выделенного бюджета, требуемого качества, больших и сложных по структуре, которые будут обладать функциями, расширяющимися при развитии систем. Естественно, подобный фундаментальный подход к обучению широко признан в мире. Ниже приведем перечень разделов, изучаемых в курсе: структуры; повторное использование; изменения; абстракции, сокрытие информации; спецификации против реализации; сложность; масштабирование; типизация; классификация; нотация; статика против динамики; рекурсия в рассуждениях; алгоритмическая рекурсия; инварианты.
Повторяя перед студентами факультета бизнес-информатики в ГУ—ВШЭ многое из своего выступления в Рыбинске, Б. Мейер афористически охарактеризовал современное программирование. Вот несколько его высказываний, над которыми полезно было бы поразмышлять и читателям «Мира ПК».
«Конструирование программных комплексов — детский взгляд на устройство мира. Наука предлагает контраверсный подход».
«Нет схематологии, или функциональному программированию!» (Теория схематологии, например, изложена в книге «Structure & Interpretation Computer Programs», авторы Abelson и Sissman.)
«Программирование — не только хакинг (виртуозное знание возможностей программ), это также математика».
После своей лекции в ГУ—ВШЭ Б. Мейер любезно согласился ответить на несколько вопросов журнала «Мир ПК».
— Когда вы впервые попали в Россию?
— Это случилось еще во времена СССР, меня пригласил Андрей Петрович Ершов. В 1977 г., после моего знакомства с ним в Германии, во время одной из международных конференций про программированию я приехал на стажировку. Работая в Академгородке под Новосибирском, я написал свою первую научную работу, а в 1982 г. под редакцией А.П. Ершова вышел перевод моей книги «Методы программирования», выполненный Ю.А. Первиным.
— На что, по вашему мнению, следует обратить внимание начинающему программисту в своей подготовке?
— Советую познакомиться с отчетом в «Мире ПК» о моих выступлениях в ГУ—ВШЭ и на конференции в Рыбинске, а также обратить внимание на только что вышедшую в Москве мою книгу «Объектно-ориентированное конструирование программных систем», которую отредактировал и представил читателям проф. В.А. Биллиг из Тверского ГУ. Это весьма полное руководство по объектно-ориентированному анализу, проектированию, программированию и сопровождению. В.А. Биллиг сообщил мне, что она доступна через интернет-магазин www.intuit. ru/shop/product.xhtml?id=2493373.
— Не могли бы вы привести примеры проектов, выполненных в среде программирования Eiffel?
— История программных проектов на языке Eiffel насчитывает уже почти десять лет, и ее лучше отследить по сайту www.eiffel.com.