ThoughtSTEM Blog

What Programming Language Should My Student Learn?

By: Alan Lam

Java. C++. Python. JavaScript. If you are familiar with the world of computer science, then it is likely that you have heard the names of these languages and possibly others. If you are looking to introduce computer science to your children, then you have probably wondered, “What programming language should my student learn?” It’s a valid question. And it’s one that many people ask us all the time.

That sounds reasonable. If a lot of companies are using Java, then that must mean Java is a pretty good language. In fact, TIOBE, a company that checks and measures the code quality of software programs, currently lists Java as the most popular language. On the other hand, the PYPL (PopularitY of Programming Language) index looks at Google searches to determine which programming languages are most commonly searched. It lists Python at first place and Java at second place. There’s certainly no doubt that Java is a widely-used language. There’s a reason why you’ve probably heard of Java.

Some people think you should learn whatever companies are hiring for.

Again, it sounds pretty wise to make an investment now that will play well into the future. On Indeed, the job-searching platform, there are currently 70,527 jobs for Java developers. There are also 70,913 jobs for Python and 57,643 jobs for JavaScript. These are the numbers from August 23, 2019. Back in May 2019, there were about 69,000 jobs for Java, about 67,500 jobs for Python, and about 40,000 for JavaScript. While it is certainly notable that there has been a big increase in the number of jobs, what’s even more important is that the number of Python jobs has surpassed the number of Java jobs in such a short amount of time.

The ever-changing popularity of languages and the ever-changing job market lead us (and many computer science educators) to the conclusion that the most popular language isn’t always the best choice to learn. Languages are coming in and out of fashion all the time. If we examine any device over time, whether it’s an iPhone, Android phone, or laptop, we see this constant flux of different languages coming in and out of fashion:

Back in 2007, when the iPhone first came out, developers made iOS apps using a language called Objective-C. Objective-C, which is a more advanced version of C, was the language used to build the operating system for Macintosh computers. So naturally, Apple extended Objective-C support to their iPhones. Objective-C was the predominant language used to make iOS apps for 7 years until 2014, when Apple introduced a new programming language called Swift. Now, Swift is the main language used to make iOS apps. And it has been for the past 5 years. Whether or not Swift will be replaced by a new language the way Objective-C was remains to be seen. But it certainly is possible.

A similar story is playing out in the Android world. Android apps have traditionally been made with Java. While Java is still widely used to make Android apps today, the Android world is slowly starting to move towards Kotlin, a programming language that you’ve probably never heard of, created by a software development company called JetBrains. Even though Kotlin was created in 2011, it wasn’t supported on Android until 2017. And recently in May 2019, Google announced that Kotlin is now the preferred language for making Android apps. It’s a more recent transition than the one in the Apple world, but it’s happening nevertheless. Kotlin might soon replace Java as the most common language for Android apps the same way Swift replaced Objective-C as the language for iOS apps.

The big takeaway here is that even though one language seems to be popular, it isn’t always going to stay popular. Even though one language seems to be the current standard, it can (and will) easily be replaced by another language. However, this doesn’t mean that learning the popular language is a bad choice. It just means that learning computer science shouldn’t be about learning one particular language. The world of technology is rapidly changing, and programmers have to respond and adapt quickly to these changes. So, learning computer science should be about learning new languages quickly. A proper computer science education should involve being exposed to many different languages, as well as learning how to learn new languages.

And there are a lot of different languages out there. Working on large-scale software programs? There’s Java, C, C++. Working on mobile apps? There’s Kotlin, Swift, Dart. Making websites? HTML, CSS, Javascript, PHP. Handling large amounts of user data on websites and mobile apps? SQL. Dealing with machine learning? Python. Visualizing data? R. Creating video games? C#. Manipulating images or solving problems in engineering? MATLAB. Making your own programming languages? Racket. The list goes on and on. These languages are not confined to their mentioned associated field either. You can use Python to make mobile apps and analyze massive amounts of data. You can use Java to make video games. In fact, you can use any programming language to do almost anything you want. For companies, it’s all a matter of preference - there are always many languages they can choose from to accomplish their goals.

It’s very rare to see a company that uses only one language for all their systems. For most developer positions, you’re expected to know 4–5 different languages! For example, a recent job posting to be a software engineer for Google lists Java, C/C++, C#, Objective-C, Python, JavaScript, and Go as languages for desirable applicants. Even more importantly, another preferred qualification is having an “interest and ability to learn other coding languages as needed.” Google understands that the programming languages they use are always subject to change.

Therefore, the strategy shouldn’t be to learn whatever languages companies are hiring for, especially for students in K–12. Almost any task can be completed with any programming language; companies just choose the languages they want to work with. In most cases, the decision comes down to the language’s convenience and ease of use. This might then lead to the question, “which language is the most convenient and easy to use?” Well for one, convenient and easy are going to be subjective and different for each person; it will also be different from project to project. But really, existing languages are being changed and improved all the time to make them easier for people to use. In addition, new languages are being created all the time with the purpose of being easier to learn and use than current existing languages. Check out this incredibly long list of languages "phone"that have been made by programmers who wanted the functionality of JavaScript without having to actually use JavaScript.

All these changes and improvements are part of the reason that languages keep moving up and down in popularity. The situation was quite different years ago. The TIOBE Index keeps track of programming language popularity over the decades in their “Very Long Term History” section. You can see how the “top 10” programming languages have changed positions considerably since 1989. Lisp was number 3 and Pascal was number 20 back in 1989; now in 2019, Lisp is at 32 and Pascal is down at 220. In 1994, Python was at 21; now in 2019, Python is number 3. SQL also made a big jump from 89 in 2004 to 9 in 2019. The point is, what used to be popular might not be popular several years from now, and what isn’t popular right now might become one of the most popular languages in several years.

Learning programming is more than just learning one language. A good computer science education should expose students to many different languages, as well as teach students how to learn different programming languages quickly and effectively. Being exposed to languages you’ve never heard of will make you more flexible and adaptable as a programmer. Learning how to learn is a transferable skill that will make picking up a new language easy, no matter how unique or difficult the language is. This is why ThoughtSTEM is constantly creating new languages for our students to learn each quarter and aims to train students not only in how to use those languages, but the best practices in learning languages. We believe this will make our students flexible and adaptable for those “popular languages” of tomorrow that haven’t even been created yet!