Посмотрел интересный доклад с CppCon 2018 про программирование управляемое данными.

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

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

Докладчик приводит конкретный пример реализации анимаций в движке html рендеринга, который получается ускорить в 6 раз отказавшись от работы с объектами и перейдя к использованию парадигмы программирования управляемого данными.

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

В интернетах также рекомендуют посмотреть еще одно видео на эту тему.

В целом после доклада мне стало понятнее, как делать программы дружественные кэшу. Также очевидно это перекликается с функциональным программирование и программирование для видеокарт. Этот подход способен существенно увеличить параллелизм программ.

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