5 Types of Languages Every Programmer Should Know

…Or at least be familiar with.

As a student, I am constantly consuming as much information as possible. Since I have no way of knowing what company I will ultimately work for, and by extension what language or programming style I need to be familiar with, I try to pick up a variety of tools that may prove useful.

If I want to work for an established development company, I need to know C, C++, Java, C#, and all the libraries that come with them. I may even need to know some Fortran or Basic if I work someplace with legacy systems. If I choose a startup, I need to know a multipurpose scripting language like Python, Perl and Ruby or I may need to know more modern languages like Go, Scala, and Ceylon.

If I choose to work in web development, the emergence of full stack developers brings a whole host of languages and tools necessary to do the job. I need tools for the back end like Ruby on Rails, Python’s Django,  Node.js, or PHP. I need to be intimately familiar with HTML, CSS, and JavaScript. After learning JavaScript I should immediately pick a “better” language like CoffeeScript or TypeScript. I should know useful libraries like JQuery and React.js.

Application development comes with the Android API on top of Java (or a Java like language) or Swift and Objective C for the Apple family. If I want to go into penetration testing, I need to know everything I mentioned above and then some. I won’t even touch becoming familiar with various IDE’s, investing in a text editor, familiarity with the big 3 environments of Windows, OSX and Linux, etc…

I believe you get the picture at this point. Not knowing what to know equals knowing a little about everything. Bringing the focus back to programming languages, the sheer volume available can be overwhelming in itself. My solution was to focus on the types of languages I should be familiar with, and pick one language from each type to try and pick up.

Industry Applications – Java

I chose Java as my industry level OO language for a few reasons. According to several sites using various metrics to rate the prevalence of different programming languages, Java leads the pack on nearly every site. On top of popularity, the JVM which Java compiles to is extremely useful for its portability, and knowing Java gets you a fair bit of the way into Android development.

Scripting Language – Ruby

This was a hard choice between Python and Ruby. Python seems to be used in a larger variety of projects than Ruby, but my interest in learning Ruby for its Rails application has led to me using Ruby more often when given a choice of a language to use for school assignments. I don’t think you can go wrong with either language, I just enjoy Ruby’s syntax and feel a bit more. It also leads to a nice crossover in web development, and crossover was key when I chose to invest time in these languages.

 Low Level / Performance Focused – C

You just can’t go wrong being familiar with C as a programmer. Nearly everything is built on C or C++ these days, and it is always wise to know a little about the system that runs the tool you are using. I focused more C because C++ takes a more Object Oriented approach. Going back to crossover with languages, if I have a problem requiring an OO language, I would rather use Java or Ruby at a higher level. I do intend to be at least a little familiar with C++ at the very least for its applications in game development.

Functional Language – Clojure

For a while, I contemplated Haskell vs Scala. Haskell is a “pure” functional language that compiles down to run at a machine level. It is gaining popularity with bringing legacy systems up to date, and is used in a Linux window manager I was intrigued with, named Xmonads. Scala seems to be gaining a lot of popularity as a hybrid language that compiles to the JVM. I have read about a lot of programmers switching from Java to Scala as an “easier” transition to a functional language. However, when I discovered Clojure I was  sold.

Clojure is a bit closer to a pure functional language than Scala, and is based on the language Lisp. Since I just finished a class on programming languages that programmed primarily in a Scheme like language, which is also a Lisp like language, I felt pretty comfortable with the syntax and structure of Clojure. On top of that, Clojure compiles to the JVM, allowing it to take advantage of several of Java’s libraries. In terms of multiple uses, Clojure has a branch that compiles to the .Net framework, as well as a branch named ClojureScript that transforms into Javascript. Both of those branches also bring the the ability to tap into their host frameworks large libraries. All of these traits made Clojure an easy winner for me.

Web Languages and Frameworks – HTML5, CSS, ClojureScript, and Ruby on Rails

HTML5 and CSS are a given. If you want to make any kind of website, static or otherwise, those are required. I chose ClojureScript in fitting with my theme of multi-use languages. Knowing Clojure as a functional language gives me more to start with than Javascript by itself. Ruby on Rails was chosen for it’s popularity as a web back end, and because of how much I enjoy programming in Ruby as a scripting language.

Final Thoughts

To summarize, I wound up picking C, Java, Ruby, and Clojure as my go to tools for my various programming needs. As a programmer, you will always have a language or two that you know better than others, and feel more comfortable working in. However, it is my belief that being at least familiar in a language for each of these categories greatly expands your toolbox as a developer.

Is this a good way to approach learning? Do you think I should pick just one language to do everything in until I know what my employer uses? Should I focus less on cross over and learn the “best” language for each category? Maybe focus on just one category, and learn the most used languages in that category. Let me know your thoughts in the comments.


Featured Image from Pixabay. Edited by Brad Wilson.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s