In-reply-to » #randomQuestionsOfTheDay

@eaplmx@twtxt.net I’m pretty biased because I’ve been using scala as my language of choice since 2013 or so 😆

Whatever documentation issues there were in the early days have long since been addressed, in my opinion. Martin Odersky, the original creator of the language, is in academia and regularly publishes academic articles on scala and its theoretical underpinnings along with his students. So, if you’re into that sort of thing, there’s lots of theory to read. Since it’s typically a top-20 or top-30 language in various language surveys, there’s a lot of StackOverflow activity about it, meaning more nuts-and-bolts practical stuff. The major libraries and frameworks nowadays tend to be very well documented (I’ve never used play and cannot speak to that one).

Scala doesn’t look anything like java. You could write scala that looks like java if you want, in the same way that you could write C that looks like java if you want. But idiomatic scala is not like java, and generally the OO facilities in scala are not used (in my experience anyway). You can compile scala to Javascript and run it in a browser, or to native machine code–it’s a distinct language with the JVM as only one of its compilation targets.

Where I stand is that I refuse to use a language that doesn’t have a sound, well-described theoretical foundation anymore. I’ve been burned too many times learning languages that lack a clear foundation (cough python cough); I think this inevitably leads to a lot of wasteful hacking and confusion. I also very much want functional programming constructs to have first-class language support, without being forced to always use them forever like you would in a language like Haskell. It’s also nice to have a big ecosystem of existing code to use if you need it. Scala satisfices on all those criteria, and has a bunch of other nice features besides, so I stick with it. It’s definitely not for everyone, but 🤷

⤋ Read More