When learning a new programming language some people prefer to learn from video casts, others like to dive straight into the API documentation. I prefer to get general overview of its methodologies and concepts before getting stuck in lots of detail. This feels like a a good way to confirm the language choice before spending weeks hacking away in frustration. The speediest, most economical way I’ve found at doing that is with books.
Books are usually well thought out, structured manuscripts that explain the languages concepts one easy step at a time. Trying to find that same information on the internet often ends up with hours of wasted time scrabbling around search engines full of outdated articles, which can often leave you with large gaps in your knowledge and understanding. There is one problem with Java though; there are literally hundreds of books to chose from, so in this post I’ll try to go over my thought processes on how I made my decision.
For those looking for a definitive answer, I recommend you look for guidance from someone with more experience — this post is by someone new to the language. Okay, that said, let’s dig in.
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.
Hi, my name is Michael and this is my personal blog. Here I’ll be posting my coding thoughts and experiments, specifically in regards to building websites in Ruby (Rails, Roda, Sinatra, etc). This site is powered by Thunderaxe, a blogging platform I’m building using the Roda Ruby framework, which I hope to be open sourcing in the near future.