Шесть лет назад в Интернет-университете информационных технологий была переведена книга Бертрана Мейера , возглавившего тогда кафедру Никлауса Вирта в Швейцарской высшей технологической школе Цюриха. Уже в той работе автор не только изложил методологию объектно-ориентированного программирования (ООП), но и предложил формат преподавания студентам и практикующим программистам. Данная книга в программистском обиходе получила обозначение «библия ООП». Сейчас мы представляем новую книгу Мейера «Почувствуй класс» (Touch of class) с подзаголовком «Учимся программировать хорошо с объектами и контрактами». Как и первую книгу, ее перевел и редактировал профессор Владимир Биллиг — известный специалист в программировании и педагог.
Книга посвящена важному направлению в теории и практике программирования, а именно программной инженерии, девизом которой может служить выражение: программа не только должна быть написана, но и должна правильно работать. Еще в первой работе целью программной инженерии указывалось нахождение путей построения ПО высокого качества в связи с пониманием качества как компромисса различных целей, определяемых внешними факторами, понятными пользователям и клиентам, а также внутренними, понятными проектировщикам и программистам. При этом действительное значение имеют внешние факторы, тогда как управление программной системой рассматривается лишь через внутренние факторы, которые и определяют эффект использования программной системы. Отсюда следует, что реальное существование любой программной системы рассматривается в рамках программной инженерии как поиск компромисса в конфликтной ситуации между внешними факторами качества ПО и решением, обеспечиваемым объектно-ориентированным подходом.
Основное отличие новой книги Мейера в том, что в обучение программной инженерии положены следующие принципы: начинать учить следует сразу ООП; с первых шагов студенты должны работать в мощной программной среде с множеством классов, создавая из готовых компонентов приложения с графическим интерфейсом; для работы в такой среде достаточно знания интерфейсов, построенных на контрактах. Под контрактами Мейер понимает спецификации свойств программных элементов (классов или методов), предназначенные для потенциальных клиентов. Виды контрактов: предусловия, постусловия, инварианты класса. При этом у обучающихся с самых первых шагов вырабатывается понимание важности спецификации разрабатываемого ПО, а если еще код всего представляемого ПО открыт, то переход от понимания интерфейса к пониманию реализации не вызывает затруднений. В книге такой подход называется «извне внутрь».
Книга «Почувствуй класс» состоит из шести частей. Первая посвящена основам: введение в круг основных понятий, понимание объектов и работа с ними, основы структуры программ, интерфейс класса, логические отношения рассматриваемых понятий, создание объектов и выполняемых систем. Здесь же дается описание структур управления, понятие подпрограмм, функциональной абстракции и сокрытия информации, кроме того, объясняются понятия переменных, присваивания и ссылок.
Во второй части книги даются краткие сведения об аппаратных представлениях в части кодирования данных, о памяти, командах компьютера и т. п. Затем приводится описание синтаксиса языка, используемого в книге, а также того, что представляет собой язык программирования и инструментарий работы с программными текстами.
Алгоритмы и структуры данных и работа с ними составляют содержание третьей части книги, внимание в которой уделяется фундаментальным структурам данных, а также универсальности и сложности алгоритмов. Рассмотрены виды обработки данных — рекурсия и деревья. В частности, бинарные деревья и различные виды перебора, переходы от циклов к рекурсии. Понимание рекурсии автор связывает с построением контрактов для рекурсивных программ. Отдельно представлены материалы по проектированию и инженерии алгоритма, связанного с топологической сортировкой.
Приемам программирования посвящена четвертая часть книги. Первый вид приемов связан с наследованием применительно к объектам и классам, а также к контрактам. Другой вид рассматривает операции как объекты через агентов и лямбда-исчисление. Здесь же описывается процесс проектирования и управление событиями.
Пятая часть носит название «Цель – инженерия программ» и посвящена построению качественного ПО.
Шестая часть состоит из приложений, охватывающих введение в языки Java, C#, C++, описание перехода от C++ к Cи и использование среды программирования EiffelStudio.
Круг читателей новой работы Мейера охватывает как действующих программистов, которые хотят овладеть методами программной инженерии, гарантирующими качество работы, так и всех, кто стремятся стать профессиональными программистами. Отдельное внимание в своей работе Мейер уделяет преподавателям, «обращая их в веру», что ООП ведет к созданию качественного ПО.
В заключение следует сказать о том, что книга представляет во многих смыслах образец достойных публикаций по программированию, как в части содержания, так и в части авторского представления материала, поэтому, безусловно, читатель воспримет ее с благодарностью.
Бертран Мейер. Почувствуй класс. М.: Национальный открытый университет «ИНТУИТ»: БИНОМ. Лаборатория знаний, 2011. – 775 с. ISBN 978-5-9963-0573-5.