

C++ for the next decade - hermitcrab
http://successfulsoftware.net/2008/11/09/c-for-the-next-decade/

======
sireat
For some reason, programming "pure" C instead of C++ gives me more
satisfaction.

------
jwilliams
Being 4th for questions on stackoverflow (as the article mentions) could mean
a lot of things... could mean it's popular, could also mean that people using
it have more questions.

~~~
jimbokun
The trend it's moving in is also important.

If stackoverflow debuted 10 years ago, where would C++ be on that list? What
does that imply for how much C++ will be used in the future?

------
newt0311
It may help if they tried removing things instead of adding more bloat on top.

~~~
hermitcrab
There must be billions of lines of C++ in production systems. Backward
compatibility is crucial.

~~~
curiousgeorge
If you need a fast object-oriented language that can interact with most C
software and libraries and doesn't need a fancy GUI, C++ is great.

~~~
hermitcrab
C++ does fancy GUIs just fine. See Qt.

~~~
curiousgeorge
Qt is GPL.

~~~
hermitcrab
Qt has several licences.

~~~
coffeeaddicted
They no longer show prices for the other licenses on their webpage. But a few
years back it was high enough to cover about 3 months of my living costs.
Which is probably no big deal for larger companies, but for a startup it is.

~~~
curiousgeorge
exactly. funny to be modded down on a hacker forum for pointing out the
obvious: the lack of free GUI development tools is a mark against doing GUI
development in a specific language.

------
Allocator2008
Java will never, ever replace c++. Because there will always be a need for
stuff that "really compiles" rather than "compiles with respect to the JVM"
for both performance, and reliability issues.

In my personal opinion, Java is a fad for children. However, that may be a bit
harsh. Perhaps Java too has its place. But just as sport cars, loved by
teenagers, won't ever replace the need for a reliable sedan in one's more
mature years, similarly, there will always be grownup applications that need
the speed and reliability of c/c++, even if they are not as "easy to program"
(read: rely on plug-in libs) or are not as "flashy" in terms of the ui. Just
as I personally no longer fancy swing sets, I really haven't a need for SWING
either. :-)

(Oh, one other thing I almost forgot: Java doesn't have pointers. No
programming language without pointers should be taken seriously by people who
have reached age 21. It's kind of like having a car without a combustion
engine. It's just nonsense.)

~~~
prospero
I honestly can't tell if this is satire. Does your universe of programming
languages seriously consist of just C++ and Java?

I'm glad that coding in C++ makes you feel like more of a man, but Java's not
the only competition. C++ and Java have both (awkwardly) added closures in
their latest specification, so they're obviously maneuvering against something
outside of your little duality.

Also, I don't see how you can knock Java for its libraries when C++ is
essentially worthless for large-scale development without Boost.

~~~
lhorn
prospero, I have been looking for C++ replacement for desktop programs non-
stop for at least 5 years and found _nothing_. Rubies, lisps and pythons are
great in a little dark corner of server-side development where everything is
under your control, but for targeting thousands of varying desktops you just
can't take that route since many additional variables come into play: size of
downloads, performance, startup times, windows compatibility, etc etc etc.
Plus, all VM-based languages suffer from so-so integration into native OS
or/and excessive weight. You can write an IDE or an Excel replacement in them,
sure, but most desktop software tends to be much smaller.

My last C++ project was a background daemon that would download your RSS feeds
and do some fancy parsing. I wish I could show you how much memory Java
prototype has eaten vs C++ version processing the same OPML file.

No, C++ is not "essentially worthless" without Boost. In fact I never use all
of Boost: your build times becomes #1 conversation topic in the office when
you do. It's better to cherry-pick a few important and lightweight pieces
(like pointers, any, functional, etc). Don't forget about HUGE selection of
plain C libraries too.

Whatever C++ has been used for is still being written and re-written in C++ as
we speak. Newer languages and paradigms wiped out the giant Visual Basic army
of developers (yes, this is what people used to code "basecamps of the 90s"
in, but I don't see these languages threaten C++/C/Obj-C domination for
desktop software on Win/Linux/OSX.

In fact, how many native Python or Ruby GUI libraries are out there? I haven't
heard of one. Only bindings to GTK/Qt.

With all that said, I will be the first to jump the wagon. If I ever get so
lucky.

~~~
prospero
If you have a small, well-scoped application, like your RSS daemon, C++ is
going to be best of breed in most cases. Similarly, if performance is your
absolute primary concern, there's nothing out there that can compete.

For most desktop software, though, neither of these things are true. The
design and scope of the application are constantly changing, and mostly it
just sits there. I write desktop software for a living, including a lot of
CPU-intensive graphics stuff, and I'm infinitely grateful that I work in C#
rather than C++. It makes me many times more productive, makes my work
conceptually cleaner, and makes me a happier person all round. There's a
memory cost, to be sure, but it's acceptable, and 90% of the clock cycles are
spent in C libraries no matter what, so I don't see much of a downside.

My background's in 3D graphics and computational geometry. I've always enjoyed
working in C++ on computationally intensive problems, and reducing a problem
to its cleanest, fastest implementation. But I think that in the real world,
99% of the time, what really matters are the features, and that the widespread
fascination with efficiency is mostly just techno-fetishism.

~~~
lhorn
You're lucky: I also do desktop software but we can't afford to ignore the
growing number of Mac users. While they still represent only about 8% of all
computer purchases, they account for nearly half of "customers who pay for
software" and C# isn't an option for us although we keep monitoring Mono's
progress.

Also, allow me to disagree with you on something:

 _"If you have a small, well-scoped application, like your RSS daemon, C++ is
going to be best of breed in most cases. Similarly, if performance is your
absolute primary concern, there's nothing out there that can compete. For most
desktop software, though, neither of these things are true."_

Perhaps it's our difference in backgrounds, but most desktop software is more
like that: small pieces that need small downloads, small memory footprints and
instantaneous startup times. Just count the number of executable files on your
hard drive and see what percentage of them eats more than 3MB of RAM (measured
in 'private bytes'). Or you can look at the list of running processes: you'll
see perhaps 1-3 behemoths like Firefox or Photoshop there, and one can only
wonder how FireFox memory consumption would look like under JVM or .NET VM.

~~~
hermitcrab
>they account for nearly half of "customers who pay for software"

Have you got any data to back that up?

More like 15% in my experience.

~~~
lhorn
I guess it heavily depends on a market segment, but for "family computer
software" it is true: lots of PC users playing with free/evaluation versions
but for when it comes to premium subscriptions and premium features - most of
them evaporate, whereas Mac users like to stick around.

Look at various PC/Mac softwares out there: most of PC-only software belongs
to "free&shitty" category, but nearly everything for OSX you have to pay for,
and they (users) are accustomed to it.

I am not sure if I can post results of the research my company has done (and
paid for) here.

