The Best Programming Languages for Linux Lovers

If you are on the path to Linux Mastery, surely you will understand that computer science and programming is a core part of this. So the question is, which language or languages should you learn in order to propel yourself forward in your career and deepen your understanding of the Linux world?

NOTE: If you already know what you want to learn, feel free to jump ahead to Learning Resources — where you will find links for the Python, Ruby, JavaScript, C, Java, and C++ languages.

To start, the Linux kernel is written in C. So at first look it may seem like a given that you would learn it. However, as a SysAdmin you may need an understanding of multiple languages. And it may be that your job requires you to use Java or PHP more than C, for instance.

Where can I get reliable information on which languages to learn?

When I am deciding which language to learn next, I will generally look to a few different places. First, I'll look at dice.com job listings for Linux Systems Administrators. Generally, each listing will include in its requirements either some back-end, low-to-mid-level languages, like C, C++, or Java, and some higher-level scripting languages, like Perl, Python, Ruby, or JavaScript. The question becomes, first: Which of these do you need for your ideal job, and second: Which one should you learn first?

It helps to have a broad understanding of the typical application and use of the popular languages first. Chris Hawkes' "Top 10 Programming Languages to Learn for 2016" video is a good starting point. He talks about use-cases, industries, and some major shifts that are occurring at this time, and leaves you with a ranked list of relevant, modern languages.

Source: Chris Hawkes, https://www.youtube.com/watch?v=Z56GLRXxh88

Top 10 Programming Languages to Learn for 2016

  1. JavaScript. For web development. Many IT tools. Works with PHP/Python/Ruby/Java back-ends. Node.js full stack. Frameworks: Backbone/Knockout/Angular/React.
  2. Java. For Android development and embedded systems. Many high-paying jobs for Java developers.
  3. Python. Good introductory language. An alternative to PHP and Perl. The Django web-framework is well-regarded. Industry: bioinformatics.
  4. C++. Low/Mid-level language. Standardized beginning with C++11. Many game/physics-engines use it.
  5. C#. Microsoft's .NET Framework. Gradually becoming open-sourced.
  6. Swift. Replaces Apple's Objective-C.
  7. Ruby. For web development. Ruby-on-Rails full stack. Gems are easy to install.
  8. PHP. For web development. It powers WordPress and many other blogs. Overtook Perl's position from the early web.
  9. Go. Created by Google. A low-level, verbose language with garbarge collection.
  10. C. A ubiquitous, fast, verbose, low-level language. Used in many Linux applications.

Chris positions JavaScript as number one in importance based on its ubiquity and utility on the web, its interoperability with other web frameworks, the growing number of IT tools available to JavaScript Ninjas, and the newer full-stack web framework trends, as in Node.js.

Java he places second because of its importance to Android and Embedded Devices.

Python, which you are likely to hear echoed as the "best first language to learn" by many more people than Chris here, has a well-regarded web framework (Django), a number of notable success stories (Disqus, Instagram, Pinterest, Gmail, YouTube), and a great future in industry (in bioinformatics). It is considered easy to learn and is being taught in many top university CS programs as a first language now. It takes the third position in Chris' list.

If you're into gaming, writing game applications, or need to work with physics-based modelling, you should go with C++. It also is a fast language with more-and-more standardization taking place all the time. This makes it more welcoming to newcomers than C.

C# and the .NET Framework is Microsoft's purview. Let's ignore C#.

Swift, which is replacing Objective-C, is Apple's purview. It represents the "major shift" in this list. But let's ignore Swift, too, as we're focused on relevancy to careers in Linux.

Number seven is Ruby. Another easy-to-learn language, with a lot of extensibility via Ruby "gems". Ruby-on-Rails is the Ruby full-stack for the web. This is another language which you may hear touted as the "best first language to learn". As far as I can tell, Ruby is more of a binary variable in searching for jobs, however. Either it's a Ruby shop you're dealing with, in which case it's a necessity — at least in terms of having a basic understanding as a SysAdmin, that is — or they don't use Ruby at all, in which case you can safely ignore it.

PHP is still important on the web. WordPress and other blogging platforms, like Drupal, are a primary reason. It takes the number eight spot.

Go is a newcomer. Created by Google, it does Garbage Collection, whereas C doesn't. Go is a verbose back-end language.

C is number ten on the list. It is a low-level language and is important to an in-depth understanding of the various components of the Linux kernel. C is also considered by many to be the lingua franca of cryptography. So if you're interested in security and encryption, C would be a good choice.

Programming Languages and Average Salaries

Average developer salaries by programming language is an interesting metric to consider. Salary figures are neither reliable guarantees of future earnings nor representative of the strengths of any given language. Ruby, which is largely limited to the web, is a cross-platform general-purpose scripting language. It can do many things that C can, and some that C cannot. But it is not these qualities that make it so that knowing Ruby will net you some $20,000 more per year than C. It's simply, and arbitrarily, the most in-demand/highly-paid language skill at this time. With that said, let's look at the rest of the list.

Programming Languages and Salaries Top 10 List

  1. Ruby $109,460
  2. Python $100,717
  3. Java $94,908
  4. C++ $93,502
  5. JavaScript $91,461
  6. C $90,134
  7. R $90,055
  8. C# $89,074
  9. Visual Basic $85,962
  10. SQL $85,511

Source: http://qz.com/298635/these-programming-languages-will-earn-you-the-most-money/ (2014)

NOTE: I've removed Objective-C from this list, as it is quickly being overtaken by Swift, Apple's new language.

Ruby is number one. If you want to work in a Ruby shop, you'll probably make plenty of money.

Number two is Python. The Python web frameworks will continue to get fleshed out as time goes on. Bioinformatics is a growing field and Python takes the cake here as well. As the industry grows I expect Python salaries to keep suit. These two trends could eventually bump Python up to the top salary spot in a few years.

Java is everywhere and more recently it is everything in terms of Android. It makes sense to me that Java developers make nearly six figures on average. Not a pittance.

C++, JavaScript, and C are all well-remunerated skills too.

What are these profitable languages best at?

  • Ruby and JavaScript are best suited for the web.
  • Python is fairly well-suited to the web, and very versatile on the back-end.
  • C++, C, and Java are all good low-to-mid-level programming languages (back-end).
  • Java is also best for Android Apps and Embedded Devices.

How to make use of this Salary data?

STEP 1A: It seems to me that if you like the idea of being a Ruby-guy-or-gal, and want to live in Linux Land, you should learn Ruby and C, or Ruby and C++.

STEP 1B: Otherwise, I would recommend a combination of two of the following: C, C++, and Python.

STEP 2: Next, I would have you choose between JavaScript and Java.

STEP 3: Profit!

I'm not ready to give my Final Answer yet...

Before you give your final answer and set off on your path to becoming a Kernel Master and a Polyglot, I think it prudent to consider a third source of important insights: The TIOBE Index of Programming Language Popularity.

Below you will see the Top 10 most popular programming languages, along with some useful metrics such as rating percentages, position last year, and rating percent change.

The TIOBE Index — December 2015

Dec 2015Dec 2014LanguageRatingsChange
12Java20.973%+6.01%
21C16.460%-1.13%
34C++5.943%-0.16%
48Python4.429%+2.14%
55C#4.114%-0.21%
66PHP2.792%+0.05%
79Visual Basic .NET2.390%+0.16%
87JavaScript2.363%-0.07%
910Perl2.209%+0.38%
1018Ruby2.061%+1.08%

Source: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Java and C have been in the top two positions since 2001. This year saw monumental growth for Java. Java and C are surely two good bets for any Linux Lover to learn. They will be useful and highly-profitable for you.

C++ has dropped in popularity fairly steadily since 2004, when it momentarily nearly outshone C. Depending on your industry of choice, this may or may not be a good bet for you as a Linux Lover. Of course, many important open-source programs are written in C++... But it may be the better bet only if you plan to work in a game-design shop or a shop in which physical-modelling is central to the company's profitability.

Python, JavaScript, and Ruby are the most salient scripting languages in the top 10 here. We can probably ignore Perl: Although Perlmongers still earn decent salaries, it's seen ten years of decreasing interest in the developer community. PHP is another scripting language which many shops incorporate into their workflows. A very well-rounded SysAdmin might know either PHP or JavaScript, and Python or Ruby.

How might these rankings change in the next few years?

I expect that by December 2016, based on the trends I've cited and the past performance of the languages in the TIOBE Index, the following will happen:

1) Ruby (currently #10) will continue to rise, trading places with Perl (#9).
2) C#, PHP, Visual Basic .NET, and Javascript will maintain their positions (#5-8 respectively).
3) C++ ratings will improve relative to C, but not enough for it to take the number two spot.
4) Java will still be number one.
5) Swift, Apple's new language, will jump from 14th place to 11th place, usurping Assembly Language (#11), Visual Basic (#12), and Delphi/Object Pascal (#13), but losing out to Perl (just barely) for the year.

I would expect the TIOBE Top 11 in 2016 to look like this:

  1. Java
  2. C
  3. C++
  4. Python
  5. C#
  6. PHP
  7. Visual Basic .NET
  8. JavaScript
  9. Ruby
  10. Perl
  11. Swift

By 2017, I would expect Swift to overtake Perl and maybe even Ruby. But I'm not going to concern myself with the language of iOS-land, for I am a Linux Lover.

On now to some heuristics...

How can you choose which languages to learn?

In terms of highest developer salaries, Ruby is the best for scripting, followed by Python.

In terms of all-around versatility on the scripting side, Python is undoubtedly King (it used to be Perl). JavaScript is more of a web-based language, as is PHP. Ruby is the closest to Python in terms of being useful for writing back-end applications.

In terms of all-around versatility in back-end programming languages, C is King in Linux. Java, while strange in that it mainly dominates the Android and Embedded Devices markets, is nevertheless a valuable and useful language for Linux administrators to know. It is number two in my estimation for this category. C++, while also versatile, and despite being easier for beginners to learn, takes third place. For Linux folks C is essential. Additionally, C serves as a great foundation for learning other languages such as C++, MATLAB, and Objective-C.

In terms of all-around versatility in web development languages, while Ruby will net you the most money, and PHP will do you fine, JavaScript reigns supreme. So much of the web is dependent on it, and JavaScript full-stacks are proliferating rapidly. Ruby may be a passing fad — who's to say? — but JavaScript will certainly not let you down. It's been the lifeblood of the internet since Brendan Eich wove it into the Netscape browser in 1995.

In terms of all-around popularity in the TIOBE Index, Java is number one, followed by C, C++, and Python.

There we have it, five categories and five winners:

1) DEVELOPER SALARIES: Ruby
2) SCRIPTING: Python
3) BACK-END: C
4) WEB DEVELOPMENT: JavaScript
5) OVERALL POPULARITY: Java

My Final Answer

My final answer is: C plus Python. I feel this strikes a good balance between hard- and easy-to-learn languages, lower-level and higher-level languages, and overall high versatility in both languages.

NOTE: Your answer may vary.

I could go with Ruby (and C) and perhaps make $5,000 or $10,000 more per year, but there are no guarantees in life. (Except that you can only use Ruby in a Ruby shop. That is a guarantee.)

I need my own formula. Help me decide!

It's simple! Just follow these steps:

STEP 1 — Choose between C (good for Linux, cryptography) or C++ (good for gaming, 3D modeling).

STEP 2 — Choose between Ruby (Ruby web development) and Python (various).

OPTIONAL STEP 3 — To increase your marketability, after you have gained an intermediate skill level in C/C++ and Ruby/Python, choose between Java (Android and embedded devices) and JavaScript (JavaScript web development).

If you followed the steps correctly, you should have arrived at one of the following 12 permutations:

  1. C, Ruby
  2. C, Python
  3. C++, Ruby
  4. C++, Python
  5. C, Ruby, Java
  6. C, Python, Java
  7. C, Ruby, JavaScript
  8. C, Python, JavaScript
  9. C++, Ruby, Java
  10. C++, Python, Java
  11. C++, Ruby, JavaScript
  12. C++, Python, JavaScript

My personal favorite from this list is #8: C, Python, and JavaScript. While C allows you to understand optimization and low-level applications, Python knowledge lends itself to general system and web front-end versatility, and JavaScript enables you to build and understand web apps and scripts.

Conclusion

Ultimately, you will have to weigh the costs and benefits of each language you consider adding to your repertoire. Some will earn you money; others will lead you to new insights and conceptual understandings; still others will confuse and frustrate you while begging the question: Why would you ever use X-language here? You may not ever uncover the answer to this last question, but if you can help solve the problem you'll likely get something much more important than the feeling of having won an argument: You'll get the pride of having helped your team, of course! (Not to mention job security.)

Best of luck to you on your path to Mastery.

Speaking of which, I've placed a few sites below where you can start learning how to program.


Learning Resources


Python
Ruby
JavaScript
C
Java
C++
  • Jumping into C++, by Alex Allain - A book and eBook geared towards people with no coding experience.
  • Up and Running with C++ - Lynda.com course - 2h36m of video - Meant for Beginners. NOTE: A Basic account, which you'll need to access this course, will cost you about $20/month.
  • Introduction to C++ - MIT Open CourseWare - 12 hours of lecture, 12 hours of labs - No prerequisites.
  • Cambridge University's Comprehensive C++ Learning Resources List.