... причем в худшем его проявлении - в стремлении переложить всю работу на
подчиненных и нежелании делать ничего самому. Беда в том, что в результате
самому работать приходится еще больше.
Например, недавно мне пришлось писать модуль вычисления выражений (короче,
калькулятор, считающий "a + 2px * sqrt(2) - 3.0em") на C#. В этом языке нет
ничего, кроме объектов. Поэтому я, недолго думая, создал классы Лексема,
Выражение, Оператор и т. п. И оказался в глубокой задумчивости:
а какие же "приказы" им раздать, чтобы они сами все сделали?
Здесь полезно обратиться к аналогии между ООП и управлением предприятием, где
каждый объект - это работник, а программист (ну или разработчик) олицетворяет
высшее руководство. (Можно еще добавить, что операционная система - это
государство, а аппаратура - это сама природа).
Итак, как же мы бы организовали вычисление выражения на предприятии? В нашем изначальном "объектном" варианте задействована толпа служащих - числа, операторы, функции, единицы измерения и т. д. И я не завидую тому менеджеру, которому предстоит давать указания всем этим людям (читай - написать программу взаимодействия всем этим объектам). А как бы вы поступили на месте этого несчастного менеджера? Моим ответом было "написать значение на лбу у каждого, выстроить в ряд и посчитать все самому". Потому что это несравненно проще, чем объяснять каждому правила поведения в нашем выдуманном мире. Так зачем же нам живые люди (объекты)? Нам и мертвые сгодятся! (пассивные структуры). Или, еще лучше, собрать механизм, который, в отличие от мертвых людей, не разлагается. (Написать единый модуль в структурном стиле). Ну или нанять квалифицированного специалиста (купить готовую библиотеку, решающую нашу задачу).
Мораль сей басни в том, что при повсеместном применении объектно-ориентированного
подхода сложность программы не уменьшается, а только увеличивается, поскольку
от менеджера (программиста) требуется координация действий огромного количества
низкоквалифицированного персонала (простых объектов). Возникает бюрократическая
лестница невероятной длины, негативно сказывающаяся как на ясности, так и на
производительности программной системы - работники тратят бОльшую часть времени
на общение между собой, пусть и по делу.
Комментариев нет:
Отправить комментарий