Every language has its strengths and weaknesses. I'll admit I don't know too much about C#, but I think the information I have is correct. If you make a program in C++, that program will only work on the architecture it was created for, for example, x86. Well Windows works on more than just x86, it works on alpha (WinNT) for example. If I made mymirc.dll compiled for an x86 machine, it would not work for people who run Windows on an alpha processor. C# isn't like that. C# uses something similar to the Java VM. A C# program can work on any OS/architecture that has a .NET framework. C# also offers other things that C++ doesn't (technically) have such as managed code, meaning where garbage collection is done automatically. C# and C++ are different languages that approach the same problem from different angles. Depending on what your problem is, one language may be more suited than another.