My own feeling is that object-oriented programming is a useful technique in some cases, but it isn't something that has to pervade every program you write. You should be able to define new types, but you shouldn't have to express every program as the definition of new types.
Yup, that's quite a bashing...
I personally have never needed object-oriented abstractions. Common Lisp has an enormously powerful object system and I've never used it once. I've done a lot of things (e.g. making hash tables full of closures) that would have required object-oriented techniques to do in wimpier languages, but I have never had to use CLOS.
I remember reading once where someone described objects as a "poor man's closure". So should one consider a hash table full of closures an object oriented design or a functional design?

I found the link to that quote: [link|http://www.ai.mit.edu/~gregs/ll1-discuss-archive-html/msg03277.html|http://www.ai.mit.ed...tml/msg03277.html]

(Edited to add link)