"C++??: A Critique of C++", by Ian Joyner. http://burks.brighton.ac.uk/burks/pcinfo/progdocs/cppcrit
A better title might be, "Why Eiffel Is So Much Better Than C++ (And Java Too, To Some Extent)."
I remember Joyner engaged in epic battles along these lines with BjarneStroustrup in the late, lamented, comp.lang.c++. Basically, Joyner just doesn't see why Stroustrup does things the way he does. Joyner's section on virtual functions is typical; he's asking for early-binding of vtables without thinking about why C++ is anxious not to make things virtual when they don't need to be. Admittedly C++ is damnfoolish about this, but it does make sense when you consider the forces Stroustrup tried to resolve. On the other hand in several ways Joyner is exactly right - Stroustrup and Stepanov have made a really bloody mess of what could have been a cool language. But the solution isn't to rant on. The solution is HorsesForCourses. --PeterMerel
Another solution is to pay closer attention to ObjectiveCee. And why it never caught on. --PCP
And why it just won't go away ... --PM
I keep hearing about those courses that the CeePlusPlus horse is supposed to be good for. I think they're an UrbanLegend. The only courses that I've encountered that come close to plausibility are courses for which CeePlusPlus sire, PlainOldCee, still wins in a runaway. I view CeePlusPlus as an unfortunate muck-hole that sucked in a nauseating volume of otherwise useful programming talent. It is, in my view, a fitting companion to the other great debacles of our industry's history, Apple's LookAndFeel? lawsuit, resulting in the dominance of Windows, and the XWindows graphics "standard", killing the Unix desktop as any sort of competition from the workstation world. All are examples of misguided and premature business decisions that bled precious energy from what had been a dynamic and blossoming field. -- TomStambaugh
Apparently, I have lived through an UrbanLegend myself, then--I'll have to start checking the trunk of my car and my bathroom mirror at night. :) I spent a couple years on a C++ project building a direct-manipulation user-interface management system. For the graphics, user input, and behind-the-scenes constraint-solving system, the speed of a C-like language was necessary, but I cringe to think how the codebase would have looked without the benefits of language-supported OO. Add to that the fact that C++ was the only language known by the entire development team at the time, and I have a hard time imagining that any other horse could have got us so productively down the course we ran. --DavidSaff
See Also: WhatMakesAgoodLanguageGood
Mr. Joyner's work has been extended and published in ObjectsUnencapsulated
My experience is the same as David's. Competent programmers can be much more productive in C++ than C. You do have to accept that being competent is harder, but it is worth it.
But I do suspect that Objective-C might have worked out to be have been a better language than C++ if it had been given an equal chance.
- JonCoupe
How was ObjectiveCee's chance unequal?
C++ became the de-facto standard language for (large-scale) application development on Wintel; and a significant amount of usage on Unix soon followed. Nowadays it also has a significant amount of embedded use.
ObjectiveCee was, for a long time, limited to NeXt machines. With MacOsx essentially being the next NeXt, ObjectiveCee is seeing a bit of a comeback.
Both languages have had quality free implementations available for quite some time. However, C++ has benefited from much greater support by major players in the industry.
C++ was backed by a major benefactor, namely AT&T Bell Labs, from where C came from. So, C++ was viewed as the "natural" or "intended" successor to C. Objective-C was from a relative newcomer/nobody in the industry, and was mostly viewed as a mediocre solution at best -- a novel curiosity.