In related news, A Large-Scale Study of Programming Languages and Code Quality in GitHub examined 728 project histories using Github’s most popular languages to determine any associations between languages and bugginess. To sum it up, while the effects they found were not strong, the most defect-prone languages were unsurprisingly those with implicit type conversions and manual memory management, in particular C/C++.
Perhaps you would also like to know about the world’s least popular programming languages. Yevgeniy Brikman has a nice collection with code samples in his 2014 article, Six programming paradigms that will change how you think about coding: concurrent by default (Ani, Plaid), dependent types (Idris, Agda, Coq), concatenative (Forth, cat, joy), declarative (Prolog, SQL), symbolic (Aurora), and knowledge-based (Wolfram). Very interesting read if you enjoy thinking about language design.
More on the absurd side is Esolang, the esoteric programming languages wiki. It’s been around since 2005 but I only discovered it last year, thanks to a tweet about German, a language whose only two keywords are
This wide availability and a very attractive language design are two strong points, but another one is the business aspect. Kotlin is produced by a professional team for an established company (JetBrains) that also uses the language internally, does not need to monetize it, and of course offers full support in its own popular IntelliJ IDEA. These points are very important because niche languages cannot grow if fickle volunteers lose interest, users are expected to pay, or solid tooling is nonexistent.
There was a lot of coverage for Kotlin following Google’s announcement, all of it positive. Here are some highlights:
- On the Rise of Kotlin (Joe Kutner, Heroku) — “Our existing JVM languages are great, but none of them [unlike Kotlin] have demonstrated the potential to become the de facto language of choice for a large percentage of JVM developers.”
- RedMonk Language Rankings (Stephen O’Grady) — “The big question facing Kotlin then isn’t whether it will experience gains based on interest – the language already has jumped nearly twenty spots in a year’s time which is very unusual – but how quickly, and to what degree.”
- Why you should totally switch to Kotlin (Magnus Vinther) — “I used to prefer Java but the last year I’ve found myself coding Kotlin whenever I could, and at this point I really can’t think of a situation where Java would be a better choice.”
- Kotlin is like TypeScript — An interesting comparative series of code snippets in both languages.
Tabs vs Spaces Reloaded
David Robinson put a new spin on the eternal question. Analyzing the Stack Overflow survey data, he found a solid correlation of using spaces exclusively and a higher salary – 8.6% on average. This correlation appears to hold regardless of any other factor he checked, including country, experience, or programming language.
Evelina Gabasova was as surprised as anyone and decided to investigate the raw survey data (which is public). She found that using spaces exclusively was after all correlated with certain factors that have a much more obvious influence on salaries, namely contributing to open source projects and using GitHub.
(She also notes that the survey’s salaries are likely misreported for much of the world outside America as people seem to have entered monthly instead of annual salaries!)
There appears to be a quick ascent, as the framework gains popularity and then a slightly less quick but steady decline as developers adopt newer technologies. These lifecycles only last a couple of years.
- Kirk Pepperdine wrote about Java’s garbage collection, a very informative article that also gives an overview of the technology’s historical evolution.
- Ken Fox made a series of nice memory space animations for Visualizing Garbage Collection Algorithms, a 2014 article that came to my attention last year.
- Nitsan Wakart was surprised to discover What a difference a JVM makes. Concurrent code that was lock-free in Java 8 suddenly had a machine-level lock in Java 9 – a requirement of the new garbage collector, reducing speed over tenfold.
Finally, here’s a roundup of other noteworthy blogs or posts.
- Daniel Lemire has introduced a weekly roundup of Science and Technology links on his blog. His selections are quite good and further improve what was already an outstanding blog on programming and various technical and scientific subjects.
- I newly discovered the excellent blog of Java and machine language expert Richard Startin. Follow him if you are at all interested in the computational performance of Java code.
- Java performance guru Aleksey Shipilёv has started a series of short (by his standards) posts that analyze various individual JVM features. You can find a list and compilation on the overview page, JVM Anatomy Park.
- Ur-blogger Eric S. Raymond had a fascinating series on the future of systems languages. The last one was called C, Python, Go, and the Generalized Greenspun Law and links to the three earlier entries near the top. I suggest you read them all in order.
- And if you want an extremely thorough overview of 2017, Dustin Marx’s Significant Software Development Developments of 2017 has you covered. The first numbered items cover Kotlin and React, and you’ll find many more language news towards the end of the post.