|Programming Language Elitism|
|March 14, 2013, written by Maxim||Technical|
Often people say that if you want to be a ‘real’ programmer you have to program in C/C++. Other languages like C#, Java or Objective-C are too simplistic and not powerful enough. After trying out C++ and C# (and a little Objective-C) I’ve concluded that this statement is stupid and elitist.
I know the most about C++ and C#, so I’ll compare these two languages to share my point of view. The main difference between C++ and C# is that C# is managed and C++ isn’t. This means that in C++ you have to allocate and (more importantly!) release the memory you use. Otherwise your program will continue allocating all the memory in your RAM and you’ll run out of memory causing your program or even computer to crash! C# takes care of memory allocation and releasing automatically. Tracking and fixing memory leak bugs is the biggest task of any C++ programmer, hands down. While a C# programmer has to worry about shit and can get on with what’s important: making games!
The upside of C++ is actually the memory management as well. It allows you to control the way your program works up to the little tittle bits and bytes it uses. What this comes down to is that if you really want to, you can optimize your code so that it runs faster. If you have the ultimate magic skills and loads and loads of time it is possible to optimize your code so bad that it runs super duper fast. This is of course pretty neat.
However! Do you actually need this? In the case of Aril, a 2D game with very simple shaders, it is utterly unnecessary. Right now I’m rewriting the game from C++ to C# using the Monogame engine. It allows us to instantly(!) port the game to Mac, Linux, iOS and Android. But more importantly it’s such a breeze to work in C# as opposed to C++. C++ looks terrible, it breaks down all the time and it’s such an immense time sink. C# on the other hand works just like you’d want it to. It’s got implementations of all the standard functionality you’d come to expect from a programming language and it’s just not so damn tedious to work with. I know that if I’d invested (even) more time in C++, I’d come to understand it better and I’d be able to handle it better and even write more efficient code. But what’s the use? C# just let’s me make games, whereas C++ keeps standing in the way.
Bottom line is: programming language elitism is stupid!