Артефакты анализа удобно отражать на конструкции ЯП естественным образом, а не через костыли (классы)
Я согласен, что в ООП сделали странное. Я бы описал это так: придумали новую мощную абстракцию (класса и объекта, а позже - интерфейса), а потом зачем-то все, что было наработано ранне и было вполне себе хорошо - начали представлять как классы и объекты. Объект "5", метод "add" и т.п. По-моему тоже просто некоторые задачи/решения по своему характеру проще мыслятся на обычном процедурном языке или на чистом функциональном языке, а другие классы задач/решений - легче выражаются на ООП (там, где состояние имеет значение, с какими-нибудь стеками, например). ИМХО, будущее не за шовинистическими, а за плюралистическими языками, где есть и то, и то, и бери, что тебе удобнее в данном месте (скажем, F#). Ну, правда, с моей т.з. у мейнстримных ОО ЯП есть несколько детских дефектов, мешающих инкапсуляции сложности... ФП именно в этих местах зачастую выигрывает, и вовсе не за счет того, что в ФП не работают с состоянием, а, например, за счет того, что строго блюдутся границы и нет всяких "static", которые суть скрытые глобалы.