Scala is an excellent language with a terrible implementation.

Stuff that is awesome about scala:

  • vObj calculus is the best type structure out there
  • Implicits provide a reasonable encoding for typeclasses
  • Unrestricted nesting of language constructs
  • Reasonably terse
  • Fairly complete

Stuff that sucks about scala:

  • 5s to spin up repl
  • 5s to eval simple statements in repl
  • The compiler is dog slow
  • Preponderance of weird proprietary build systems.
  • Culture problems: "tour of scala" examples use the word "monoid"
  • It only runs reasonably on the JVM, and the JVM is awful.
  • Uses C#/Java/C style method calls with (), negating many of the benefits of being "functional"
  • Type inference is unreasonably limited when compared to, say, OCaml.
  • Symbol Soup.
  • Braces are used to delimit control flow. Layout is much more elegant.

Redeeming scala

  • Remove all JVM-ness
  • Build a fast compiler
  • Make it simple enough to drive via make without performance concessions
  • Fix type inference to make it a little bit less local. At the very least, should support local helper functions with no annotations as well as OCaml does.
Comments powered by Disqus