Often, new developers think it’s important to know a large number of programming languages—but it’s not.
While I don’t think it’s important to be an expert in every language that exists, I do think it’s very useful to be aware of the major programming languages and their differences, so you can have a good idea of what tool to use for the job.
In this chapter, I’m going to give you a fairly biased look at what I consider to be the major programming languages you are likely to encounter and should be familiar with.
I know plenty of people will disagree with me, but my opinion on programming languages comes from my experiences using them.
I do believe that even if you don’t completely agree with my choices of programming languages and my descriptions of them, you’ll also find that most experienced developers would at least agree with 75 percent of what I am going to say here.
In the software development world—as you may know already—75 percent confidence in something is pretty dang high.
Also, you’ll notice there aren’t programming languages like COBOL, Ada, Fortran, etc. on this list because, even though some people might argue that they are major programming languages, you don’t see them around that often, so I don’t think they are worth talking about here.
If you want a full list of programming languages, check out this one on Wikipedia.
C, originally created at Bell Labs by Dennis Ritchie between 1969 and 1973, is one of the older programming languages in use today. It is still quite popular, despite its age, and is arguably the most used programming language worldwide.
Many of the other major programming languages of today have their roots in C.
C is a bit of a tricky language because it is so powerful. It is very low-level, allowing developers to access the memory on a computer directly and to manipulate many low-level parts of the computer.
You’ll find C used in many operating systems, low-level hardware, embedded systems, and even a good number of older games.
C is often considered a system’s programming language.
C++ is the programming language that often gets mixed in with C. That is mainly because many C++ programmers don’t grasp the object-oriented concepts in C++ and write what would be called C code with some C++ features.
If you work on legacy systems written in C++, you are likely to see a large amount of this type of code.
C++ is technically a superset of C, which means that a C program should compile with a C++ compiler (although there are a few exceptions).
C++ was created by Bjarne Stroustrup at Bell Labs to extend the C language in order to provide some useful features from Simula, adding object orientation, classes, virtual functions, and many other features.
Today, C++ is still widely used—especially in game development—and it continues to be updated, now called “modern C++.”
However, C++ is a very complex language. It’s not one that I recommend beginners start with because of the level of complexity.
It’s extremely powerful, but it’s also, as they say, easy to blow your foot off with.
C# is one of my favorite programming languages of all time because of how expressive yet easy to use it is.
I feel like C# is an elegantly designed language, and it seems to grow and evolve fairly rapidly even today.
C# was originally created by Microsoft as the flagship language of the .NET Runtime.
It was created by Anders Hejlsberg, who was highly involved with the creation of Delphi and Turbo Pascal.
C# started out very, very close to Java. In fact, it has been called a copy of Java, which I can’t really argue against.
In fact, I first picked up C# so fast because I knew Java, and in my mind it was basically the same thing with just a few minor differences.
Recently, however, C# and Java have diverged quite a bit—although, again, I’d say that if you know one of these languages, you are 90 percent on the way to knowing the other.
C# is an object-oriented language that could be described as similar to C++, but is much simpler and now has many functional features.
Java is extremely similar to C#, but it’s older, so technically C# is extremely similar to Java.
It was created in 1995 by James Gosling at Sun Microsystems as a write once, run anywhere language. The idea was that Java could run on a virtual machine which could run on any computing platform, thus enabling Java programs to be easily cross-platform.
Java is object-oriented and largely based off of C and C++, but again, just like C#, is very simplified, not allowing direct memory manipulation and other low-level constructs that can get you into trouble.
Today, Java is owned by Oracle and still continues to grow and thrive—although it’s now managed by a committee, whose members tend to slow down advancement.
Python is one of those languages that I’d like to dive into deeper some day.
It’s an extremely elegant and simple language with one of the core design’s tenants being readability.
Python was created in 1989 by Van Rossum who is called by the Python community “benevolent dictator for life.”
Python can be written in an object-oriented, procedural, or even functional way, and it is an interpreted language, meaning that it is not compiled.
In comparison to C++, Java, and C#, Python code is often much more terse since more can be expressed in fewer lines of code.
Python is extremely popular today and is growing in popularity—as far as I can tell.
It’s one of the main programming languages used at Google and is a great beginner language.
Now, here is an extremely interesting language.
Ruby was actually created in Japan by Yukihiro “Matz” Matsumoto around 1993. (I had the honor of Matz being a commentator on the Japanese translation of my Soft Skills book.)
The idea was to create an objected-oriented scripting language.
Ruby didn’t really start to take off and become a popular programming language until years later, though.
One of the big catalysts of Ruby’s success was the creation of Ruby on Rails (RoR) by David Heinemeier Hansson (also known as DHH) in 2003.
Since then, Ruby has risen and slightly fallen in popularity, but it is still an extremely popular programming language today because of how easy and fun it is to use to program. In fact, that is one of Matz’s major design goals for the language.
You’ll find that many coding boot camps teach Ruby as the primary programming language since it is a very good beginner language.
Here is another interesting programming language that doesn’t seem to want to die.
Pretty much every web developer today has to have at least some understanding of the language since it is so widely used.
While not as popular as it used to be, Perl is still a widely used language, especially in the Unix scripting space.
In fact, Perl was originally created as a scripting language for Unix by Larry Wall in 1987.
It became widely popular in the early days of the web because of its flexibility and ability to parse strings, which made it great for CGI scripting. (If you don’t know what that is, don’t worry, but consider yourself lucky.)
I’ve always sort of hated Perl because I’ve found it to be an ugly language which is extremely difficult to read.
But, despite my misgivings about the language, I have to admit that its designation as “the Swiss Army chainsaw of scripting languages” is accurate.
Perl is extremely flexible and extremely powerful—I just can’t understand anything I or someone else wrote in it two days later.
Here is a language which people love to hate—myself included.
PHP is not a very elegant language. In fact, it feels a bit “dirty” in my opinion, but it pretty much powers a majority of the web today.
Facebook was first written in PHP. The ever-popular blogging software WordPress is still written in PHP.
There is a huge list of extremely popular websites that at least started out as PHP, and many of them still use it.
It was originally created by Rasmus Lerdorf in 1994 and actually evolved without any kind of written specification until 2014. (Yes, you read that right.)
PHP was never even intended to become a programming language. It was just a set of dynamic tools to help build simple web pages, but once the cat was out of the bag, it was impossible to put back in.
For all of PHP’s shortcomings, it is easy to learn and use although it has many dark alleys to get lost in.
It’s not my favorite language, but many beginners start out modifying existing PHP code to “cut their teeth.”
Here is another language which rose from obscurity to dominance in a matter of a few years.
Objective-C was originally created by Brad Cox and Tom Love in the early 1980s. The idea was to add object-oriented capabilities from SmallTalk to C.
Objective-C was widely forgotten—and almost dead—except for Apple picking it up and deciding to use it in its Mac OS X operating system.
Even still, it didn’t become widely popular since only Mac developers were really using the language until Apple introduced the iPhone and iOS, which beckoned in millions of new programmers to struggle with the strange syntax of the language.
I was one of them, as I had to learn Objective-C to port my first Android application over to iOS.
I have to say, I’m not a big fan of the language.
It has a very high learning curve, and it’s quite verbose to even do the most simple thing.
Luckily, iOS developers today don’t have to learn Objective-C and can use a slightly more friendly language, Swift.
This programming language is Apple’s new flagship language for iOS.
I’ll admit, at the time of writing this chapter, I haven’t played around with Swift myself—although if I pick up iOS development again, I’ll certainly check this language out.
Swift has been purposely designed to work with Apple’s Cocoa and Cocoa Touch frameworks (the ones used for iOS and OS X development).
It’s also designed to easily integrate with the large amount of existing Objective-C code out there.
Swift supports many of the popular features of Objective-C that make Objective-C so dynamic and flexible, but also is much simpler and concise.
If you are going to do iOS development today, it’s probably a decent idea to skip Objective-C and go straight to Swift.
Go is a relatively new programming language which was created by Google.
I really like Go because it’s concise, yet also powerful.
Go was created in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson and is very similar to C, but with some great additions and simplifications.
Unlike C, Go has garbage collection, so you don’t have to manage memory. It also has some concurrent programming features built right into the language, making it extremely performant and making concurrency a first class feature of the language.
When you start to program it, you can tell overall that it’s a really well designed language by how concise much of the syntax is.
Like C, Go is primary a system’s programming language, but it is spreading out to more areas including the web.
Erlang is a functional, deeply interesting programming language, designed to be distributed and concurrent. It also supports hot swapping of code where you can change the code in an application without stopping it.
It was originally created in 1986 by Joe Armstrong, Robert Virding, and Mike Williams at Ericsson, but was open-sourced in 1998.
The language was originally created to help improve the development of telephony applications—hence the hot-swapping since you don’t exactly want to have most telephony applications go down.
Erlang could easily be considered the most robust programming language (and programming environment) around today.
This programming language is very academic in nature.
Haskel is a purely functional programming language which was first designed as an open standard for a handful of functional languages that existed in 1987. The idea was to consolidate the existing functional languages into a single comment, one that could be used for functional language design research.
Haskel 1.0 was designed in 1990, by a committee believe it or not.
In recent years, Haskel has become more popular and not just for academics.
Since Haskel is a purely functional language and strong static type system, it can be a difficult programming language to use and learn, but it is also quite powerful and produces highly predictable code without side effects.
Glossing Over the Details
Again, I want to stress a few things about this list of major programming languages.
Obviously, it’s time-sensitive and highly biased, so if your favorite programming language or the new hotness isn’t listed here, it could be for either of those reasons.
I also glossed over the details of the programming languages because I don’t want us to get sucked into trying to define static versus dynamic languages and object-oriented or procedural languages versus functional languages.
In fact, in programming environments today, many languages don’t clearly fall into the old categories of static or dynamic or object-oriented and functional since many languages incorporate features in multiple categories.
Rather, all you need is an idea of the major programming languages there are and a quick synopsis of each one so that, if you are interested, you can explore whatever languages interest you most on your own.