I've always loved Scala and Scala 3 is shaping up to be extremely exciting. Love the new ADTs and braceless syntax: really gives the language a cleaner and more ML inspired feel.<p>No other conventional language (including OCaml, F#, etc) seem to have the effortless kind of power Scala does.<p>The combination of the extremely powerful type system with the "OOFP" paradigm is a great combination. OOFP is such a great paradigm and it's unfortunate that no other language has embraced it.<p>It's ironic that I love Scala so much because I don't particularly enjoy dealing with the JVM and all its complexities and problem. But Scala is so good that it mostly makes up for it.<p>Scala does get a lot of hate (especially around here), but I've never really understood why. There's only one language I like more (kdb+/q), but that's a hard sell, especially because of the cost.<p>Too bad there's not really a ML/AI ecosystem around (besides Spark, which seems to be losing favor partially because of its embarrassing performance), because using Python is such a drag. However, I do understand why non-CS/type theory people might find the language intimidating.<p>But to that I'd say, I've seen new junior (though very smart) developers with no Scala or FP experience get onboarded and write idiomatic Scala code within a couple weeks to a month. The short term cost is more than worth it considering the absurd productivity compared to Java/Kotlin/Python/blublang.<p>Compared to OCaml/F#/Haskell, the improvement is a little less stark, though still clear imo (especially when considering editor tooling and available packages).
Very, very excited about Scala 3. Here are some of the things I'm looking forward to using:<p>* Generally a more clean language for everyday use, codifying existing patterns like newtypes (opaque types), typeclass derivation and extension methods<p>* Improved type inference & lots of other quality of life improvements<p>* A macro system based on the idea of multi-stage programming. This has a lot of potential for improving both type-safety and performance. An example: beating existing database systems query optimization with ~500 lines of Scala code [1]<p>* TASTY, a new intermediate representation (AST) for artifacts. This means that Scala will have a much better version upgrade / binary compatibility story in the future. (e.g. TASTY is used for facilitating 2.13 <-> 3.0 bi-direction upgrade!)<p>* Significant compile time improvements over Scala2 alraedy[2] (and we're only at M1 release)!<p>Scala has already been a wonderful language to work with professionally with many great tooling (linting, automatic migration, 2 good OSS IDEs), and I think Scala 3 will certainly push the state-of-the-art forward in many departments in the coming years.<p>[1]:<a href="https://www.cs.purdue.edu/homes/rompf/papers/rompf-icfp15.pdf" rel="nofollow">https://www.cs.purdue.edu/homes/rompf/papers/rompf-icfp15.pd...</a><p>[2]: <a href="https://twitter.com/not_xuwei_k/status/1323643312230772737" rel="nofollow">https://twitter.com/not_xuwei_k/status/1323643312230772737</a>
In my company (10k+ devs) Scala seems to be losing steam. All the enthusiasts have moved to Go/Rust, while the pragmatics are staying in (moving back) in Java. No new major project is being built in Scala.<p>Does anyone share this experience?
Scala 3 is a huge change. As someone who used Scala for years, but always wondered whether they can retain their users with competition from Kotlin, I'm extremely curious what this will mean for Scala in the long run.<p>I'm skeptical, because the cost to migrate is big. But I'm hopeful, because Scala is a language I like to write code in.<p>Edit: why am I skeptical? I know scala 3 is largely meant to be backwards compatible. But scala has always been a language of many styles ("java without semicolon" vs "haskell compiled with scalac"). All this new syntax in scala three adds a whole new dimension to this issue.
Just want to give Martin Odersky a shout out - what a legend this guy.<p>62 years old, going strong.<p>I'm not even in the java ecosystem but Scala strikes me as the most likely language to do something fresh and interesting on top of an existing ecosystem in the next few years, which is terrific news.
The Scala language is great but the ecosystem sacrifices simplicity for pure FP. Scala has always suffered from complexity problems due to libraries. For example, using Http/JSON/Database libraries have always been a lot harder than they need to be due to a die hard approach to pure FP.<p>Scala 3 looks pretty good, but I just can NOT see myself using Scala again, after having worked with it for 4-5 years at work and on personal projects. I write mostly/reasonably FP code without using Cats/Category theory. I’ve recently moved all my code from Scala to Kotlin and I’m loving it, found the perfect balance with Kotlin.
I have downloaded this big open source project which uses spring and ibatis and have everything which OOP offers.<p>For learning Scala, I am trying to re-write it using play framework. Case classes do offer reduction in boiler plate code. But write now feeling overwhelmed about how to map all this deep inheritance tree, factories etc. from OOP world to functional way of doing things.<p>I hope someone write side by side mapping of doing things in Scala 2 vs Scala 3.
The most important thing that no one seems to mention is that Scala 3 is not compatible with Scala 2. This means that they are creating competition for themselves. It is the Python 2 vs 3 problem all over again.
Scala can be nice but up until now compilation is way too slow to live with. Hopefully this will make it more palatable, but I've moved to Kotlin already.
Scala 3 making progress is great, just like progress on the Scala 2.13 camp:<p>Scala on Track to Support Java 9 Module System
<a href="https://github.com/scala/scala-dev/issues/529" rel="nofollow">https://github.com/scala/scala-dev/issues/529</a><p>Scala 2.13 on track to support Spark
<a href="https://issues.apache.org/jira/browse/SPARK-25075" rel="nofollow">https://issues.apache.org/jira/browse/SPARK-25075</a>