First 38 minutes is about problems in implementing Scala; after that it’s a general “What I’m after” in programming that’s much more interesting to non-Scala devs.
I have a love-hate relationship with this; I think he gets a lot right but a few critical things wrong. Two years on, clicking through and trying to read the slides because there’s apparently still no transcript:
We have a better compare interface. I think we’ve always had it, people just preferred to use the java-compatible variant. That’s changing, but it will take a long time to migrate existing code.
Universal equals is still pretty awful. Scalaz has an alternative, and alternative collections to go with it. The typelevel scala fork has an option for irrefutability in some pattern-matches. I can hope this will be adopted more generally.
Phillips has his own collections library. It fixes a lot of design mistakes in the official Scala one. But it introduces a much bigger one in the form of (uncontrolled, invisible) laziness, so I can’t use it.
IEEE 754 floating-point is weird. But it’s weird in well-known ways and it’s a hard requirement for many users. I’d like to see a language that deprioritized it, that made decimal arithmetic the default and IEEE 754 a non-core type that you opted in to. But realistically, that’s never happening in Scala.
And in practice it doesn’t matter, because who the hell uses Float? I don’t think code that mentioned Float would pass code review where I work.
Generality is good. Or at least, every special-purpose programming language I’ve ever seen sucked big time. There’s a pattern there.
The same with non-String representations. It sounds like a good idea. But every non-String programming language I’ve ever used sucked.
Alternative response: scala.meta now exists. We’ll see how it goes.
IR work is happening. Scala.js is forcing us to decouple ourselves from the JVM.
First-class change is the opposite of the right idea. And it’s never going to work if we still consider whole-program optimization essential.
Maybe first-class change would be good, just because it would force a clearer language model. It’s fundamentally incompatible with a Haskell-style language that passes unexecuted thunks around all over the place.
If you believe, as Phillips says, that Scala was the best language for real-world programs in 2013, then that’s almost certainly still true now; Idris is not (yet) mature enough to substitute for it, and I don’t think anything else has really emerged over the last two years.
Even correctness is ultimately an 80/20 thing. All popular languages are more-or-less frozen at the point where they became popular enough (if anything I think Scala’s done better than most at continuing to evolve). I’ve no doubt there will be better languages than Scala in the future. But the more programming I do, the less important that fact seems.
I have a love-hate relationship with this; I think he gets a lot right but a few critical things wrong. Two years on, clicking through and trying to read the slides because there’s apparently still no transcript:
If you believe, as Phillips says, that Scala was the best language for real-world programs in 2013, then that’s almost certainly still true now; Idris is not (yet) mature enough to substitute for it, and I don’t think anything else has really emerged over the last two years.
Even correctness is ultimately an 80/20 thing. All popular languages are more-or-less frozen at the point where they became popular enough (if anything I think Scala’s done better than most at continuing to evolve). I’ve no doubt there will be better languages than Scala in the future. But the more programming I do, the less important that fact seems.
Thank you for this excellent, thorough response. And I think you’re dead on about how languages get frozen.