У нас есть программа, которая должна… Для простоты, предположим, считать результат операции 2×2. Ты пишешь её, код получается идеальным. А что тут сложного-то? Функция и эхо, только-то. Ты молодец, ты помог миллионам людей, которые могут и сами посчитать, что такое 2×2 и чему это равно. Зато ты упростил им задачу. Со временем появляются просьбы вроде: «А почему 2×2 равно 4? Ведь иногда это равно и 100». Или: «А почему только 2×2, почему не считает 3×3?»
Ты приделываешь функции к своей программе. Со временем ты даже дополняешь свой код и открываешь его для других. Или копируешь чужой, выдавая за свой. Или продаёшь свой код, успешно позиционируя его на рынке. Но «заявок» всё больше: «А почему дизайн так уныл?»
Ты задумываешься о «расширении» своей программы. Добавляешь API, позволяешь создавать плагины, делишь на библиотеки, используешь и чужие DLL. Твой код разрастается до сотен мегабайт и десятков других программистов. Вроде бы хорошо, да? А теперь посмотрим с другой точки зрения, с точки зрения сисадмина.
Твоя программа не умеет разве что готовить. Она — идеальный калькулятор, параллельно операционная система, рассчитана на кучу разных архитектур процессора и, на самом деле, во всём прекрасна. Но мне, как сисадмину, от неё требуются лишь те же 2×2 и ничего больше. И я ставлю её, так как выбора нет: программа же одобрена государством и юзерами. Но не получается. Она конфликтует с другой программой, функция которой — вычислять квадратный корень из 4. И, самое дурацкое, она тоже жизненно необходима.
Начинаются пляски с бубнами, чтение миллионов файлов «документации», где ничего толкового-то и нет, попытки декомпилировать код, поиски «лишних» функций, отрубание функциональности, подгонка под определённое железо (ах да, ведь добавив в последней версии под винду поддержку SSE3, ты совсем забыл про тех, у кого нет возможности исполнять эти инструкции). Я связываюсь с тобой, о великий разум, хочу узнать, как заставить работать твою чудную программу. Тебе же, как разработчику, проще было забить на всё и вся, используя всю мощь 16-ядерного процессора, забивая все 64 гигабайта оперативной памяти, занимая уже сотни гигабайт на винчестере — и лишь для того, чтобы вычислить 2×2.
Зато мы не должны жаловаться. Мы ведь во всём виноваты, танцуя с бубном, пытаясь заставить работать очередного «монстра». Нас ведь можно ругать за это. За то, что мы называем кривые программы кривыми.