With languages like Scala I think its a clearer necessity that someone or some small group in an organization maintains a dominance of expertise or you have different groups that are only using the same language in name or facing overhead to keep in agreement where a lot of the best developers might be basically doing ambassador work.
I would say Clojure is a big exception to that - Clojure applications tend to be more uniform than even non lisps
> if you are not bound to the JVM I really don't understand why you would go with Scala today.
Scala's metaprogramming abilities coupled to a powerful type system are still unmatched. Among mainstream languages, only TypeScript gets somewhat close. For your typical service oriented architecture, libraries such as Tapir or ZIO HTTP are pretty nice. I haven't found anything as pleasant in other languages.
That said if an LLM can write 95% of your code today, this point is a bit moot, sadly.
Really this is all true with humans too, but IMO it's multiplied with LLMs because they are insanely capable at dealing with the guts of metaprogramming wizardry if they need to, so you don't end up in a world where that one guy that understands it leaves and then no one can possibly maintain it.
Now I still want operator overloading, because I favor enabling instead of disabling approaches, and I want, for example, new numeric types to have natural syntax that blends in with built-ins, or an equality operator that works consistently. I’ll even settle for += append to strings and collections.
But even Scala standard libraries take operator use to wild extremes. Apparently it’s not enough to use + to append collections, you must use ++. Except Vec you can add with +. There’s ++= and ++=:, and /: and :: and ::: and ?^ and ?^.
Spark Scala interface introduces =!= for inequality comparison. There’s |@| from Cons library. Don’t get me started on Akka. SBT introduces <++=
Surprisingly you can’t override ==, so Spark implements ===. And specs2 testing library implements ====.
Most of the conversations I have with folks about Scala issues these days center around implicits, tooling, and its decline/lack of popularity.
[0] https://en.wikipedia.org/wiki/Chisel_(programming_language)
https://github.com/chipsalliance/chisel-template/blob/main/b...
I’ve only used Chisel for a few projects but I’ve never used anything but Chisel in those codebases. Simulation, verification, and all the painful stuff in FPGA/ASIC development depends on non-Scala tooling and all of the inputs (parametrization) are just read in from JSON files produced by scripts in other languages.
It would be nice to be up to date but the hardware NRE is so damn high that working around any limitations in Scala support is a rounding error. Chisel’s outputs are sent out for $X00,000 fab production runs so no one gives a damn whether it’s Scala 2 or 3 as long as it ships a working IC. The last time I used Chisel I was working on a mixed signal design where the Synopsys Fusion Compiler (maybe Custom compiler?) licenses alone ran into the hundreds of thousands per year (iirc it was per seat, so we must have spent over a million per year on Synopsys alone).
It's a great language, I've been working with it for 10 years now. Full stack Scala with Scala.js on the frontend is so very nice. My experience is mostly in fintech & healthcare startups where the language helped us get correctness, refactorability, clarity, and high velocity at the same time without blowing up the team size.
Initially I learned Scala on the job, but I've been writing open source Scala for years since then. It's a cool language to learn and explore ideas in, since it has lots of elegantly integrated features (especially FP + OOP).
Scala may not be the #1 most popular language, and that's fine. Popular stuff surely gets the benefits of funding and attention, and sometimes lacking such support is really annoying, like a few years ago when Scala 3 was first released, the IDEs took a looong time to catch up. But I still choose Scala despite those occasional annoyances, even though I also have years of experience in JS / TS and other languages. It's just a much better tool for my needs.
I worked in Scala for most of my career and it was never hard to get a job on a growth stage data team or, indeed, in finance/data-intensive industries. I'm still shocked at how the language/community managed to throw away the position they had achieved. At first I was equally shocked to see the Saudi Sovereign Wealth fund investing in the language, but then realized it was just 300k from the EU and everything made sense.
It's still my favorite language for getting things done so I wouldn't be upset with a comeback for the language, but I certainly don't expect it at this point.
And I don't think it matters anymore. I predict that the JVM will eventually be out of the equation. We're already seeing query engines being replaced by proprietary or open source equivalents in C++ or Rust. Large scale distribution is less of a selling point with modern cloud computing. Do you really need 100 executors when you can get a bare metal instance with 192, 256 or 384 cores?
People want a dataframe API in Python because that's what the the ML/DS/AI crowd knows. Queries and processing will be done in C++ or Rust, with little or even zero need for a distributed runtime. The JVM and Scala solve a problem that simply won't exist anymore.
For people who don't get this, EPFL is the Swiss Federal Technical Institue in Lausanne. Switzerland isn't part of the EU or EEA but has instead integrated itself with the EU very closely via a mindboggling number of bilateral agreements with the EU members and the Schengen agreement which allows for free, borderless movement. This has the effect of making it seem very much like they are part of the EU without actually being as such.
https://en.wikipedia.org/wiki/Switzerland%E2%80%93European_U...
I thought what was worth mentioning was being European or not, rather than being part of an European legal entity or not.
A good friend worked on the well regarded Telesoft compiler…
For our technology freedom we need to focus on programming languages where PR aren't coming from contributors living in adversary nations.
Spark is Scala, Twitter was (is?) Scala https://sysgears.com/articles/how-and-why-twitter-uses-scala...
That would be Javascript.
There are like dozen of implementations for JVM alone: sun, Oracle, gnu, IBM etc etc
This may seem trivial, but because its fundamentally "hacky" its not something that is ever going to be as easy to work with and expand.
second link - 404
third link - achieved project on github
fourth link - educational project
Perhaps it's a very know and useful project, yet indeed seems very niche to me.
The ancestor comment called Scala "niche" and criticized the characterization of it as "widely used". So given that context, I was coming at this from a perspective of popularity; Chisel is orders of magnitude nicher than even Scala itself and orders of magnitude less widely used. Most of industry is still choosing VHDL or Verilog for most greenfield hardware projects.
I think you mean in terms of "best way to do it". Chisel can at least lay claim to that crown, sure, though I think you could say the same about Scala too.
(I might say Clash for hardware and Haskell for software, not that that does me any good.)
Sad to see code coverage tooling called out as something they’re spending money on
Happy to see scala get sponsorship
(In case you Germans still don't get it -- that was a joke, but feel free to downvote :) )
https://bootstrappable.org/projects/java.html https://bootstrappable.org/projects/java-tools.html https://bootstrappable.org/projects/jvm-languages.html
All on the basis of her...being Albanian.
Talk about public money mismanagement.