Новые информационные технологии в образовании. Часть 2 - Материалы конференции

Как учить программировать  хорошо

Vladimir.Billig@tversu.ru

Тверской государственный технический университет г. Тверь

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

программированию  заслуживает, по моему мнению, широкого обсуждения.

Сегодня          не        достаточно     просто            учить студентов       программированию.

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

Известно,   что  хорошего   общепринятого   учебника   по  программированию   нет,  и

каждый  вуз,  несмотря  на  общие  учебные  программы,  решает  эти  проблемы  по -своему,

используя в качестве рабочего языка и среды программирования различные языки программирования,   различные   среды  разработки.   Книга  Бертрана   Мейера  возможно  не станет  тем  самым  общепринятым   учебником,  но  вот  что  совершенно  бесспорно.  Опыт обучения программированию в ETH нельзя не учитывать. Хороший курс обучения программированию, также как и курс, реализованный в ETH, должен включать все грани программирования  – науку, искусство и инженерию.

Бертран  Мейер  хорошо  известен  программистскому   сообществу  –  он  автор  языка

Eiffel и научный  руководитель  созданной  им фирмы  Eiffel Software,  успешно  работающей многие  годы,  реализовавшей  многие  крупные  проекты  в  различных  областях  – здравоохранении, банковском секторе, обороне. Он является преемником Никласа Вирта на знаменитой  кафедре, где были созданы такие языки программирования  как Algol -W, Pascal, Modula, Oberon. Язык Pascal воплотил идеи структурного  программирования  и структурных типов данных, став де-факто языком, на котором в большинстве университетов учили программированию  в течение десятилетий.

Бертран  Мейер  не  без  обоснования  полагает,  что  объектно -ориентированный  язык

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

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

      Начинать учить нужно сразу объектно-ориентированному программированию.

      С первых шагов студенты должны работать в мощной программной среде с множеством  классов,  создавая  из готовых  компонентов  эффективные  приложения  с графическим  интерфейсом  (студентам  ETH предоставляется  специальная  система  Traffic, а также все библиотеки, используемые в Eiffel Studio).Такой подход называется «обращенным учебным планом».

        Для  работы  в  такой  среде  достаточно  знания  интерфейсов ,  построенных  на контрактах.  У  студентов  с  самого  начала  вырабатывается  понимание  важности спецификации  разрабатываемого  ПО.  Код  всего  программного  обеспечения, предоставляемого  студентам, открыт, что позволяет перейти на нужном этапе от понимания интерфейса к пониманию реализации. Такой подход называется «извне – внутрь».

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

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

программирования, инженерию создания программных продуктов.

Возникает естественный вопрос, насколько опыт обучения в ETH может быть тиражирован и использован при обучении в других университетах, в частности в России? Заметим,   что  все  программные   средства,   все  учебные   материалы   ETH   доступны   для свободного использования в интересах обучения. Лекторы, желающие применить книгу при обучении,  могут найти много полезных  ресурсов  (cлайды  презентаций,  упражнения, видеозаписи лекций, список опечаток, форум для преподавателей и прочее), регулярно обновляемых на сайте https://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.  Изд.

«Интернет Университет ИТ», «Бином, Лаборатория знаний»)

Д.А. Богданова