Читать онлайн «Элегантные объекты. Java Edition»

Автор Егор Бугаенко

Оглавление

239

Эпилог

Предисловие

Об объектно-ориентированном программировании (ООП) написано много книг. Зачем нужна еще одна? Затем, что мы в опасности. Мы все дальше уходим от того, что было задумано создателями ООП, и у нас все меньше шансов вернуться.  Все существующие ООП-языки предлагают рассматривать объекты как структуры данных с прикрепленными процедурами, что в корне неверно. Появляются новые языки, но они делают так же или даже хуже. Объектно-ориентированных программистов заставляют думать так, как процедурные программисты думали 40 лет назад. То есть думать не как объекты, а как компьютеры.

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

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

на какую-нибудь работу, а затем выйдет на пенсию. Посмотрим, как будут развиваться события, и попробуем узнать что-то новое.  Вместе. Поехали!

Погодите. Знаете, прежде чем опубликовать эту книгу, я отправил ее десятку рецензентов, и почти все они возмутились из-за отсутствия введения. Они сказали, что я отправляю читателей на свидание вслепую с первой темой, не дав им необходимого контекста. Еще сказали, что мои идеи сложно воспринимать людям с богатым опытом программирования на C++/Java.

Они находят, что их понимание ООП расходится с моим. Короче говоря, все потребовали, чтобы я написал введение. Собственно, вот оно.

Мне кажется, что ООП было разработано для решения проблем процедурного программирования, особенно на языках вроде С или COBOL. Процедурный стиль написания кода очень прост для понимания теми, кто знает, что процессор последовательно обрабатывает инструкции, манипулирующие данными в памяти. Фрагмент кода на С, также известный как функция, — это множество операторов, которые должны выполняться в хронологическом порядке, перемещая данные из одного места в памяти в другое и попутно проделывая над ними некоторые преобразования. Это работало много лет и работает до сих пор. Таким образом написана большая часть программного обеспечения, включая, к примеру, все основные Unix-подобные операционные системы.

Такой подход технически работает — код компилируется и запускается. Но при этом существует проблема с сопровождением, Автор кода более или менее понимает, как тот работает, пока пишет его. Но если заглянуть в него позже, то будет довольно трудно выяснить, что имел в виду его создатель. Иными словами, код написан для компьютеров, а не для людей. Лучший пример такого императивно-процедурного языка — ассемблер. Он бли-

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