Monday, June 26, 2006

C++ is Dying

C++ is dying.

It is complex, tricky, and unforgiving. It lacks rich standard libraries. It is slow for development. It is spoiled by M$ with COM and MFC. It is pushed away from many application domains by Java and C#.

But none of this is the reason for C++ to die. We C++ programmers learned to tackle this, we were never scared away by the difficulties and learned to love the challenges of the C++.

C++ is languishing because C++ programmers lack refactoring support.

With little refactoring tools, people do little refactoring. The code degrades, and as C++ code is not easy to write, it often putrefies faster then grows. Like a beast with low immunity to code bacterias, allergic to anti-biotics, it smells, stinks, decays and eventually dies before it grows to full size.

After first release a corpse of C++ application is left to decompose. Working effectively with a dead body of legacy C++ code is frustrating, and every look to a newest Eclipse, ReSharper or VS.NET for C#, leaves bitter jealousy.

C++ as a language is going to hold the ground in some domains.
But C++ applications without refactoring will smell, then stink, then rot, decay and spoil any programmer who comes in contact with them. C++ developers face a tough choice: stay with crappy legacy or take off from C++. Those who are fascinated with new ideas of evolutionary design, merciless refactoring and aesthetics of clean code are tempted to leave for platforms where code quality is more appreciated. Those who don't care about clean code, stay to patch and band their C++ legacy applications, compromising C++ reputation even further.
This vicious cycle is killing C++.

C++ is dying, and it has nothing much to do with technology. Like everything in software, it is about the people. C++ is loosing good programmers. When good programmers are gone, C++ is dead.

AddThis Social Bookmark Button


At 2/22/2008 11:48:00 AM , Anonymous Krishna said...

Although I am reading your post long after you wrote it, I could not agree more.
Lack of refactoring puts C++ developers and consequently C++ language itself in a very tight spot.

At 12/11/2008 02:33:00 PM , Blogger Brangus Weir said...

I think your points are valid, and it's a darn shame. C++ is my favorite language, but I've encountered some really hideous code. Last Summer, I refactored a 110K line application down to less than 35K lines, and I added functionality too!

But I also feel that a lot of the problem has to do with young programmers who have never had to write on an 8-bit machine with only 4KB of RAM.

They are just wastefull with time and memory. How often have you seen this ugly idiom:

for (int n=0; n < strlen(s); n++)

It's all to common today regardless of language, and programmers who write that stuff are often bad with the garbage collection that C++ requires of a dsciplined programmer.

Question though:
Do you think there is a healthy market for talented C++ programmers to maintain legacy code ?

At 12/13/2008 11:19:00 PM , Blogger Dmitri Zimin(e) said...

Do you think there is a healthy market for talented C++ programmers to maintain legacy code ?
There is a huge market indeed. I won't call it healthy taking the average health of legacy C++ code into account.
And to the surprise of many, there is still ample new C++ development. However it is localized to certain domains (e.g. shrink-wrapped system development) and certain geographic areas (e.g. Silicon valley).


Post a Comment

<< Home