Преждевременная оптимизация

Инвариант
> Дункан, Рэй "Оптимизация программ на ассемблере"

***

Музыкой навеяло...

Рэй пишет:

"Стоит еще раз повторить мудрое изречение доктора Кнута: - Многие беды программирования проистекают от преждевременной оптимизации".


В околокомпьютерных кругах, среди людей, считающих, что они причастны к программированию (типа администраторов сайтов и прочих менеджеров), это выражение достаточно популярно.

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

На самом деле, нужно уже быть профи, чтобы уловить тонкую грань этой преждевременности.

***

Представьте, заказали вам небольшой пассажирский самолет. ТЗ, разумеется, подписывал босс и другие важные люди, вас не приглашали.

Перечитав трижды и обведя маркером парочку заведомо невыполнимых пунктов, помолясь и составив завещание, вы взялись за дело и явились к боссу с проектом.

- Так, обтекатели из стеклопластика - это еще на фига? У меня шурин на металлке работает, закажем там из стали 3.

- Дюралевый корпус? Для облегчения? Опять ты со своей оптимизацией... С чего ты решил, что нужен непременно дюраль? Первую версию сделаем из чугуна. Когда полетит, тогда и решим, стоит ли ее оптимизировать.

- Салон на 72 пассажира? Ты совсем охренел? А почему не 92? Почему не 122? Откуда вдруг эти хардкодные ограничения? Читаем ТЗ, пункт 628.5.3: "Пассажирский салон переменной вместимости, растягивающийся по необходимости". Понятно? "Рас-тя-гивающийся". "По необходимости". Ты динамический салон от статического отличаешь? Или выгнать тебя на хрен "по несоответствию"?

- Шасси... пневматика от... Парень, с тобой не соскучишься. Компоненты от третьих фирм у нас в смете не заложены. Мне тут как-то зять колеса от "Беларуси" подарил - списал трактор в металлолом, - вот их и поставим на альфу. Резина, правда, "лысая", но к бете апгрейд сделаем - купим новые шины. Опять же, импорт. Заказчик счастлив будет, что не китайские.

Я думаю, можно не продолжать. Зато все эти компоненты эффективного менеджмента: ржавый обтекатель, чугунный корпус, колеса от трактора... красиво оформлены UML-диаграммами, что, разумеется, гарантирует их идеологическую непогрешимость, объектную ориентированность и грядущий успех выполняемой разработки.

И когда случается так, что безукоризненно вычерченный в UML, чугунный самолет почему-то не взлетает, виноват, разумеется, исполнитель-программист с его "преждевременной оптимизацией" и стеклопластиковым блистером.