If all you want is a reasonable, mature, production-oriented language on the jvm, it seems hard for me to see the appeal of scala compared to Kotlin. As far as I know tooling for kotlin is already as good, or better than scala’s (at least on the IDE side). I’d love to be proven wrong of course.
I think the core difference in the development of Scala and Kotlin is that Scala largely focused on improving things were already good, while Kotlin worked on fixing the worst parts of Scala.
If you only compare the language subset that both Kotlin and Scala share, it’s painfully obvious that Scala is pretty much better all across the board – but as it turned out – that’s entirely irrelevant if Scala can’t manage to have reliable IDE support after 15 years.
Scala does have reliable IDE support. The IntelliJ plugin works fine.
‘Fine’ is a relative term. Last time I used it, it was slow as molasses on a relatively big project. A few of my coworkers had adopted a workflow of doing most edits in Vim (or any other editor), then update the file in IntelliJ and take care of lints or suggestions.
That was a few years ago, but Scala itself had barely changed since then, so I’m wondering if the IDE experience got any better.
So you’re talking about your experience a few years ago, I understand. It’s definitely gotten better and continues to.
I’m wondering if repo size also affected performance. This was a sizable, but by no means crazy, repo maintained by very clever people. What I mean by that is that there was a lot of code that took advantage of Scala’s type system (for example, it was my first encounter with the cake pattern). My overall experience with Scala was I loved the language, but even at the time the rift with Scalaz and the perceived stagnation of the actual Scala language felt a bit… weird. Glad things got better. Definitely happy to take another look once Dotty is out.
Usually, and only very recently. As long as the types don’t get too complex, no macros are used etc.
Not to mention that the Eclipse plugin is pretty much dead, and the ENSIME creator has also thrown in the towel.
Scala IDE / text editor support is fabulous. Loving using Metals with Neovim as my daily driver. I also use Intellij occasionally and the scala plugin is truly impressive.
Scala tooling is amazing. Fabulous these days.
Scala as a language, has many great features that Kotlin doesn’t. Kotlin doesn’t have HKT for instance. Both are great productive languages. Tooling support is not the sole factor to choose a language over.
Tooling, onboarding, being able to understand code found in the wild, these are things that Kotlin has over scala imho. Scala is like C++, Kotlin a bit more like Go, in this regard: sure Scala has more features, but it doesn’t necessarily play in its favor.
yeah, I wouldn’t disagree, onboarding is harder than it needs to be. The linked article is actually about that and improving that, in the later half.
Personally I’m excited about Zio for the future of Scala. It points the way for a fusion Scala style with a focus on writing correct software.
I think a good way is to have a look at where adoption comes from, and how long people stay in the community.
Kotlin completely wiped out new people coming to Scala for both reasons of these reasons. It also took over Android development, which Scala had abandoned earlier, and is using this to make inroads into Java shops that didn’t even have a good reason to consider using Scala before.
The consequences of not listening to the issues Scala users have for a decade (and instead going after the people raising the issues) are now coming home to roost.
Scala is still this thing your university prof tells you about but which you never actually use because it seems to niche and complicated..
I’ve used it in production for the past 9 years at various different companies - and not always by my choice!
I’ve worked with Scala in production at various companies since 2015 … it is niche and complicated but it can integrate quite easily with the mainstream JVM tech stack. For people interested in writing performant and correct software for the JVM, it’s a great option.