Dave -

Well stated.  

I've never been in the middle of this fray but all around it, and I have to say that I'm always puzzled by it.

By the time Objective C came along I was ready for a "practical" object-oriented language.  I jumped on the bandwagon and was hugely disappointed.   I was disappointed by two things:  That OO didn't live up to my expectations; That C++ rose up like a tide and washed ObjC out of the game for the most part.

My own experience was that I was already an experienced enough programmer that most of what ObjC or C++ gave me, I had already learned to handle with raw C.  The explicitness of "objects" rather than careful and clever use of structures and functions was a boon, but not a huge one.  I had never learned Simula or Smalltalk but had sampled many other languages (APL, Prolog, and Snobol being some of my favorites for specific problem domains).  While I had a degree in Mathematics rather than Computer Science, most of the abstract arguements about the value of "pure OO" have never moved me very much.  

As a pragmatist (completely different kind of pragmatist than Doug though <grin>) and a happy customer of Java, C++, and ObjC (thank you Steve Jobs), I still find the brouhaha over the differences distracting.   I am happy to give over to the purists that C++ is a weak sister to "real" OO, but having never really felt that "real" or "forged" OO was as big of a revolution as often implied, I'm not that motivated by it.  I'm glad to have it, but find it somewhat overrated.

I realize I am a dinosaur in many ways.  I can see how those who cut their teeth on various OO tools (authentic and/or forged) might find this a lot more personal, but I also know that many on this list have as much (or more) grey in their beards as I do. 

As I shared with Guerin in a private conversation...   OO fell short of my expectations of what "Objects" should be.  Composable Simulations and Agent Based Modeling provided a little of that back, but in turn, Agent Modeling fell far short of what I expected from "Agents".

Without needing to disparage either OO or ABM as it is practiced, I see there is great utility in both, I am left to wonder if Computer Science is not hugely irresponsible in using up the best ideas/terms on fairly weak, early examples of what they are pursuing?  In my own field, I find that we "claimed" Virtual Reality at least 20 years too early, probably more.  

Just to add a little more to my morning rant, I have to take a potshot at "Design Patterns" as well.  I was a deep fan of Christopher Alexander long before the Gang of Four wrote "Design Patterns".  I thought it insightful and clever that they discovered/recognized Alexander and did a fair job of applying his ideas to programming, but their book, the movement that went with it, etc. missed *so much* of Alexander's ideas that I was crestfallen. 

Is anybody else out there as disappointed as I with our propensity for claiming territory gained long before anything significant was actually gained?  

-  Steve
PS.  Guerin - See what you started?

 Doug,
 
Some short answers, we can discuss further some time if interested.
First:  the "technical" reasons C++ was not considered OO = strong typing, friend declarations, multiple inheritance, explicit constructors, and an over-dependence on function overrides.
 
Second: subtler, but in my opinion more important, the philosophy of the language - C++ was never intended to be an OO language.  Marketing saw some superficial similarities and jumped on the OO bandwagon and represented the language as something it was not intended to be. (They also worked very hard to redefine OO to be closer to what C++ offered - their own version of Newspeak.)
 
C++ was intended to be a means to impose structured programming discipline on C programmers without, in any way, interfering with the hyper-efficient performance characteristics that arose from being as faithful a representation of the hardware as possible.
 
In contrast - the OO tradition that began with Simula (not Simula I which was already moving away from the philosophical ideal) and was embodied in Self and Smalltalk, did not care about the machine, did not care about efficiency, it was all about the domain - faithful representation of same - and about human-machine "natural" communication about that shared domain (both humans and objects "lived" in the same "world").
 
C++ versus Smalltalk was an _expression_ of an even deeper philosophical divide between formalists and aformalists that traces back to the ascendency of the former during the Age of Reason.
 

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org

Reply via email to