Как учить программировать хорошо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. Изд. «Интернет Университет ИТ», «Бином, Лаборатория знаний») Д.А. Богданова |
| Оглавление| |