Re: Bob's 'Self-aggrandizing ignorant' Count: Was: What databases have taught me
Date: 28 Jun 2006 21:43:34 -0700
First, your response to Adrian Alston was excellent. I'm finding your perspective on OO quite insightful. You're helping me to better understand some of the annoyances that started driving me away form OO in the first place.
> > Ok. At the moment I have to agree that "just an
> > arbitrary and ad hoc" is this far unjustified. I don't
> > know anything about the origins of Simula nor of those
> > early days of OO. So maybe Bob is right; but, yes he
> > hasn't demonstrated the "arbitrary and ad hoc" yet.
> It is a falsifiable statement. I leave it to the reader to
> verify for himself or to contradict for himself. If the
> creation was not arbitrary, what principles drove the
> design of language features? If the creation was not ad
> hoc, what drove the need for the computational model?
Were you asking about OO generally or C++ specifically? I can't comment on the general origin of OO. If the creation was driven by principles and if OO was meeting general needs, hopefully someone will explain so here.
> > Furthermore, in the case of C++ and it's particular OO
> > concepts, I don't think "arbitrary and ad hoc" is
> > justified. Stroustrup put a great deal of thought and
> > design into the C++ version of OO concepts. As did many
> > other people during it's evolution.
> Can you enumerate the principles used and the impetuses
> for inclusion of new features? Did a concern for
> correctness ever drive the addition of a feature? Did any
> theory or branch of mathematics drive the addition or
> removal of any feature?
Stroustrup's D&E book covers this quite well. As the title suggests he covers the design and evolution of a number of C++ features. Generally he enumerates the principles (lack of overhead, compatibility with C, ease of implementation, correctness, etc) and the impetuses (efficiency, type safety, expressivity, etc) behind features. And yes (if I understand you correctly) the concern for correctness did drive the addition of some features. For example, the new C++ style cast operators were meant to improve type safety over C style casts, to discourage casting, and to make their use more conspicuous. And no it doesn't seem (at least from D&E) that any theory or mathematics drove the addition or removal of features. But that's just my reading, perhaps I missed something?
> OO is just an arbitrary and ad hoc collection of
> features. Those features are useful for creating large
> unpredictable state machines out of small predictable
> state machines.
It's the second sentence that I find insightful, even though it's more of a simple historical fact as you point out. The OO feature set drawn from a genesis in simulation does, as you cogently explain in your response to Adrian, seem to partly influence thinking in ways antithetical to good software design.
> That they are ad hoc is supported by the origin of OO in
> Simula, which was not created as a general programming
> language. It was an ad hoc simulation language that was
> later used for other things too.
> That the features are arbitrary is supported by the
> prevalence of OO languages omitting one or another feature
> from the computational model or adding one or another
> feature to the computational model.
There does seem to be disagreement and confusion in the OO community about which features are OO. Witness the various unresolved flame wars about which languages are "OO" "truly OO" etc. In contrast, it seems quite well resolved and clear that SQL for example is not "truly relational". Perhaps and "object mentor" can step in and provide the current clearly expressed well-defined OO feature set consensus.
> That the features are useful for creating large
> unpredictable state machines is supported by too much
> evidence to enumerate so I will merely point to the ad hoc
> need that drove the creation of Simula in the first place.
- Keith -- Fraud 6