Hi everyone,
New user here. I’m looking for Kotlin learning resources geared towards someone with a fair amount of Python experience, specifically in the areas of data analytics and numerical computing.
I’m know Jupyer notebooks very well, and so am very familiar with the process of “prototype code in Jupyter” → “convert to script for future execution,” as well as using Python as a glue language.
I’ve also run headlong into some of Python’s limitations; the limits of the GIL on shared memory multithreading have caused me headaches, as has the slow speed of pure Python code, which is why I’ve been on the hunt for a language with a similar ecosystem, but without those drawbacks.
Kotlin seems to be a somewhat hidden gem; it uses the JVM and is compatible with Java libraries (so piggybacks on a huge ecosystem), but also supports a coding style that lends itself to prototyping and exploratory data analysis (functions don’t have to be in classes, data classes are a thing, the language appears to be fairly concise, it supports functional coding, etc). And it compiles down to JVM byte code, which allows it to perform rather well.
I’ve looked through several of the “learn Kotlin” books out there, and almost all of them either assume prior experience with Java, or assume no programming experience at all. A couple of the better examples look to be Atomic Kotlin and the Big Nerd Ranch Guide to Kotlin.
I’ve also looked at some of the websites focused on “Kotlin for data science” but those appear to be more geared towards folks with prior Kotlin experience and use of Kotlin-native libraries.
Thus my question: are there any good resources for a Pythonista with a background in data analysis and numerical computing to learn Kotlin? Bonus points if the book/course/whatever spends more time fleshing out how to make use of the extensive ecosystem of Java libraries (Atomic Kotlin puts a discussion about interop in an appendix, and it looks like Big Nerd Ranch Guide dedicates a chapter to interop. Neither one appears to include real world examples, ie, “let’s pull these libraries from these repos and let’s build an application that does some numerical computing to generate data, then do data analytics on the generated data”).