I have quite a bit of professional experience with the OOP and functional programming paradigms. For quite a while I've held the belief that both are just tools and any non-trivial application can (and likely should) leverage those tools to solve problems effectively.<p>While both paradigms are powerful ways to think about and implements solutions, they are not necessarily useful in the same way and in some solutions one may work better than the other. As is common for most tools.<p>It has been a long time since I've read any fundamental software engineering/CS books - are there any great ones you've read that cover the benefits, and drawbacks of OOP and functional programming and in what situations/solutions they shine or are not so good? Not necessarily looking for one book to cover that specific topic - willing to believe multiple books may be required to cover the breadth of both.
Other than bloat(oversize and slowness) and maybe lack of innovation, I can not think of any other con to OOP. So if there is enough to fill a book I should probably read that too!