On Mon, Aug 06, 2007 at 11:06:58AM -0400, Prof David West wrote: > > If pressed into a corner, I would say that C++ is not an OO language at > all - because the philosophy behind its creation is antithetical in > important ways to the IDEA of objects. Examples:
.... > > > The object idea is fundamentally dependent on the concept that > EVERYTHING is an Object - and any language that enforces strong > typing violates this principle. > Which appears to reinforce the statement I made that C++ is not _just_ and OO language. One can program C++ where every type used is derived from a polymorphic base object in the way that you mention. But strong typing is an important defence mechanism against bugs, so it would be silly to actually program C++ in such a way. > Having said that - I would admit that C++ is indeed a Turing machine and > is therefore, at its core, cannot be differentiated from any other > programming language and that it does provide some constructs that allow > a developer to construct objects (classes) and do object-like coding - > but doing so is very unnatural, uncomfortable, and "feels wrong." > This sounds like a C programmer talking! > The idea of objects leads one to very different analytical (mostly > decomposition) and design solutions than procedural or data-based > thinking. Given an object design it is very difficult to express that > design in C++ and trivial to express that design in Smalltalk. (Ruby > makes it easy to express the idea but does make it a bit more difficult, > but only because you have to ignore some non-relevant aspects of the > language.) Lisp - with CLOS, Flavors and similar extensions -also > makes it easier to express object design. > Where do these object designs come from? I get given problems (solve x, y and z). Its up to me to provice the solution, and I usually do it directly in C++, occasionally with a hand-drawn picture to see how chunks fit together. > > > But I would still say that C++ gives me the ability to build more > > complex code, more efficiently, in about a similar or even reduced > > development time to other competitive languages. I couldn't give a fig > > whether it follows a pure OO model or not. > > > > I would be willing to bet that an individual proficient in Smalltalk to > the same degree as you are in C++ could develop almost any piece of > software in 1/3 to 1/5 the time it took the C++ team, and with some > minor tricks make it run in as small or smaller a footprint with an > equal or lesser number of machine cycles. I have consistently seen it > done. > > davew That wasn't exactly the point I was making - I was referring to myself choosing a language for a task given my already extensive experience in C++. It does give a "lock-in" advantage to the language. I also had in mind the supposed C++ replacements, ie Java and C#, rather than say Smalltalk or Ruby. I am not a 1 language shop. I do use Perl for some tasks, as it sometimes is quicker to get stuff done in a rich, interpretive environment. I use TCL for mostly GUI type work, and I'm thinking that Java probably has significant advantages over TCL for GUI stuff. Cheers -- ---------------------------------------------------------------------------- A/Prof Russell Standish Phone 0425 253119 (mobile) Mathematics UNSW SYDNEY 2052 [EMAIL PROTECTED] Australia http://www.hpcoders.com.au ---------------------------------------------------------------------------- ============================================================ 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
