>>14
I was looking at
http://harmful.cat-v.org/software/OO_programming/why_oo_sucks and noticed that even if Lisp (CLOS) supports OO, it doesn't have any of the bad properties listed:
Objection 1 - Data structure and functions should not be bound together
Generic functions and objects are separate things. They're not forcibly bound together, but if you want to code Java in Lisp, you can do that, it's just not good form.
Objection 2 - Everything has to be an object
I don't understand this objection, but you can get a class-of everything, and it's well integrated with the type system, but if CLOS didn't exist, everything would keep working just fine(except for parts that use CLOS). The fact that arbitrary data can also have a class comes with no cost. The data still remains what it is, but it can be used in an OO manner(specialize a method's argument on it) if one wants to.
Objection 3 - In an OOPL data type definitions are spread out all over the place
Absolutely not required in Lisp. You may want to do it for extra safety or speed.
Objection 4 - Objects have private state
Not true, you can access any slot, or symbol from any package. Of course, accessing interfaces/slots which have not been exported, or don't have an accessor may not be the smartest thing to do, but it's not something the language forbids you to do, but if you want such functionality, you can implement it by using the MOP, it's just not considered very smart. There's a long thread about this on c.l.l. and I'm not going to rehash everything that was stated there about it here.
Thus, the conclusion is that CLOS doesn't have any of the issues described by the author.