Escolar Documentos
Profissional Documentos
Cultura Documentos
The C++ programming language was designed by Bjarne Stroustrup as an improvement over the
C programming language, incorporating a number of enhancements. Probably the most important
is built-in facilities for object oriented program design, as hinted by a term used as a working title
for the project early in its development: “C with Classes.”
It is heavily used for software development where performance matters, particularly in the realm
of very complex application development where a little bit of OOP goes a long way toward making
that kind of complexity manageable. Unfortunately, C++ itself is an incredibly complex beast of a
language.
Originally, it promised to be a superset of the C language with facilities for object oriented
programming. Another language, developed around the same time (arriving a mere three years
later) with the same goals, was Objective-C. To a significant degree, the differences between the
languages can be attributed to two things:
C++ is listed on Wikipedia as having been influenced by a slew of languages, including C (of course),
Ada 83, ALGOL 68, CLU, ML, and Simula. Most of its casual users would likely have a difficult
time coming up with that list off the tops of their heads, and for the parts of the list that might
occur to them, it is likely that any random pair of casual C++ programmers would not come up
with the same short list. To some extent, the influences on C++ are obscured by how they were
bent to fit the new language, and some might suggest absinthe is another important influence.
Objective-C, by contrast, has two influences that would come immediately to mind for even the
most casual Objective-C programmer (possibly excluding people who are not aware the language is
older than MacOS X): C and Smalltalk. The Wikipedia article about Objective-C offers those two,
and only those two, influences on the language’s design, reinforcing the obviousness of those
influences.
As for achieving the early goals of providing an object oriented superset of C, Objective-C appears
to have succeeded in all essential details, while C++ looks in some respects more like the result of
giving up on those goals in mid-effort to pursue something shiny instead.
Much as the influences on Objective-C are much simpler than those on C++, so is the design of the
language much simpler. The reason Apple (and NeXT before it) chose Objective-C as its primary
object oriented application and system development language seems obvious, in that it offers
simplicity and elegance of design — at least as compared with the design of C++. Outside of its
…com.com/programming-and-develop… 1/5
23/11/2010 A skeptic's history of C++ | Programmin…
eventual rise to prominence as the language of choice on Apple platforms like MacOS X and
Apple’s iOS, however, C++ is the clear winner in terms of popularity and mindshare. Even now, so
many years after its creation and without any major resurgence like Objective-C has enjoyed, C++
is in heavy use. For instance, it is the core implementation language of all the most popular major
Web browsers for non-Apple platforms; Chromium, Firefox, Internet Explorer, and Opera are all
substantially built using C++. Even Apple’s Safari browser is written primarily in C++, though
other browsers for MacOS X have used Objective-C instead.
Perhaps it was the fact that C++ was “first to market” by about three years that accounts for the
massive success of the language, and the relative popularity failure of Objective-C. We can finally
find books about programming in Objective-C on the shelves of every major book store, but they
focus on development for MacOS X and Apple’s iOS. General-purpose, platform-agnostic use of
the language is apparently not a popular enough area of interest for anyone to peddle books about
the subject.
Criticisms of C++ appear to substantially outnumber its praises. Meanwhile, the only people
talking about Objective-C (for the most part) are developers for Apple platforms. Those who
develop only for Apple platforms are generally regarded as untrusthworthy in their pro-Apple
biases by many other programmers, so the fact they primarily sing its praises carries little weight
amongst developers who avoid Apple platforms.
What are probably the best criticisms of C++ have both been attributed to Stroustrup himself. The
first is his statement that C makes it easy to shoot yourself in the foot, and C++ makes it harder —
but when you shoot yourself in the foot with C++, you typically blow off your whole leg. The second
is an interview for IEEE Computer Magazine that was supposedly shelved because it was decided
it could not be published, in which he “admits” that C++ was all a joke from the very beginning,
and he goes on to humorously extoll its vices. Stroustrup has disclaimed the article, saying it was a
hoax, and said that he thinks it would have been funnier if he had written it himself.
By the time one is done reading that fictional interview, one might be forgiven for questioning for a
moment whether C++ really was all a joke from the beginning. If so, the joke seems to have been
made at the expense of Objective-C, which lingered in obscurity for almost a generation — an eon
in the terms of computer technologies — before finally finding its niche in the Apple ghetto. The
fact of the matter is that, without Objective-C and Cocoa, Apple would almost certainly be in real
trouble in its search for developers to support its platforms; the joy many find in developing with
those tools helps developers who are the target of systematic mistreatment by Apple’s legal and
marketing teams overcome some of their misgivings.
One might think C++’s days are numbered, now. Alternatives that seem significantly better suited
to the same jobs litter the landscape, and the obvious direct competitor — Objective-C — is in
some ways the least of them. Objective Caml is regularly held up as an example of a high
performance language, frequently outperforming C++ by a significant margin in benchmark tests,
offering more succinct and well-organized source code, and providing developers with far cleaner
and more interesting development models, and it is not even derived from the same family of
programming languages. D aims to compete in the same space, though its proprietary roots may
hinder its widespread adoption. Google’s Go language presents controversial trade-offs, but there
is no doubt that its design offers huge advantages for certain types of software development,
including concurrency.
Judging by the lessons of history, however, I am inclined to believe that C++ will have a long,
stable tenure in its niche for some time to come. It has even been sneaking into operating system
…com.com/programming-and-develop… 2/5
23/11/2010 A skeptic's history of C++ | Programmin…
kernel development for years, as horrifying a thought as that might be for people who care about
things like OS reliability. There is no doubt that it offers some advantages over C for certain types
of performance-critical programming, and that its library support is extensive — even legendary.
Despite this, at least some of the strength of its hold on developers seems to be based on ignorance
of the alternatives, and that is not a characteristic that will easily be pushed aside by a would-be
competitor.
Get IT tips, news, and reviews delivered directly to your inbox by subscribing to TechRepublic's
free newsletters.
C(plus plus) may well be one of the worst things... Justin James | 11/19/10
…com.com/programming-and-develop… 3/5
23/11/2010 A skeptic's history of C++ | Programmin…
I've lost count of the number of times C based Tony Hopkinson | 11/20/10
Will survive for about 60 years and then... NEW PhilippeV | 11/23/10
Nah by that time it will all have changed NEW Tony Hopkinson | 11/23/10
If you want performance and intelligent syntax Sterling "Chip" Camden | 11/20/10
It's also not entirely true NEW Sterling "Chip" Camden | 11/22/10
Do you have any idea what you are talking about? NEW mbyamukama | 11/22/10
…com.com/programming-and-develop… 4/5
23/11/2010 A skeptic's history of C++ | Programmin…
My Updates
My Contacts
Popular on CBS sites: US Open | PGA Championship | iPad | Video Game Reviews | Cell Phones
© 2010 CBS Interactive Inc. All rights reserved. | Privacy Policy (updated) | Terms of Use
…com.com/programming-and-develop… 5/5