Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

What is wrong with C++'s OOP?

Name: 2011-09-11 0:18

Name: Anonymous 2011-09-11 0:39

It's not that there's a problem with C++'s OOP. It's that OOP itself is the problem.

Alexander Stepanov, author of the STL component of the Standard C++ Library has this to say:

Yes. STL is not object oriented. I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. In a sense, I am unfair to AI: I learned a lot of stuff from the MIT AI Lab crowd, they have done some really fundamental work: Bill Gosper's Hakmem is one of the best things for a programmer to read. AI might not have had a serious foundation, but it produced Gosper and Stallman (Emacs), Moses (Macsyma) and Sussman (Scheme, together with Guy Steele). I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras - families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms - you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.

Name: Anonymous 2011-09-11 2:51

There are two ideal kinds of OOP that are quite different from one another: multimethods, and message-passing. They are best exemplified by Common Lisp and Smalltalk, respectively. In ways, C++ is more like multimethods and Objective C is more like message passing.

Except that objective C does a decent job emulating Smalltalk, and C++ does an absolutely horrid and terrible job emulating CLOS.

Java and C# were then inspired by C++, not the venerable progenitors of OOP, and so now OOP has completely lost face because nobody even remembers what the hell it is.

Don't change these.
Name: Email:
Entire Thread Thread List