Так учат в ETH

Автор: Биллиг Владимир Арнольдович, кандидат технических наук, доцент
Тверской государственный технический университет
В докладе обсуждаются идеи, лежащие в основе обучения началам программирования студентов ETH – одного из старейших университетов Европы. Опыт обучения обобщен профессором Бертраном Мейером в его фундаментальном труде “Touch of Class. Learning to Program Well with Objects and Contracts”. Опыт обучения современному профессиональному программированию заслуживает, по моему мнению, широкого обсуждения
Во всем мне хочется дойти до самой сути

Программировать сегодня умеют многие. «Программирование, как вторая грамотность» - давняя мечта академика А. П. Ершова - становится реальностью. На первый курс сегодня приходят студенты, уже имеющие опыт создания сайтов, программирования на script языках, создающие макросы в среде Office, умеющие программировать на том или ином языке. Программированию учат в школах, колледжах, студентов разных специальностей.

Профессионально программировать, программировать хорошо могут далеко не все. Учить профессиональному программированию не просто. Еще сложнее учить программировать хорошо. Как в России, так и в мире до сих пор не существует общепризнанного учебника по программированию, который бы использовался в большинстве университетов. Во многом это объясняется специфической сложностью программирования. Достаточно трудно определить суть программирования, как научной дисциплины. Известная книга Кнута называется «Искусство программирования», книга Гриса – «Наука программирования», книга Соммервилла - «Инженерия программного обеспечения». Википедия утверждает, что
программирование содержит все эти части – науку, искусство и инженерию.

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

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

Как пишет в предисловии к книге Бертран Мейер, помимо отмеченных принципиальных трудностей новые вызовы ставят и новые проблемы:

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

Бертран Мейер не без обоснования полагает, что объектно-ориентированный язык Eiffel является лучшим языком, как для целей обучения, так и для разработки серьезных промышленных проектов. Понятно, что язык Eiffel и среда разработки Eiffel Studioстали тем рабочим окружением, на базе которого строится сегодня обучение в ETH.

Несколько важных принципов положено в основу обучения:

  • Начинать учить нужно сразу объектно-ориентированному программированию.
  • С первых шагов студенты должны работать в мощной программной среде с множеством классов, создавая из готовых компонентов эффективные приложения с графическим интерфейсом (студентам ETH предоставляется специальная система Traffic, а также все библиотеки, используемые в Eiffel Studio).Такой подход называется «обращенным учебным планом».
  • Для работы в такой среде достаточно знания интерфейсов, построенных на контрактах. У студентов с самого начала вырабатывается понимание важности спецификации разрабатываемого ПО. Код всего программного обеспечения, предоставляемого студентам, открыт, что позволяет перейти на нужном этапе от понимания интерфейса к пониманию реализации. Такой подход называется «извне – внутрь».
  • Важнейшим элементом обучения являются контракты, используемые как при проектировании, так и при разработке программной системы. «Проектирование по контракту» - это главный вклад профессора Бертрана Мейера в современное программирование. Они должны появляться с первых программ, написанных студентами, они должны быть неотъемлемой частью профессионально разрабатываемого программного обеспечения.
  • Программирование специфическая научная дисциплина. Хороший курс по программированию в равной степени должен сочетать математические основы, искусство программирования, инженерию создания программных продуктов.

Возникает естественный вопрос, насколько опыт обучения в ETH может быть тиражирован и использован при обучении в других университетах, в частности в России? Заметим, что все программные средства, все учебные материалы ETH доступны для свободного использования в интересах обучения. Лекторы, желающие применить книгу при обучении, могут найти много полезных ресурсов (cлайды презентаций, упражнения, видеозаписи лекций, список опечаток, форум для преподавателей и прочее), регулярно обновляемых на сайте  http://touch.ethz.ch.

Основываясь на своем опыте преподавания начального курса программирования, скажу, что я по-прежнему использую в качестве рабочего языка программирования – не язык Eiffel, а язык C#, и использую среду разработки Visual Studio. Тем не менее построение курса на основе объектного программирования и контрактов, также как и другие идеи Бертрана Мейера, мною используются и оказывают большое влияние на мой курс.  Дело не только в технических аспектах информационных технологий, но и  в выработке у студентов философии мышления человека, создающего программные продукты.

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

Хорошо учить профессиональному программированию – задача сложная!

 

Список использованных источников
  1. Bertrand Meyer. “Touch of Class. Learning to Program Well with Objects and Contracts”, Изд. “Springer”, 2009 г.
  2. Бертран Мейер. «Почувствуй класс. Учимся программировать хорошо с объектами и контрактами» (Готовится к изданию, ориентировочно, апрель 2011. Изд. «Интернет Университет ИТ», «Бином, Лаборатория знаний»)
Тип выступления  Устное выступление и публикация
Уровень образования  Высшее профессиональное
Ключевые слова  обучение профессиональному программированию объектно-ориентированное программирование контракты. контрактное программирование, проектирование по контракту Бертран Мейер