Kotlin, C: Which Will TIOBE Name Programming Language of 2017?

As 2017 comes to a close, TIOBE has isolated two candidates for its annual Programming Language of the Year: C and Kotlin.

Although Kotlin had attracted its fair share of fans in the six years since its inception, it really caught fire (metaphorically speaking) in 2017, when Google named it a “first class” language for Android. Given Android’s reach, it’s no surprise that Kotlin has steadily climbed in TIOBE’s rankings over the past twelve months.

TIOBE’s other cited language, C, is much more established. “Thanks to the boost of small software devices and the increase of low-level software in the automotive industry, the C programming language gained a lot of popularity in 2017,” the firm wrote in its note accompanying the December rankings.

In order to create its rankings, TIOBE leverages data from a variety of aggregators and search engines, including Google, Wikipedia, YouTube, and Amazon. For a language to rank, it must be Turing complete, have its own Wikipedia entry, and earn more than 5,000 hits for +”<language> programming” on Google.

There was little movement, as usual, in the upper echelons of December’s TIOBE rankings. Java, C, C++, and Python retained their longstanding positions in the top four, while C# jumped into the fifth spot. Further down the list, a handful of smaller languages enjoyed a boost, with R, MATLAB, and Scratch all jumping up several spots.

And not all languages have climbed: Perl, Assembly language, and Visual Basic have all seen significant dips over the past year—although if the TIOBE rankings have demonstrated anything, the fortunes of smaller languages can quickly change. Kotlin, for example, shows that a single large company can change the fortunes of a little-known language practically overnight.

If you program Android apps (or you’re just curious about Android as a platform), Kotlin is well worth a look: it boasts some features that make it superior to Java, including proper function types, use-site variance without wildcards, range expressions, and null-safety.