[asterisk-dev] Why not C++?

Matthew Nicholson mnicholson at digium.com
Wed Nov 7 12:50:35 CST 2007

On Wed, 2007-11-07 at 12:21 -0600, Power, Paul C. wrote:
> All-
> I was wondering why Asterisk is not written in C++ or if 
> there is any interest in having Asterisk written in C++.
> I have been watching the list of bugs and other proposed 
> changes to asterisk (fast-ast2).
> It has occurred to me there may be great values in leveraging 
> something like the BOOST libraries to take care of some of 
> the minutiae that seems to cause problems.
> I am thinking mostly collecitons, threading, string processing.
> If this have been discussed before, could some one direct me to it?
> I am interested in hearing any and ALL opinions!

I ask myself the same question every time I have to write asterisk code.
We use C macros where C++ templates could go, we use C structs and a
collection of functions where a C++ class could go, we write our own
string manipulation library where the std::string class could be used,
and lots of other stuff.  Over time I have thought of several reasons
why asterisk is not written and should not be rewritten in C++ (of
course there are a lot of reasons why it should be written in C++ but
I'll leave those out).

1. Most of the developers know C better then they know C++ (if they know
it at all) and can probably write better code in C because of that

2. Rewriting asterisk in C++ would probably introduce more bugs then it
would fix in the short run, and the tremendous effort to accomplish this
is not worth the cost IMO.

3. When the asterisk project was started, g++ was not nearly as good as
it is today, causing people to shy away from it (see number 4).

4. C++ has a bad rep (mostly unjustified). For some examples of this
google for "linux kernel C++".

Theoretically you could slowly rewrite asterisk in C++, but whenever I
catch myself thinking like that I always conclude that it is not worth
the effort.  Hope this helps. :)
Matthew Nicholson

More information about the asterisk-dev mailing list