Live data from Hacker News

Scala isn't fun anymore

alexn.org

111–120 of 394 posts

Re: Scala isn't fun anymore

#111
post #103

Earlier quoted context omitted.

Loom will be the next billion dollar mistake after nulls. Keep my words in mind for a decade or two...

Okay, are you going to give reason or is it more of a Thought leader style pronouncement?

Haha, I guess you are right.

The reason why it is a mistake is because it is essentially trying to solve the rpc problem once again even though it has been tried many times without success.

There just is a difference between making a synchronous call within your own OS thread vs. making such a call against anything else (the filesystem, the network, ...). Because you can assume that a synchronous call either succeeds and you can continue whatever you do. Or the whole thing crashes because e.g. the thread was killed due to some external effect or OOM error. But in that case, you have the guarantee that no more code on your thread is being run.

With Loom, it is not clear anymore if more code will be run based on your call or not, since there isn't an immediate difference between the two types of calls anymore (when looking at the code). This missing distinction is exactly what makes it easier to use but it also makes it very easy to use the "wrong default".

Re: Scala isn't fun anymore

#112
post #36

Earlier quoted context omitted.

I couldn't tell you exactly why (though I have some ideas), but Lisps seem to settle into amazingly stable languages. Even Clojure, with all its initial trendiness, has been remarkably resistant to bloat and churn. Such things as it's added have largely been either standardisations of things that people were doing anyway, or very natural extensions of ideas that were already there, and it still generally passes the "…

Clojure has massive amounts of ecosystem and toolchain pain, even though it is a cool language. Most common dev environment for it is a complex emacs tool chain. If you are seeking the simple joys of programming, Clojure is unlikely to be what you want.

> Most common dev environment for it is a complex emacs tool chain.

IntelliJ + Cursive is not far behind. From the 2021 Clojure survey 43% of the devs were on Emacs and 31% on IntelliJ/Cursive. Then 12% VS Code etc.

Anyway I don't think an Emacs setup to develop in Clojure is that complex. I'm using Emacs with both Cider and LSP: doesn't strike me as particularly complicated to set up. If you're familiar at all with Emacs, it's pretty straightforward to configure.

If you're not familiar with Emacs, you can use IntelliJ with the Cursive plugin: apparently as much as one third of all the Clojure dev opt for that setup.

As a sidenote apparently 52% of the Clojure devs are on OS X and "only" 37% on Linux.

Re: Scala isn't fun anymore

#113

I actually think Scala is in the best position it's ever been. There is a commitment to making the language simpler, easier and cleaner. On the backend, ZIO ( https://zio.dev ) is the best concurrency library on any platform. On the frontend you have really interesting Scala.js projects like Laminar ( https://laminar.dev ). The biggest issue really is the tooling. SBT is simply awful.

Big agreement here.

Scala2 was a wonderful language, Scala 3 even more so; lots of corner cases have been removed and I even start to like the significant-whitespace-style.

ZIO and Typesafe (although I agree with the article; I could do with less drama) are simply amazing ecosystems. Libraries like Tapir and Quill seek their equal in other languages.

And even though sbt could be better it has been vastly improved in the last few years.

Re: Scala isn't fun anymore

#114

Earlier quoted context omitted.

Go fails at the error-handling and resource-safety part. The compiler does not cover you properly.

The fact that the compiler doesn't cover that automatically doesn't mean Go fails at it, as it has very good primitives for handling them. Error handling and deferring for resource closure work just fine. Sure you could say "but the compiler doesn't guarantee it". But that's not much of a point if it's not a real problem in practice.

> The fact that the compiler doesn't cover that automatically doesn't mean Go fails at it

But that's exactly what OP was talking about. Maybe for you that doesn't mean Go fails here, but for (us) Scala developers it definitely feel like Go fails us. We want a language that fails at compiletime in as many cases as possible.

> But that's not much of a point if it's not a real problem in practice.

Maybe not for you. For me it is!

Re: Scala isn't fun anymore

#115

I wrote scala for six years and was on the team to first deploy akka in production. I've seen Json libraries come and go while also struggling to read files written with OO and FP patterns intermixed. Scala can be beautiful but in practice it gets messy. Switched to Go four years ago and I've never looked back. Go made programming fun again just like PHP did before either of them.

hmm, did we work together then? :) Always thought I was on the first team to deploy Akka in production.

Re: Scala isn't fun anymore

#116
post #36

Earlier quoted context omitted.

I couldn't tell you exactly why (though I have some ideas), but Lisps seem to settle into amazingly stable languages. Even Clojure, with all its initial trendiness, has been remarkably resistant to bloat and churn. Such things as it's added have largely been either standardisations of things that people were doing anyway, or very natural extensions of ideas that were already there, and it still generally passes the "…

> I couldn't tell you exactly why (though I have some ideas), but Lisps seem to settle into amazingly stable languages. Even Clojure, with all its initial trendiness, has been remarkably resistant to bloat and churn. I would say that the core reasons are well understood: 1) The fact that there is built-in syntactical stability in any Lisp since the code must comprise valid Lisp data structures + a couple of special s…

Amusingly, point #2 brings its own set of complainers because they once had a bad experience with C macros.

Re: Scala isn't fun anymore

#117

Earlier quoted context omitted.

It's not just context. It's also asynchronicity and error handling for example. The semicolon semantic is how operations separated by semicolons (or newlines) are evaluated and how they impact the general state the program is in. Which is also what a monad's flatMap does, in a configurable way.

No, it is just context. Which context you choose in which part of your code is up to you. Somewhere I might choose ZIO. Elsewhere I might just choose an error-context. Or a state-context. Or a "let me accumulate some extra information while doing data-rprcessing"-context. And it is always explicit when you are in a context and which one it is. This is really the strengths over languages where this concept is missing.…

I know you can do it, the question is whether it's mainstream to do it, or whether in practice you end up with a single one in 95% of the cases.

Based on using it a bit and talking to many, more or less disillusioned, scala developers, my opinion is: it's not worth it.

It's fine for us to disagree though. There's enough programming languages and projects for everybody.

Re: Scala isn't fun anymore

#118
I worked at a Scala shop, a little over 10 years ago, and it wasn't fun then, either. 1) IDE support was unstable (Eclipse was basically unusable, IntelliJ was better.) 2) Builds were slow 3) Everyone using their own little dialect, and arguments would ensue over whether we should use that feature or not.

Perhaps it's better now.

Re: Scala isn't fun anymore

#119
post #103

Earlier quoted context omitted.

Okay, are you going to give reason or is it more of a Thought leader style pronouncement?

Haha, I guess you are right. The reason why it is a mistake is because it is essentially trying to solve the rpc problem once again even though it has been tried many times without success. There just is a difference between making a synchronous call within your own OS thread vs. making such a call against anything else (the filesystem, the network, ...). Because you can assume that a synchronous call either succeeds…

Joe Armstrong (the creator of Erlang) said the same thing back in 2008.

> The fundamental problem with taking a remote operation and wrapping it up so that it looks like a local operation is that the failure modes of local and remote operations are completely different.

> If that's not bad enough, the performance aspects are also completely different. A local operation that takes a few microseconds, when performed through an RPC, can suddenly take milliseconds.

http://armstrongonsoftware.blogspot.com/2008/05/road-we-didn...

Re: Scala isn't fun anymore

#120

Earlier quoted context omitted.

No, it is just context. Which context you choose in which part of your code is up to you. Somewhere I might choose ZIO. Elsewhere I might just choose an error-context. Or a state-context. Or a "let me accumulate some extra information while doing data-rprcessing"-context. And it is always explicit when you are in a context and which one it is. This is really the strengths over languages where this concept is missing.…

I know you can do it, the question is whether it's mainstream to do it, or whether in practice you end up with a single one in 95% of the cases. Based on using it a bit and talking to many, more or less disillusioned, scala developers, my opinion is: it's not worth it. It's fine for us to disagree though. There's enough programming languages and projects for everybody.

It is very mainstream to do that.

Show me a project that is not just a small playground that uses either ZIO or cats-effect and does NOT use another context such as Either/Try or Option or List, ...

Post reply on HN