DEV Community

Discussion on: How I chose a programming language and beat bad habits

Collapse
 
thesnowmanndev profile image
Kyle Martin

Peter, I wish I could heart this comment 10 times over. Not only did you make me realize how tunnel-visioned I was with my view of Kotlin (as the only course I am familiar with that contains Kotlin is for Android App Development) you made me see that it is a spiritual successor to Java. How could I have been so blind! Also, you answered a question I just asked my self while I was working on a script in Python. I asked myself "Why hasn't someone created a Python-style language that has all the qualities that Java or C# has by not being dynamically typed?" and as I read your reply it clicked! Thanks!

Collapse
 
golfreak923 profile image
Peter K Terlep • Edited

Absolutely, brother! I'd even go as far to say as they took the best of Java, Python, Swift, JavaScript, Lodash and probably a dozen other languages/libs, thought long and hard about it put together a true joy of a language to use. The static analysis checks enforced by the compiler are magic in a bottle.

I think the optics/PR issues on this one run deep. From the get-go, it was designed (and has always been) as a truly general-purpose language but given its first widespread use was for Android, you have to think about the competing mobile languages at the time: Objective-C = for mobile only, Swift = for mobile only so it was only natural for the masses to assume: Kotlin = for mobile only.

To complicate things, Java is clearly showing its age and the dev community is (rightly so) critical of its verbosity. There's still a sizable minority of people holding onto the dated and no-longer-valid sentiment that the JVM is slow because they tried it in 2000 and it was slower than C++ and never checked back in 20 years later now that it's fast, more usable, has gotten onboard with functional programming, made web programming and threaded programming vastly easier, yada yada. And since Kotlin is JVM, they might even think it's slow. Even those that knew Kotlin was general purpose may have had mixed-to-poor past experiences w/ Scala, Groovy, Clojure and had given up on alternative JVM languages entirely--relegating Kotlin to "just another clunky/weird JVM language" before even trying it. (Honestly, who's to blame them.)

Real-world numbers are showing that on average a project converted to Kotlin is 30% as many lines as its Java couterpart. When you really embrace its idioms, it's more like 20%.

Those that are waking up are discovering that "Wait, you mean to tell me I can still call any of the super-useful millions of 3rd party Java libs...in an expressive, compact syntax...that's head-and-shoulders safer than any of the languages that influenced it...is immensely readable/elegant...still gets the benefits of the most sophisticated garbage collector...use Spring Boot or a bunch of other microframworks...iteratively mix it in to my existing Java projects...convert my legacy projects to it...use the gradle build system with my gradle files written in Kotlin...write my own DSLs...be as object-oriented or as functional as I want...execute fast...execute elegantly in parallel or async...execute anywhere...have my build fail unless my entire AST is type-safe and null-safe...have first-class support from IntelliJ because Jet-brains wrote the damn thing...use all the advanced built-in Java data structures.............Hot damn, this is slick AF".

Thread Thread
 
thesnowmanndev profile image
Kyle Martin

You sold me. When I get to the point I am comfortable with Python and can solve some medium / hard questions on sites like algoexpert or hackerrank and think up an application / develop it then I will pick up Kotlin. Maybe 6 months to a year! Depending on how much I work at learning / retaining.

Thread Thread
 
bloodgain profile image
Cliff

One gotcha with Kotlin is that because it's developed by JetBrains, which is a Czech company with a lot of developers in Russia, it's a no-go for US Defense or Federal Government software. This is not, on its own, a reason not to learn it. But since I noticed that you currently work with the US Air Force, and that experience might be beneficial to you getting Defense contract or Government jobs, you should know that you're not going to find a posting for a Kotlin developer there.

Thread Thread
 
thesnowmanndev profile image
Kyle Martin

Interesting. I didn't know that. I thought Kotlin was developed and supported by Google. After I retire from the military in my current trade idk if I'd want to continue in that line of work in a new field you know? I joined the military fairly young and you give up a lot of freedoms working for the DoD and FAA. Though the grass is always greener on the other side and I'm sure you give up a lot of freedoms working for any corporation.

Thread Thread
 
oloryn profile image
Ben Coleman

You may be conflating Kotlin with Go, which was developed and supported at Google.