A real engineer doesn’t want religion about how to solve a problem – like object-oriented or functional or imperative or logic programming. This piece of the problem wants to be object-oriented, this piece of the problem wants to be functional, this piece of the problem wants to be imperative, and this piece wants to be logic-based. And they all want to work together usefully. It would be awfully bad to write a device driver in a functional language. It would be awfully bad to write a symbolic manipulator in a language with a complex syntax.
— MIT Professor Gerry Sussman, author of the classic book on programming, Structure and Interpretation of Computer Programs