The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Dr Alan Kay On The Meaning Of "Object-Oriented Programming"

Alan Kay recalls the origins and meaning of OOP:

http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
John Topley Send private email
Wednesday, April 25, 2007
 
 
Wow.  Thanks for that.
AllanL5
Wednesday, April 25, 2007
 
 
Kay is correct, C++ is not an object oriented programming language and does not support object oriented programming.
Meghraj Reddy
Wednesday, April 25, 2007
 
 
Interesting. Thx
Dino Send private email
Wednesday, April 25, 2007
 
 
I don't have a computer science background and the stuff in that link went right over my head.

My primitive understanding of OOP is at the level of "Cat is an Animal", "Cat is also a Pet", so an object of class Cat can be cast to type Pet etc. While Animal's, Cat's, and Pet's can all Eat() only Cat's can Miaow().

It's like driving a car - easy enough until something breaks down.
230 Volts
Thursday, April 26, 2007
 
 
The definition of Object Oriented Programming is very simple - it is programming which is oriented around objects, thus taking advantage of Encapsulation, Polymorphism, and Inheritance to increase code reuse and decrease code maintenance.
Tony Marston Send private email
Friday, April 27, 2007
 
 
Meghraj Reddy claims C++ is not an OO language, but fails to identify _which_ of the umpteen defintions of OO disqualifies it.

Tony Marston is more clear.  His definition fits C++ quite well.  Oh, wait--C++ fails one requirement: "decreases code maintenance."

:-)
Wes Groleau Send private email
Friday, April 27, 2007
 
 
"thus taking advantage of Encapsulation, Polymorphism, and Inheritance to increase code reuse and decrease code maintenance. "

Well, "increase code reuse" and "decrease code maintenance" WERE two of the percieved advantages of OOP.

Sadly, I agree that OOP approaches have not resulted in these advantages being obtained.  OOP code tends to be so nested and obscure that reusing it is difficult.

Also, they keep changing the under-pinnings of OOP systems (RogueWave, Standard Library, Standard Template Library, OWL classes, MFC classes, etc) -- such that every upgrade of Solaris or Windows or your compiler seems to require adapting all your program code to whatever the new Class of "String" now happens to be.
AllanL5
Friday, April 27, 2007
 
 
Based on Dr. Kay's definition, static type systems are fundamentally incompatible with Object-oriented programming. That's the one that knocks C++ out of the running.
Chris Tavares Send private email
Friday, April 27, 2007
 
 
AllanL5: Well, "increase code reuse" and "decrease code maintenance" WERE two of the percieved advantages of OOP.

It is always possible to achieve high code reuse and low maintenance with OO, but it all depends on your particular implementation. If you build a piece of software using OO techniques, and that software turns out to be a pile of steaming crap, is that the fault of OO? Or is it your faulty implementation?

Too many programmers invent a set of artificial "rules" which dictate only one way in which OO can be implemented, and this is where they fail. They create classes for things which do not require classes, they abuse inheritance and produce overly complex class hierachies, they abuse the concept of design patterns by attepting to use as many patterns as possible instead of just enough to get the job done.

I ignore such stupid rules - for which I am regularly caled a heretic - but I am still able to produce software which does actually deliver high reusability and low maintainability.
Tony Marston Send private email
Sunday, April 29, 2007
 
 
In all fairness, it's not "programmers" who are inventing these "artificial rules", it's people like Alan Kay, Mr. Holub, theoretical "OO" people, who keep trying to say what IS and IS NOT "OO" programming -- as we've seen in this thread.

Even "C with Objects" has been accused of being "not OO enough" in this thread.

Point being, as engineers we should use whatever tools we have access to, to try to manage the complexity of software development.  If OO based tools help, use them.  If not, don't.

The industry is in a state of flux, with Java and several other languages evolving fairly quickly.  We'll come to a new stability soon, I hope.

Until then, don't be so quick to hurl around labels, and have religious discussions about what is "Pure" enough, or "OO" enough.  Just be engineers and use what's useful for today's problems.
AllanL5
Sunday, April 29, 2007
 
 

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
 
Powered by FogBugz