Sunday, April 10, 2011

If a C++ standard falls in a forest

The next C++ standard (C++0X) is out, or just about out. Should we rejoice? Should we wait in anticipation for the release of new compilers?

The new standard has a lot of good things in it. Things that I want... or would want, if I were developing in C++. (And to some extent, I am still developing in C++, depending on the client.)

But I'm not sure that the future is so bright for C++ developers. The standard has been all but settled and published. The next steps would be for compiler implementers to release new versions of their products and then for developers to incorporate the new features into their code. That's what happened with the last release of the C++ standard.

The C++ environment has changed. After the previous standards update, the major C++ compiler vendors were Microsoft, Borland, IBM, and Intel. Microsoft and Borland were competing fiercely for the Windows developer.

Today, in the Windows market, the only compiler vendor is Microsoft. Borland is gone, IBM has moved to Java, and Intel was never a big player. I see no one that can provide competitive pressure to Microsoft.

And I doubt that Microsoft has much to gain from a new version of a C++ compiler. They are pushing their customers to C#; releasing a C++ compiler would send a mixed message to developers. I think Microsoft may leave the new C++ standard unimplemented.

The other big player in the C++ compiler arena is GNU, with the 'gcc' collection of compilers. But I don't see GNU as a major competitor to Microsoft; certainly not big enough to push Microsoft into implementing the new standard.

There is still a market for C++ -- just smaller than it used to be. Two decades ago, every serious piece of software for Windows was developed in C++. That market has been fragmented into separate camps for C#, Java, Objective-C, Python, and PHP. C++ is useful, but not universal.

We still need C++. While business apps and smartphone apps can be written in the new languages, the new languages themselves are, I suspect, written in C++. The only language compiler that may be written in something other than C++ might be Microsoft's C# compiler (and of course the Python interpreter for the PyPy project).

But C++ may become more of a specialized language, a tool used only be a small subset of the development community. As such, the per-unit cost for C++ compilers may increase. further encouraging C++ users to move to other languages.

1 comment:

Joshua Smith said...
This comment has been removed by a blog administrator.