30 8 / 2014
As known as the “Which language should I use syndrome”.
Short answer: . Not much of a helpful answer, huh? Well, that’s because there is no right answer. If you have a bit of free time on your hands feel free to read on and dig into the details.
I’ve been programming for about 5 years now and doing game development for 3 years. You would think that this is somewhat of a long time, and you get massive amounts of experience during such a long period of time. Well, false, and false again.
Being a game developer for 3 years feels like if I would have just started yesterday. Yes, I know a whole lot more than when I got started, but I still have to look up and learn new things on a daily basis - which is not a bad thing, in fact that’s the only way to get truly professional at something -, and yes, occasionally I do feel like a beginner.
Lately I’ve been expanding my knowledge about other programming languages. I’ve started off programming in Java, and that was my “one and only” programming language - I also used a bit of PHP and JS, nowadays a bit less than back when I started but I like them both, especially JS since Node.js is around - for a really long time. One or two years down the road I started learning C# in school, but unfortunately I didn’t pick up any new programming concepts since C# and Java is extremely similar and while working with C# all I seen was that this thing only has negatives compared to Java (my main concern was the lack of being cross-platform). Of course I was wrong and once I got comfortable with both languages I seen the ups and downs of both. A bit later I’ve learnt Python and while all the syntactic sugar was nice, the whole language felt too “scripty” for me so I put the books back on the shelf and rarely ever used Python since then. Don’t get me wrong, Python is not a bad language, it’s that it is not for me and my taste. Recently I learnt C and C++ because I wanted to learn about low-level concepts in more detail and I wanted that so praised performance of compiled languages that every game developer prays for at lonely nights. Or is it just me? O-well.
Now that I’ve expanded my tool set of programming languages, I finally truly understand the quote:
If you only have a hammer, you tend to see every problem as a nail.
After working a tad bit with all of these languages (a few projects with C, C++, Python and obviously a lot with Java and PHP/JS/other web development languages) I can tell you that if you’re listening to other people that are praising their “one and only” programming language - see how I mentioned in the beginning of the post that once I was at this stage - and telling everybody that they should be using that language for everything you’re only going to hurt your own workflow.
Speaking for myself, I know that I wouldn’t be using C and C++ on a daily basis for game development, because I love the high-level privileges of the higher-level languages like Java or Python. On the other hand I would never use anything else than plain C for something like kernel development - if you would think that is not a common thing anyways you would be wrong; Linux, FreeBSD and many other operating systems’ kernels are completely open source and everyone (well, the competent developers) is free to contribute -, while I can see the benefits of using C++ for AAA game development. I can also see how Python is handy for rapid development (for me that’s mostly prototyping) on the desktop as well as on the web with the brilliant back-end frameworks like Flask and Django. PHP is beginner friendly with it’s nice syntax, great documentation and thousand, if not millions of free learning materials - as well as frameworks - on the web. It’s a great entry point if you want to get into programming, really.
When it comes to Java, and to the question that why is that still my favorite language out of all others, the answer is simple: It’s the right tool for me. You can use it for development both on the desktop and the web - *cough* plus, Android *cough* -, the syntax is clean (possibly the best out of all the listed languages’ syntax, maybe Python comes close in readability), the language is high-level but not too much (remember how I said Python felt too scripty, while C and C++ felt too cumbersome on a daily use to me), it’s strongly typed, has lots of APIs as well as wrappers around, and this is the language that I’m most comfortable with.
See, this is a strong part of my point: Not only do you have to pick the right tool for the right job - obviously, you are not going to get started writing desktop games with PHP, right?! - but also when there are multiple tools around that can be used for the same purpose you’re going to (or at least should) reach for the tool that you’re most comfortable with. When you can use either a nail or a screw, some people will take a hammer and some people will take the drill. And while obviously both nails and screws has their ups and downs, as long as they get the job done and you’re happy with the result you should be working with the tool that you’re most comfortable with.
27 8 / 2014
Okay, so it’s been 1 year since I’ve opened this blog and since then I rarely ever used it. Even when I did I mostly posted about small progress updates in my learning curve - I was still learning how to render something with modern OpenGL, heh - and while that was completely fine back than, now I want to make this blog look like professional, that would fit into my portfolio well later on.
I’m planning on making tutorials on many development subjects, as well as post some bigger progress updates (this time around about a bit more relevant stuff :)). I’ll start off right now: I’m working at Jumpbutton Studio for over a month now. I really love working here, all my co-workers are nice and knowledgeable (as well as the managers). Sadly, I can’t and won’t post progress updates about the studio’s games (at least not before a manager allows it) because I have an non-disclosure agreement with the studio.
So, I’ll be back soon and hopefully I’ll finally make this site content rich. See you all soon. :)