| ▲ | hunterpayne a day ago |
| The problem with Scala 3 is that nobody asked for it. The problem with Scala 2 is that the type inference part of the compiler is still broken. Nobody worked on that. Instead they changed the language in ways that don't address complaints. Completely ignore the market and deliver a product nobody wants. That's what happened here. PS Perhaps they should make an actual unit test suite for their compiler. Instead they have a couple of dozen tests and have to guess if their compiler PR will break things. |
|
| ▲ | thefaux a day ago | parent | next [-] |
| It's sad but I generally agree. Scala was in my view pretty well positioned for an up and coming language ~2010-15. Not only did the scala 3 rewrite fail to address many of the most common pain points -- compile times and tooling immediately come to mind -- the rewrite took many years and completely stalled the momentum of the project. I have to wonder at this point who is actually starting a new project in scala in 2025. It's really a shame because in many ways I do think it is a better language than anything else that is widely used in industry but it seems the world has moved on. |
| |
| ▲ | still_grokking 4 hours ago | parent | next [-] | | > It's really a shame because in many ways I do think it is a better language than anything else that is widely used in industry but it seems the world has moved on. No it didn't. Scala is powering some of the biggest companies on this planet. https://business4s.org/scala-adoption-tracker/ It does apparently so well that nobody is even talking about it… So it seems even better than all the languages people are "talking" (complaining) about. | |
| ▲ | theLiminator 16 hours ago | parent | prev | next [-] | | > It's really a shame because in many ways I do think it is a better language than anything else that is widely used in industry but it seems the world has moved on. I'm really hoping that https://flix.dev/ will learn from the mistakes of Scala. I t looks like a pretty nice spiritual successor to Scala. | |
| ▲ | zahlman a day ago | parent | prev [-] | | >It's sad but I generally agree. Scala was in my view pretty well positioned for an up and coming language ~2010-15 I used Scala for a bit around that period. My main recollection of it is getting Java compiler errors because Scala constructs were being implemented with deeply nested inner classes and the generated symbol names were too long. | | |
| ▲ | still_grokking 4 hours ago | parent [-] | | > My main recollection of it is getting Java compiler errors because Scala constructs were being implemented with deeply nested inner classes and the generated symbol names were too long. Sounds like you've used some beta version over 15 years ago. Nothing like described happens in current Scala and it's like that as long as I can think back. Never even heard of such bugs like stated. Coming up with such possibly made up stuff over 15 years later sounds like typical FUD, to be honest. |
|
|
|
| ▲ | lispisok a day ago | parent | prev | next [-] |
| I tried getting into Scala several times and kept going back to Clojure. Unless you are into type system minigames Clojure has many of the things Scala advertises but without the dumptruck of Scala overhead and complexity. Another commenter briefly touched on this but it's a language made by academics for academics to play with language design. It was a little weird it blew up in industry for a while. |
| |
| ▲ | acjohnson55 a day ago | parent | next [-] | | > it's a language made by academics for academics to play with language design. It was a little weird it blew up in industry for a while. Yep. They have always been pretty honest about this. I think that it blew up in industry because it really was ahead of its time. Type systems were pretty uncool before Scala. It proved that you could get OO and FP in a single type system. Actually, a big part of reason for doing Scala 3 was rebasing the language on a more rigorous basis for unifying OO and FP. They felt that for all their other big ideas, it was time to rethink the fundamentals. | | |
| ▲ | refulgentis a day ago | parent [-] | | > Type systems were pretty uncool before Scala I’m not up on programming language engineering as much as I should be at 37, could you elaborate a bit here? (To my untrained ear, it sounds like you’re saying Scala was one of the first languages that helped types break through? And I’m thinking that means, like, have int x = 42; or Foo y = new Foo()” | | |
| ▲ | hunterpayne a day ago | parent [-] | | Not types, type-safety. Things like covariant and contravariant type declarations, implicit types (variables looked up by type instead of by label), and other things that you need to make a type safe system/service/application. The problem is that that feature of a language is massively oversold. Its nice but to pretend it prevents bugs or is even a great design goal is questionable and not backed up by research (as they claim). | | |
| ▲ | still_grokking 4 hours ago | parent | next [-] | | > Its nice but to pretend it prevents bugs or is even a great design goal is questionable and not backed up by research (as they claim). That's why people use JavaScript instead of Rust for critical systems, right? Claiming in the year 2025 that strong static types don't provide massive advantages is almost laughable, TBH. This was settled long ago, and the whole industry now understands that type safety is inevitable to create reliable and scalable systems. | |
| ▲ | dionian 21 hours ago | parent | prev [-] | | But it’s still a way more powerful and expressive type system than Java. So using it in a JVM ecosystem is a perfect fit. |
|
|
| |
| ▲ | still_grokking 4 hours ago | parent | prev | next [-] | | > It was a little weird it blew up in industry for a while. It never went away. It only got more: https://business4s.org/scala-adoption-tracker/ | |
| ▲ | dionian 21 hours ago | parent | prev [-] | | The simplicity of closure is certainly a main part of its appeal. I’ve never done OOP in it, but I don’t think I want to. I have a lot of respect for it though. |
|
|
| ▲ | ergocoder a day ago | parent | prev | next [-] |
| You capture the root issue quite well. Now every tool has to adapt to Scala 3. And you guess it? It will take time. Even IntelliJ still doesn't correctly highlight syntax on some parts that also exist in Scala 2. And this has been years after Scala 3 was launched. It's mind-boggling. They could have improved upon Scala 2 and incrementally add more capabilities. It's obvious they don't care about Scala's industry success. They care mostly about the academic success. Nothing wrong with that, but that should be made very clear. In Scala, they have a huge debate with zealots arguing against, for example, early return; they would describe how bad it will be blah blah blah e.g. https://tpolecat.github.io/2014/05/09/return.html, meanwhile Kotlin supports early return with absolutely no issue. |
|
| ▲ | oelang a day ago | parent | prev | next [-] |
| And I wish you read the article, you're comments are completely off topic. |
|
| ▲ | voidfunc a day ago | parent | prev | next [-] |
| Scala has deep roots in the Ivory Towers of Academia, its not shocking they think they know better than their users what the problems with the language are and didn't do any kind of real product management to figure out the actual problems before embarking on a rebuild. |
| |
| ▲ | js8 15 hours ago | parent [-] | | It wouldn't be a problem, but the issue is a one of expectations. Was Scala supposed to be a research language (focus on novel features) or an industrial language (focus on stability and maintainability)? I think Oderski wanted the first but many people wished for the second. |
|
|
| ▲ | monksy 21 hours ago | parent | prev | next [-] |
| It was absolutely amazing how stubborn and ridiculous the whole bracket-less syntax change was handled. It was basically a dictatorial decision that they pretended to be a community decision. It was just pushed and tons of people voiced their disapproval. In the end it was "so bad so sad you can always reenable brackets". They did it to try to appeal to Pythonists.. turns out that wasn't why Pythonists didn't use scala in the first place. |
| |
| ▲ | still_grokking 4 hours ago | parent | next [-] | | > In the end it was "so bad so sad you can always reenable brackets". This is not true. Nobody ever proposed to replace the old syntax! The new syntax was, and is, optional, and that's exactly like designed from the very beginning. | |
| ▲ | dionian 21 hours ago | parent | prev [-] | | I think it’s nice to be able to use it. But like pretty much everything in scala, it’s a huge smorgasbord of things from which you can choose. I personally don’t use that syntax, but it’s cool that I can and sometimes I do just for fun. | | |
| ▲ | jll29 14 hours ago | parent [-] | | A language should not be complicated. (Wish Odersky, capable as he is, kept working on his much-verlooked TurboModula). Simple: - Scheme - C - Pascal - Go - Lua Complicated - PL/1 - C++ 2024 - Scala 3 Still borderline or beyond? - Rust - Java (>850 pp. lang. specification...) | | |
| ▲ | still_grokking 3 hours ago | parent [-] | | Extremely weird list. The Scala spec is much shorter than the C spec… Also it's of course much shorter than Rust, where nobody has a real issue with its complexity, at least nobody is complaining really loudly. The C and Go specs are actually extremely involved, long, and complex given that the languages almost don't have any features at all. But comparing language specs isn't a 100% fair metric. One should instead look at formal language semantic definitions written all in the same way. If you look at these you will for example learn that the C semantics are much more complex than for example Java. Check out https://kframework.org/ to learn more. (A list of semantics for different languages can be found on the "projects" sub page). |
|
|
|
|
| ▲ | lmm a day ago | parent | prev | next [-] |
| > The problem with Scala 2 is that the type inference part of the compiler is still broken. Nobody worked on that. Instead they changed the language in ways that don't address complaints. Huh? Type inference is much more consistent and well-specified in 3. In 2 it was ad-hoc so and impossible to fix anything for one codebase without breaking another. There are plenty of legitimate complaints to be had about Scala 3, but this is absolutely not one of them. |
|
| ▲ | still_grokking 4 hours ago | parent | prev | next [-] |
| > PS Perhaps they should make an actual unit test suite for their compiler. Instead they have a couple of dozen tests and have to guess if their compiler PR will break things. You did not even try to formulate it in a way that could be interpreted as you just not knowing; instead you make blatant false statements in the most confident way possible. Your statement is therefore an outright lie, spreading FUD. As a matter of fact the Scala compiler has thousands, likely even tens of thousands of test cases. https://github.com/scala/scala3/tree/main/tests But that's not all. Scala (2 & 3) has also a test case called "community build" where new compiler releases are tested by compiling millions of LOCs from all kinds of Scala OpenSource projects. https://github.com/VirtusLab/community-build3 https://github.com/scala/community-build |
|
| ▲ | vletal 16 hours ago | parent | prev [-] |
| I was so stoked, when it was released. Loved the approach they take. So, I can say, there was at least one person who asked for it. With the hindsight, it is not a great mainstream language and the new opinionated language is too hard for junior Joe developers. Anyway, you clearly have not read the article, as it is about bug in a transitive dependency, not an actual Scala 3 issue. p.s.: Scala compiler is one of the most aggressively tested pieces of software in the JVM ecosystem. |