Monday, March 21, 2016

What programming language should I learn next?

The latest programming language rankings came out last month, and the most popular languages have not changed much since last time, nor have they changed much over several years.

When I think about learning a new programming language, I think about several things:
  • How easy is this language to learn?
  • How will I learn the language? In a community college class, online tutorials, or just study the manual?
  • What can I use this language for?
  • What tools does this language require? Can I install it on my computer?
Here is a summary of this information for the most popular programming languages.

LanguageDifficultyUsed forLearn at
JavaScriptEasyWeb clientCollege
JavaMediumGeneral purpose, AndroidCollege
PHPEasyWeb serverCollege
PythonEasyGeneral purpose, scripting, QA, ITCollege
C#DifficultWindowsCollege
C++DifficultGeneral purpose, embeddedCollege
RubyEasyWeb server, scripting, QA, ITOnline
CSSEasyWeb stylesCollege
CEasyGeneral purpose, embeddedCollege
Objective-CDifficultMac and iOSCollege

These languages have a ranking from 1 to 10, but the fact is, they are all very popular languages and no one language is used a lot more than any other language on the list.

JavaScript is used on more than 90 percent of all web pages worldwide. You can use JavaScript to create animations, validate web forms, create web applications that run on data, and exchange data in the background with a server. JavaScript is a very easy language to learn, and you can learn it at almost any community college.

Java is a general purpose language that is used in many embedded systems. Embedded systems are things we don't typically think of as computers, like set-top boxes and electric meters. But Java is probably most famous for programming Android apps. Java is not too easy to learn, but it is not super hard either. You can learn it at most community colleges and some universities.

PHP is used to create web servers that can access SQL databases. It is the most widely used web server language, being the language of choice for about 70 percent of web sites worldwide. It is easy to learn. You can take a class at several community colleges.

Python is one of the easiest languages to learn. It is used a lot for IT scripting. You can learn it at many community colleges.

C# is used to program Windows and Windows Phone applications in the .NET framework. It is a hard language to learn. Some community colleges offer classes.

C++ is an older general purpose language. It is used a lot for embedded systems programming (see above). C++ is hard to learn. Many community colleges offer classes, and some universities.

Ruby is an easy scripting language. It is used in many of the same applications as Python, but the Ruby on Rails framework lets you set up a web server quickly without having to learn PHP and Apache. For that reason, a lot of startup companies use it to quickly set up their web sites. But later, they will switch back over to PHP for the long term. Ruby is one of the few languges that is rarely offered as a college class. You'll have to buy a book or take an online tutorial. Ruby is an easy language to learn, but setting up Ruby on Rails is difficult.

CSS is the language for making web site styles. I'm surprised it is on this list. It is important for making web sites, but it is not a true programming language. You can learn CSS as a part of most HTML classes in college.

C is an older version of C++ that is not object oriented. It is a very fast and powerful language, easy to learn, but also dangerous. It has many features that only experienced programmers should use, but beginners try it anyway. It is mostly used in embedded systems that must work very quickly, "in real time." You can learn C as a part of a C++ class in college.

Objective-C is the language for writing Mac and iOS apps in Xcode. Until two years ago, it was the only option for writing Apple apps, which explains its wide use. Some colleges offer Objective-C classes, but most colleges are switching over to the newer Swift language. You can find a Stanford class in Objective-C and Swift online, but they expect you to be a smart Stanford student.

What about other languages?

Swift is Apple's replacement for Objective-C. It is much easier to learn than Objective-C. But Swift hasn't yet caught up with Objective-C because it has some idiosyncrasies and it is missing a few features. Also, programmers have been using Objective-C for many years, but Swift has not been available that long yet.

SQL, particularly MySQL, is not on this list but it ought to be. MySQL is a language for accessing the most common form of database. It is used a lot with PHP. So it ought to rank up there almost as high as PHP. The reason it is missing from this list is because of the way the data was gathered.

Perl is a popular language that has been losing ground to Python and Ruby, because they all do similar things but Python and Ruby are much easier than Perl.

Go (or Golang) is a new language from Google that is easy to use, but hasn't really found its niche yet.

Groovy is a new language that combines the best of Java and the scripting languages like Python. It uses Java syntax, but it can be run as a script without needing a Java compiler.