Back in 2010 when I started learning Ruby I was mostly just converting old Perl scripts for my custom ebook toolchain. Shortly after this I rebuilt the original epubBooks.com PHP web application in Ruby on Rails. Since then I’ve written a number of Rails applications including my own self-publishing Flash Fiction service; Drablr.com. As you can see, all my current experience is with dynamic programming languages, there’s not a type in sight.
For the last few years I’ve made an effort to follow respected developers, reading their books/blogs and watching shaver conference talks they give. Every one of those people seem to know a multitude of languages. As 2014 comes to a close I figured it was time I took the leap and expanded my experience with learning a new language.
What’s the best programming language to learn?
From all of my peers I don’t think there’s one who hasn’t worked professionally in at least one statically typed language, so this seems a good way to limit which ones to look at. Still, the choice is quite considerable. Do I go with Objective-C and look to iOS development? Perhaps I could check out Rust or Go? What about jumping into C++? Heck, why not take on the grandaddy of them all, plain old C?
After some months procrastination research, I decided that although learning a newer language like Rust would be pretty cool, it’s probably best to stick with something more mainstream and mature so that I can benefit from the wealth of resources available.
This leaves us with C, C++ and Java.
C was ruled out pretty early on as although it’s a fast and hugely flexible language, it’s not OO. Object-Orientated languages may not be the only programming paradigm around but I’ve learned a great deal about OO from my Ruby experience and it won’t do any harm to remain in this area for the next few years at least.
One down, two to go: C++ and Java.
After a fair bit of searching I found Neil Butterworth’s great introduction to C++ tutorial, and after going through this I seriously considered becoming a C++ programmer. But would this serve me best going forward? If my main focus for the future is going to be desktop application or game development, then it’d be a an easy decision. Look anywhere on what the future of technology is and you’ll see mobile, not the desktop, show up more than anything else, so being able to write a mobile apps would be a big advantage.
It could be argued that learning C/C++ would be a better choice as Objective-C is required to iOS apps, but with the recent introduction of Swift, it looks to me that Apple are moving away from Objective-C in favour of their new programming language.
Looking at any of the charts for what are the most popular programming languages and you’ll see Java right up there (see the TIOBE Index) add that to the fact that current trends show that Android is taking over the mobile market, which uses Java, and you have a very strong argument for choosing that.
So there we have it, my next language s going to be Java.
I’m going to keep a journal of my experiences learning Java, the things I like, the things I hate (I’m sure there’ll be plenty!). I’ll post those here on my blog and I’ll be sure to push any apps I build while learning up to my Github account. I’m sure those first adventures are going to be terrible, but hopefully I’ll make quick progress.