Your choice of first language may very well determine how you go about learning to code, which areas you focus on, and ultimately influence your decisions later on. That said, if you’re serious about becoming a good programmer, your first programming language will not be your last, and after you get through some of the early hurdles of learning to code you can always reevaluate your language choice.
In this post I’ll cover some of the basic things you might consider when choosing a back end programming language. If you’re trying to choose between front end and back end, or aren’t sure of the difference between the two terms, I recommend you read this post first.
Not A Question Of Ability
Before I get into the specifics of each language, however, I want to stress that fundamentally, every programming language could accomplish the same things as any other language.
Your choice, then, shouldn’t be based on a language’s fundamental capabilities, but what you choose to use the language for.
You can read more about this concept here.
Firstly, let’s consider Ruby, which is often coupled with it’s partner framework, Ruby on Rails.
Ruby is a great language for new developers, and definitely my top choice for most rookie coders. That’s because the basics of Ruby are easier to learn than some of the other choices in this list.
Ruby is a relatively “young” programming language. It was developed in the late-90s and became popular only in the last decade or so. The focus of Ruby (and Rails) is on streamlining many of the nitty-gritty processes that other languages force you to customize and code at every step.
This means that for beginners, you can get farther, faster. If you follow along with some common tutorials, like Michael Hartl’s Ruby on Rails Tutorial, or the One Month Rails program, you’ll be able to get up and running with full-service web apps in just a few weeks.
Many popular web applications, include mega-giants like Twitter, built their sites using Ruby on Rails.
Python is another popular scripting language. Like Ruby, the basics of Python are fairly easy to learn, but the disadvantage is that the integration with building a live web-application is not as seamless as the connection between Ruby and Rails.
Python is a great choice for a beginner if you’re interested with playing around with a programming language, but aren’t trying to put up a web application immediately.
For this reason, Python is often taught by universities in an introduction to programming course, where the focus is on learning the fundamentals of programming through command-line applications, not putting together websites.
Java is one of the most widely used programming languages. It’s use grew exponentially throughout the 90s, and because of this, many of today’s software systems are still based around the Java language.
If you’re going to be a professional developer, you’ll probably want to learn either Java or C eventually, but I can’t say it’s the best choice for beginners.
That’s because the learning curve with Java is fairly steep, and there’s a lot of configuration and semantic details that could easily throw a beginner off track.
C, C+, C++, and Objective-C
Like Java, the C languages are extremely popular, and underpin many software systems, but they’re not the easiest route to learning to program.
C languages continue to be extremely popular, and if you have a desire to build native iPhone apps, Objective-C is a must-know.
R, Matlab, and Octave
Last but certainly not least, this group of languages is used primarily for programmers and systems that rely on intense and complicated mathematical calculations.
Generally not used as a first language, these are matrix-based systems that are good for programmers interested in artificial intelligence, probabilistic analysis, and other Big Data, NP-Hard or NP-Complex algorithms, where small differences in processing speed and algorithmic intricacy can make a huge difference in the program’s efficiency.
The same tasks, language choice often comes down to programmer preference, and/or ease of use/appropriateness of a language to complete a given task more efficiently than another.
When you talk to developers, many can be dogmatic about their own preferences, and argue that language or framework X is better than language Y for a thousand reasons.
A good friend and technical project manager once put this most succinctly:
“Language choice is like religion. Everyone’s evangelical about their own choice, and no one can definitively prove that any one is better than the other.”