The programming language I want (part 2) Jun 20, 2018
The first post, The programming language I want, brought many positive responses! Many of the readers suggested I should take a closer look at three languages that weren’t initially mentioned: Kotlin, Swift, and OCaml.
Indeed, all of them meet majority of the requirements I’ve stated before, but there are certain issues with each of the languages they had to be disqualified, which is, of course, subjective.
Kotlin is almost perfect: it’s statically typed, pragmatic, and allows to seamlessly leverage plethora of existing Java libraries. Also, lately the Android team announced first-class support for Kotlin. This alone almost ensures its adoption will grow, and, eventually, the language will become mainstream.
To me, this is the worst news ever.
As a back-end developer I’m afraid Kotlin’s momentum will shift towards mobile libraries. Few weeks after the announcement, 12 of 25 trending Kotlin repositories on Github are dedicated to Android. It isn’t a bad thing, in general, but this is a big NO from me.
I’ve to admit I’ve a problem with Swift. It clearly feels like a more high-level Rust. It could be my language of choice. Yet, it’s cursed by the same thing that happened to Kotlin: the platform. Whether we want it or not, as an Objective-C successor, it will be tied to the iOS/macOS development and Apple ecosystem. It has been open-sourced, though, and many believe it’s promise to become truly general-purpose programming language will be delivered.
The main problem with OCaml is, I believe, its adoption. It appeared 21 years ago (in 1996), yet, it didn’t get into the mainstream or just gained enough popularity. The job market is weak and limited to trading firms. Maybe that’s just common misconception and I may be mistaken.
For now, I will continue to learn Rust. I hope it will gain enough momentum and its job market will eventually grow beyond 20 offers…
At the same time, I will keep an eye on Swift. I presume the best solution will be to try to pick one of the existing web frameworks and/or to build simple iOS application.