Hacker News new | ask | show | jobs
by personomas 1223 days ago
To be honest, I think he is way-overly critical. It would seem like he thinks there needs to be some sudden changes or something. Scala is great today - there is nothing better (for experienced programmers) in my opinion (at least when it comes to backend development), and it's on a great path and trajectory.

Slow progress and change is good.

I think he would do well just calming down a little bit. He has some good critique, yes, but it's overblown in my opinion. I don't think the future of scala is as "uncertain" as he thinks.

I also think the scala community is fabulous, it full of great, smart people who work together. Just because there's heavy disagreements here and there, mostly just with a couple individuals, isn't necessarily a bad thing anyways, nor does it necessarily reflect the community as a whole.

Scala will never attract the mainstream, because its principals take too long to learn. There is nothing wrong with this, though. It's a language for long-time programmers who are interested in becoming super effecient.

Scala is awesome, and I'm excited for its future. Will it live 100 years, no, probably not, but there's nothing better in the next 10, 20 years.

4 comments

I also agree that the author is overly critical. He also misses a couple of points.

He talks about SBT, but never mentions Gradle which is a massive and powerful tool that handles Scala just fine. When I worked at BigCorp that made heavy use of Scala no one used SBT. Everyone used Gradle.

A lot of the IDE based complaints the author has would be eliminated if they used Gradle. Now I know Gradle has its own issues, but saying IDE support is missing entirely just because it’s not available with your tool of choice seems incorrect to me. In fact it seems crazy to me that the author has the concepts “build tool” and “JVM” together in an article and proceeds to go about writing hundreds of words without even mentioning Gradle.

He also doesn’t discuss the current issues around Play Framework being essentially abandoned by Lightbend. Play is the most robust and de facto leading framework to build web apps in Scala. There is also akka-http, but it’s nowhere near as mature and has the same issue as Play framework does of being Akka based. I think he does bring up some serious legitimate concerns about the ecosystem now that Lightbend has gated usage of Akka. Akka had a ton of momentum before that.

He’s actually arguing against sudden changes.

From the article:

> The looming threat of a future radically different Scala 4 is the single greatest existential threat to Scala.

I think what prompted John to write this article is that there’s a huge commercial penalty in releasing a new major version of the language, and we should be focussing on making the existing language version(s) more commercially viable before we start another academically-led reinvention

Good point, but he also seems to be arguing that the language has significant problems and needs fundamental change, which I don't agree with. For example, he says:

> I believe that the time for action has come > In the ashes of Scala 2 and the Lightbend OSS ecosystem, we need a rebirth for Scala.

Then he gives all sorts of horrible grades that in my opinion aren't justified when compared to any other language. Make small things seem huge.

Would you recommend someone currently using F# to try out Scala?
I don't have any experience with F#, so it's hard for me to say, but I love Scala. I think JVM is the best probably and could be worth your effort hard to say
F# does not really support pure functional programming in the sense that Scala does, so yeah. Use Scala ZIO and you will see what I mean.

It also has some other nice features that F# lacks. But F# also has some nice things that Scala lacks. Overall I think it's worth to learn it for learning new concepts, but F# is already great, so don't expect Scala to be way ahead and even worse in some ways (syntax, no type providers, ...)

Scala is both more functional than F# (type system has more features) and less functional (more emphasis on OOP). I don’t think it’s a net improvement tbh. Better JVM access is nice though.
Why would OOP and functional programming be at opposite ends of a spectrum?
A good example would be [1], where covariance and contra-variance are offered to you by the language due to its relation to OOP and the need for subtyping for it, whereas you'd probably be better off if you forgot about their existence (most of the times) and designed everything with Invariance and higher-kinded data [2].

[1] https://docs.scala-lang.org/tour/variances.html

[2] https://reasonablypolymorphic.com/blog/higher-kinded-data/

They aren't diametrically opposed, though OO methods obscure function composition (point-free style).
Minimising state vs hiding state behind interfaces / methods

The two can coexist in one code base but they are fundamentally opposed.

A common joke in my previous org that heavily used Scala with functional paradigms is that an engineer’s first few PR’s were often implemented in “Scava” since Scala lets you lean into OO paradigms. It kind of means that there are two (or more) “right” ways to do things in Scala which IMO is a detriment to the language. This is where other languages like Python got it right by introducing the concept of “Pythonic”. You can do weird stuff, but it won’t be accepted into the zeitgeist that was defined by the benevolent dictator.
Scala is also an FP language that places emphasis on types, but it does so in a way very different from F#, which is still based on Hindley–Milner. I think Scala is worth checking out for a different perspective.
Over 9 years of Scala here. Scala definitely has quite a few warts.
I don't see anything better, or even close