It is always interesting to check in on how different programming languages are ranking for a number of different reasons. The first, a simple sanity check to make sure that the language an engineer is using isn’t becoming a dinosaur. As a language starts to drop in ranking it might be a perfect time to start looking at learning a new language. Second, in today’s embedded software job market it is becoming rare to be able to get by knowing only one programming language! Employers are rapidly expecting their employees to be familiar with a number of different languages, tools and skill sets that previously would have been separated among multiple individuals. (The expectation is to hire renaissance employees who are experts in everything).
Another interesting reason to check the language rankings is that it can reveal what sectors of the computer industry are driving innovation. IEEE Spectrum recently ranked a large number of programming languages across 4 different sectors. These sectors included Web, Mobile, Enterprise and Embedded software disciplines. The results of their ranking can be found below:
The ranking of the languages doesn’t come as too much of a surprise but it definitely shows some some distinct divisions. The first that is worth noting is that C continues to be a dominate player in the embedded software space. Part of this is undoubtedly due to the wide availability of microcontroller source libraries that are written in C rather than in C++. Another factor for this is most likely the popularity of the open source operating system Linux, whose kernel is used in all Android devices in addition to many other types of devices.
Due to the proliferation of mobile and web platforms such as Android, Java remains a very strong language. Undoubtedly the break-down of language use is that Java is the primary language for high level object oriented programming while C is the primary low level language used to interface with the hardware at the bit level.
It is interesting to note that C and Java continuously compete for the number one programming language slot. There is a website that monitors programming language popularity that has a TIOBE Index. The website can be located here. The site shows that a year ago in August 2013, Java was the top slot but August 2014 has C as the top language. The history of different languages can be seen in the snapshot below:
It is interesting to see in this index that the use of C++ and C# has been dropping off rapidly since 2012. Back in 2004 C++ looked like it was going to start taking over and eclipse C into the sunset. It still remains highly ranked by IEEE Spectrum and is still popular but it definitely would make one wonder if it will one day only be used in niche application areas.
So what is the bottom line when it comes to looking at these two different sets of data? As an embedded software engineer working with microcontrollers, the obvious choice of language to learn is C. If a second language is to be leaned then learning an object oriented and higher level language such as Java would certainly be a good second language. There is especially a shortage in the job market right now for Java programmers.
Finally a third language that should be considered is Python. Python is supported on multiple platforms and it has especially shown itself to be a contender for single board computer applications running Linux. It has the capability to extend itself so that it can call other language libraries such as C, .Net or even Java code. It is generally fast, although not designed for real-time computing. It can also be a great tool for GUI interfaces, receiving and plotting data and interfacing with web based devices and databases.
Learning any of the top 5 programming languages will undoubtedly help any engineer become a well rounded programmer. The ability to play at the lowest levels in C and then jump to the high level and program applications in Java, Python or even C# are skills that will undoubtedly set an engineer ahead of the pack when the competition is getting tougher everyday.