Закоулки мозга

Процедурный подход подразумевает четкое разделение программы на данные и функции, обрабатывающие эти данные. Это важное для вычислений разделение, т.к. данные и функции обладают разными свойствами: данные пассивны, но при этом живут долго и сохраняются в памяти; функции активны, но нигде не “существуют”, а только лишь “происходят/случаются/выполняются”.


Информационную систему, построенную по этому методу, часто сложно поддерживать. Основная сложность в том, что функции должны знать структуру данных. Различные структуры могут иметь отличающиеся форматы, поэтому функции содержат if-else и switch операторы, не относящиеся к функциональности. Небольшие изменения в структуре данных могут приводить к значительным изменениям в функциях.

Кроме того, связь между данными и функциями получается односторонней: можно легко понять, от каких типов структур данных зависит функция, но сложно узнать, какие функции зависят от конкретной структуры. К тому же число функций, зависящих от структуры данных, принципиально не ограничено, поэтому такие неявные связи данных и функций могут распространиться по всей программе.


На этапе моделирования такое деление является неверным, надуманным и механическим, в отличие от декомпозиции по местам естественного сочленения (по поведению). См. Object thinking - West, David - идеи Платона о полезной декомпозиции и Два вида анализа в науке - противопоставление двух видов анализа в науке.

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

Данные и функции в информационной системе не отражают реальные вещи и изменения

Другими словами, неверная интерпретация главной идеи ОО о возможности представления объектов реального мира в программном коде привела к концептуальному пропуску важного уровня - бизнес-моделирования. Модель составляется формально на основе концептов из языка программирования и информационной системы в целом. А должна составляться без опоры на эти низкоуровневые детали.