Для начала пример из математики.
Рассмотрим выражение: ab + ac = a(b + c)
Очевидно, что вычисление правой и левой части даст одинаковый результат. Но, первый вариант менее экономичен т.к. требует на одно умножение больше.
Обычно, при решении мат. задач, сначала получается длинное, неэффективное решение и только потом короткое. В программировании имеет место сходная ситуация и весь процесс создания компьютерной программы можно разделить на три этапа:
1. Нет решения.
2. Длинное решение.
3. Короткое решение.
По моему собственному опыту, время между стадиями 2-3 существенно превышает время между стадиями 1-2. Имея это обстоятельство в виду, представим механизм работы воображаемой софтверной компании. Эта компания задумала реализацию большого проекта и через год получила работающую программу в стадии 2. Разве выгодно в коммерческом отношении потратить ещё 3 года на доведения её до стадии 3? Конечно, нет. Вот мы и видим на практике, что очередная версия операционной системы, графического редактора и т.д. требует всё больше места на диске, памяти, частоты процессора.
И это бы ещё ничего, что программы не неэффективны. Зачастую, они ещё содержат ошибки, т.е. производители даже не доводят их до 2-ой стадии. Тратить время на тщательное тестирование программы тоже невыгодно, ошибки лучше исправлять по мере их обнаружения самими пользователями.
-----------------------------
Мысль эта, может и не нова.