What language should I speak to my computer?

The other day I was working on my game engine…

Wait! another lonely guy working on another game engine

Yes, that’s true I’m working on a game engine, and it’s true because creating a game engine is what I believe the best way to understand how a game engine works from the inside.

Anyhow, that not the point, the point of this rant is every sometime I’m doing something new, I’m stuck to this one big question:

what language do I pick, to talk to my computer?

And here’s how the discussion goes on for hours among my inner components:

C Programming Language

ID: Yeah! that is the mother of all, and developers have been using it from the stone age of computers. If I use this language, I can also exploit the infinite pool of third party libraries, and because every big language today somehow provides a way to glue some C code somewhere, this should be my first choice.

EGO: Hmm, sounds not too shitty, but what about the ‘pointers to structures of unions of structures of function pointers and int typedef’d as ____iNt_8_on_unix, something that after few days of coding, you’ll be dealing in, and won’t you miss the magical problem solver: ‘The OOP’, something the world is going crazy after?

C++ == C + good times + more files

ID: OK, no doubt ancient people have done amazing things with C, and how they did that has been buried deep down in the history, like the mysterious ways of Egyptians building the pyramids. But, this son of C looks like exactly what I need.

It has the power of C, including the bitwise operations that I know I’m never going to use, but it feels good that its there in case I need it, which I know I should never need, because the world today has millions of things, just to avoid things like ‘bitwise operations’ and ‘goto loops’ , even though that’s all where it all started from, and also I hate all the operators because nothing confuses me more than difference between & and && and & and = and ==, and the Lisp is dead, (at least in COMA). And, C++ also has the magical problem solver the OOP! Over that, I’ve overheard somewhere that most of Game Engines run using C++. I know this is it!

EGO: Yes, whatever you have heard is correct, but if this language is so perfect, why are there millions of languages floating around? And, why does every good Game Engine gives us the liberty to choose ‘this’ or some thing better like Lua, javascript or plain text? Must be something wrong with this language right? Like maybe it’s one of those things that are easy to enter but hard to quit? Let’s look at the other options we have?

Objective-C:

ID: Now, no argument on this. This is the language I use almost 23 hours a day. I’m like so perfect in this that I prefer to break the iceberg with some total stranger hot girl I know not interested in me with ObjC. This is it, I’m going to use this now!

[HotStrangerGirl howDoYouDo:^(){@"Yes, I'm fine!"}];

EGO: Hold your horses man! Yes I know how much are you used to this language, because I’m the one on the listening side for those 23 hours, remember, I’m the other component of the thinking process. I know with this language we can make the thing, but then again, do we want the code to run only for Mac and iOS, like don’t you have confidence enough that someday this game is going to be so popular, and you’ll be cursing the day you picked this language for the code. Now it’s up to you, do you want to use the moments of your fame porting your code in some other languages or giving autographs to the fans?

And, this goes on for hours and hours. The selection of language is such a big quest, that sometime I want to write an operation research algorithm to find the best feasible solution. Then, I wonder why are there so many languages?

It’s like imagine you’re sitting with somebody, and you can communicate in N different languages, but you waste T amount of time thinking about it and t is the total amount of time you’re going to talk to each other.

And, now if t < T, then you think, “was all that shit really worth it?”, and to sympathize yourself, you say “maybe someday that shit will help me, in the longer terms”. Here, I can also include M number of other factors like ‘† = total lifetime left’, and ‘ƒ = frequency of productivity in reference to age’,… But, I stop and remember that old saying written on one of the wall of The Animal Farm

all languages are equal, but some languages are more equal than others.

And that’s when I get back to work.