Ага, но главное он не имеет никакого отношения к ООП, вот, видимо, в чем его самый главный плюс.
Если следовать логике, что проект должен состоять из мелких независимых модулей, то никакая это не мультипарадигма, а самая банальная реализация (интеграция через) API. На каком уровне - вопрос другой. Может быть даже на самом банальном, через хранилища, но это она, интеграция. Тогда проект может состоять не то что из подпроектов на разных парадигмах, но и вообще на разных ЯП. Но мы говорим о неделимой части, потому что парадигма относится именно к ней. А интеграция совсем/абсолютно другая песня.
Кстати, в ООП, агрегирование реализуется очень хорошо, через интерфейсы. Вот он как раз твой API. Название даж одно и то ж, только API более абстрактное понятие, однако суть та же. Главный инструмент современного ООП не наследование, как считалось ранее, но именно делегирование (агрегирование) и полиморфизм. То есть возможность менять поведение без изменения сигнатуры. И то и другое плохо реализуется без контрактов. Чтобы следить за соблюдением контрактов нужна динамика, не статика. Вот и всё, получается ты сам же выступаешь за ООП постоянно.
Только интеграцию сильно независимых компонентов путаешь с мультипарадигмой. Если в проект чисто на ООП притащить библиотеку чисто на процедурке, это мультипарадигма? С моей точки зрения нет. Потому что она не оказывает никакого влияния на архитектуру, ибо "живет" (используется), как правило, в классах, то есть инкапсулирована.
Мультипарадигма, в моем понимании, это когда выполнялись-выполнялись на процедурке, потом вдруг побаловались в серединке ООП (контракты, DTO и т.д.) и закончили опять передачей 10-ти параметров в функцию display половина из которых optional. А еще передали колбэков, кинули пару исключений думая, что это аналог GOTO, хотя исключения штука низкоуровневая и когда в блок catch может прилететь что-то связанное с бизнес-логикой, за такое яйки рвут в приличных конторах. Напрочь. Вот это мультипарадигма, сиречь, говно!