ПОЧУВСТВУЙ КЛАСС

Книга Бертрана Мейера - Почувствуй класс В книге обобщен многолетний опыт обучения программированию в ETH, Цюрих. В ней удачно сочетаются три грани, характерные для профессионального программирования

О книге

В книге обобщен многолетний опыт обучения программированию в ETH, Цюрих. В ней
удачно сочетаются три грани, характерные для профессионального программирования, – наука,
искусство и инженерия. Она в первую очередь ориентирована на студентов, обучающихся в обла-
сти информационных технологий, и их преподавателей, но представляет несомненный интерес
для всех программистов, создающих программный продукт высокого качества.
В книге излагаются основы объектно-ориентированного программирования (ООП). Осо-
бое внимание уделяется корректности программ за счет введения контрактов – предусловий, по-
стусловий методов класса, инвариантов классов. Глубоко и подробно рассматриваются такие меха-
низмы ООП, как наследование и универсальность. Изучаются алгоритмы и структуры данных –
массивы, кортежи, списки, хэш-таблицы, различные виды распределителей, деревья. Подробно
рассматриваются рекурсивные алгоритмы и рекурсивные структуры данных. Даются основы
лямбда-исчисления и вводятся агенты, поддерживающие функциональный тип данных.
Язык Eiffel используется как рабочий язык программирования.
Книга содержит предисловие и шесть частей. Шестая часть содержит пять приложений, в
которых дается сравнительный анализ языков программирования – Java, C#, C++, C.

Об авторе

Бертран Мейер, став преемником Николаса Вирта, с 2003 года возглавляет знаменитую кафедру Software Engineering в ETH, Цюрих, – в одном из старейших университетов Европы. Он
автор языка Eiffel, основатель и научный руководитель фирмы Eiffel Software (www.eiffel.com).
Бертран Мейер внес неоценимый вклад в развитие теории, практики и технологии объектно-ориентированного программирования. За свою книгу Object-Oriented Software
Construction, которая по праву считается библией ОО-программирования, он получил премию JOLT. За заслуги в этой области стал первым лауреатом престижной премии Дала-Ни-
гарда (авторов первого ОО языка – Симулы).
Технология «проектирования по контракту» (Design by Contract), предложенная Бертраном Мейером и в полной мере реализованная в языке Eiffel и в среде разработки EiffelStudio,
оказала серьезное влияние на повышение общего качества программных продуктов в современной индустрии ПО.
Бертран Мейер – автор многочисленных научных работ, серии книг (три его книги пере-
ведены на русский язык), организатор конференций, редактор журнала по ООП, лауреат
премий ACM, Mills и других.
Давняя дружба связывает его с Российским программистским сообществом. В молодые
годы он проходил стажировку в Академгородке у А.П. Ершова, является почетным доктором
Санкт-Петербургского государственного университета ИТМО.
В предлагаемой читателю книге обобщен опыт восьмилетнего обучения программированию в ETH. Как сформулировал автор, цель этой книги – не просто дать основы инженерии
программ и получить опыт создания работающих программ, но показать красоту принципов, методов, алгоритмов, структур данных и других определяющих дисциплину
инструментов. И, может быть, самая главная цель – привить чувство, заставляющее вас делать не просто хорошее ПО, а выдающееся, и стремление создавать программы высочайшего

Доступные ресурсы

«Почувствуй класс» основан (на момент публикации оригинала книги) на шестилетнем опыте преподавания курса «Введение в программирование» в ETH (Цюрих), который читается
всем студентам, поступающим на отделение информатики (computer science). Параллельно с созданием курса и книги разработан большой объем учебных материалов. Приветствуется
использование этих материалов при обучении студентов.
На сайте, посвященном курсу и книге:
http://touch.ethz.ch, можно найти ссылки на:

  • полный набор слайдов к курсу (PowerPoint + PDF) в его последней версии;
  • доступные для загрузки видеозаписи лекций;
  • дополнительные материалы;
  • упражнения;
  • слайды для практических занятий (учебные пособия);
  • страницу Wiki для преподавателей, использующих эту книгу в качестве учебника;
  • доступную для загрузки программную систему «Traffic» (Windows, Linux…);
  • опубликованные статьи и отчеты о нашей учебной деятельности, которая связана с
  • курсом и другими работами, ведущимися на факультете, включая разработку основ
  • курса TrucStudio;
  • информацию о курсах в других университетах, применяющих эту книгу как учебник;
  • список опечаток;
  • уголок преподавателей (требуется регистрация) – активных членов сообщества, обменивающихся опытом работы.

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

Посвящение

Эта книга посвящена двум пионерам информатики в знак благодарности за их неоценимое влияние и блестящее понимание сути вещей:
Энтони Хоару (C.A.R. Hoare) – по случаю его 75-летия и Никласу Вирту (N. Wirth) – с особой благодарностью за его вклад в становление информатики в ETH.

Предисловие редактора перевода

Так учат в ETH

Швейцарское федеральное высшее техническое училище – ETH (Eidgenossische Technische Hochschule) входит в пятерку лучших университетов Европы. Для программистов ETH славен тем, что именно здесь Никлас Вирт создал знаменитую серию языков программирования – Algol-W, Pascal, Modula, Oberon. Язык Pascal воплотил идеи структурного программирования и структурных типов данных, став де-факто языком, на котором в большинстве
университетов учили программированию в течение десятилетий.
Последние 8 лет кафедру Вирта Software Engineering возглавляет профессор Бертран Мейер (по правилам Швейцарии профессор Вирт после 65 лет не занимает административных постов, оставаясь почетным профессором и научным консультантом университета). Меняются персоналии, но традиция остается, и эта кафедра ETH по-прежнему остается центром, генерирующим новые идеи, как в программировании, так и в обучении программированию.
Перед нами фундаментальный труд профессора Бертрана Мейера, создававшийся в течение 6 лет преподавания в ETH. Книга, рассказывающая о том, чему и как учат программистов в ETH, интересна, полезна, необходима всем, кто учит и учится программированию. Это первый и очевидный круг читателей книги.
Если бы эта книга была просто учебником по программированию, ориентированная только на студентов и преподавателей вузов, то и в этом случае ей цены бы не было. Но эта книга, как и другие книги Бертрана Мейера, интересна всем работающим программистам
вне зависимости от уровня их квалификации. Она интересна уже тем, что учит не просто программированию, она учит, как программировать хорошо. В ней, помимо важных аспектов информационных технологий есть нечто большее: она учит философии мышления человека, создающего программные продукты.
Достаточно трудно определить суть программирования как научной дисциплины. Известная книга Кнута называется «Искусство программирования», книга Гриса – «Наука программирования», книга Соммервилла – «Инженерия программного обеспечения». Википедия утверждает, что программирование содержит все эти части – науку, искусство и инженерию.
Книга Бертрана Мейера «Почувствуй класс» дает нам прекрасный пример сочетания этих разных сторон программирования. Здесь есть хорошая математика, например, приводятся разные варианты доказательства фундаментальной теоремы «о неразрешимости проблемы остановки». Глава 15, посвященная разработке алгоритма и программы топологической сортировки, – это образец искусства программирования. Рефрен всей книги – инженерия про-
грамм. Автор стремится с первых шагов учить профессиональному стилю программирования, ориентированному на создание программных продуктов высокого качества, создаваемого из повторно используемых компонентов, имеющих долгую жизнь.
И при обучении, и в реальной работе крайне важно и крайне сложно соблюсти баланс между этими гранями программирования. Принципиальное решение этой проблемы дает использование контрактов при проектировании и разработке программной системы. «Проектирование по контракту» – это главный вклад профессора Бертрана Мейера в современное программирование.
Бертран Мейер – автор языка Eiffel и научный руководитель созданной им фирмы Eiffel Software, успешно работающей многие годы, реализовавшей многие крупные проекты в раз-
личных областях – здравоохранении, банковском секторе, обороне. Бертран Мейер не без основания полагает, что объектно-ориентированный язык Eiffel является лучшим языком
как для целей обучения, так и для разработки серьезных промышленных проектов. Понятно, что язык Eiffel и среда разработки Eiffel Studio стали тем рабочим окружением, на базе
которого строится обучение в ETH.
Несколько важных принципов положено в основу обучения:

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

У студентов с самого начала вырабатывается понимание важности спецификации разрабатываемого ПО. Код всего программного обеспечения, предоставляемого студентам, открыт, что позволяет перейти на нужном этапе от понимания интерфейса к
пониманию реализации. Такой подход называется «извне – внутрь».
Возникает естественный вопрос, насколько опыт обучения в ETH может быть тиражирован и использован при обучении в других университетах, в частности в России? Заметьте, все
программные средства, все учебные материалы ETH доступны для свободного использования всеми заинтересованными преподавателями..
Не хочу выступать в роли апологета Eiffel и призывать всех завтра же учить так, как учат в ETH сегодня (полагаю, что найдутся те, кто, прочитав эту книгу, решится на такой шаг).
Но вот что совершенно бесспорно. Опыт обучения программированию в ETH нельзя не учитывать. В первую очередь это касается контрактов. Они должны появляться с первых
программ, написанных студентами, они должны быть неотъемлемой частью профессионально разрабатываемого ПО. Хороший курс обучения программированию, так же, как и
курс, реализованный в ETH, должен включать все грани программирования – науку, искусство и инженерию.
Я уже говорил, что признанных учебников по программированию, используемых в разных университетах, до сих пор нет. Книга «Почувствуй класс. Учимся программировать хо-
рошо с объектами и контрактами» – один из претендентов на эту роль.
Как всегда при переводе возникали проблемы с переводом тех или иных терминов. Как правило, для большинства терминов при первом упоминании в скобках указывается оригинальное значение термина. Некоторые пояснения по поводу перевода отдельных терминов даются в сносках по ходу изложения. Все страничные сноски принадлежат редактору перевода.
В заключение несколько слов о профессоре Бертране Мейере. Вот что говорится о нем в Википедии: «Бертран Мейер является одним из ведущих ученых в области инженерии программного обеспечения. Он автор девяти книг. Им опубликовано более 250 научных работ, охватывающих широкий спектр направлений, все из которых трудно перечислить. Вот лишь некоторые из них: методы построения надежных, повторно используемых компонентов и программных продуктов, параллельное, распределенное и интернет-программирование, технологии баз данных, формальные методы и доказательство корректности программ».
Он хорошо известен российским программистам. Почетный доктор СПбГУ ИТМО. Из 9 его книг это – третья книга, переведенная на русский язык. Первая книга, «Методы программирования», появилась еще в 1982 году под редакцией Андрея Петровича Ершова. Перевод второй его книги, «Объектно-ориентированное конструирование программных систем», называемой без преувеличения библией «объектно-ориентированного программирования», вышел в 2005 году с большим запозданием по отношению к первому изданию ори-
гинала книги. Оригинал данной книги, «Touch of Class. Learning to Program Well with Objects and Contracts» вышел в 2009 году, так что запаздывание с переводом не столь велико.
Бертран Мейер знает русский язык, в молодые годы проходил стажировку у А. П. Ершова в Академгородке, где была написана одна из первых его статей. Довольно часто приезжает в Россию, выступает на конференциях. Последняя организованная им международная
конференция по программной инженерии – SEAFOOD 2010 – проходила в июне 2010 года в Санкт-Петербургском государственном университете.
Нельзя не отметить стиль, в котором написана эта книга. Как и все книги Бертрана Мейера, она интересна своим широким культурным контекстом. Символично то, что на обложке оригинала книги «Touch of Class» помещена картина Рафаэля «Академия Платона», в цен-
тре которой Платон, беседующий с учениками.
Позволю и себе закончить предисловие несколькими литературными ассоциациями.
Эпиграфом к книге вполне могли бы служить строки стихотворения Бориса Пастернака:

Во всем мне хочется дойти
До самой сути.
В работе, в поисках пути,
В сердечной смуте.
До сущности протекших дней,
До их причины,
До оснований, до корней,
До сердцевины.

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