1. 4

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.

  1.  

  2. 3

    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.

    1. 1

      Thank you for this excellent, thorough response. And I think you’re dead on about how languages get frozen.