NO, NO, NO. Scala is NOT a 'great' language.
It is implemented in Java, so suffers ALL of the performance issues of Java (and then some). I would be THRILLED to see a new, straightforward language (vs. C++) which is strongly typed. From my personal perspective, GOLang is the best improvement so far, but suffers from a worse case of 'rpm hell' equivalant than general linux rpm packages do.
Secondly, "Functional Programming" is best described as "DisFunctional Programming". The primary precept of functional programming is that there are ZERO side effects. Well, welcome to the real world of hardware/network failures. Please stop pitching garbage ideas to the rest of us realists.
Dismissing new ideas out of hand does not make you a realist, it makes you ignorant. You seem to be confusing functional programming with purely functional programming for one, and for two, if you think purely functional programming doesn’t deal with side effects or failures in any way, then you don’t know enough about it to pass judgement.
> The primary precept of functional programming is that there are ZERO side effects. Well, welcome to the real world of hardware/network failures.
You clearly have never actually learned a functional programming language, because functional programming tends to make it easier to handle errors and side effects precisely because they are more contained, instead of allowing any arbitrary code to throw an exception, or having to remember to handle error codes, etc. I strongly suggest that you build a small toy program in a language like Haskell—it really does change how you approach problems, even in more mainstream, imperative languages.
Sounds like you never tried it, just because it runs on JVM doesn't make it bad, on the contrary actually. Go is a completely different thing. Scala is one of the most pleasant languages to write.
> Please stop pitching garbage ideas to the rest of us realists.
The common definition of what side effects are would argue otherwise. Functional programs definitely do adhere to maintaining referential transparency. FP is about the world of the program, and the unknown. In the unknown, server failures and network issues happen, absolutely, but for the maintainability and local reasoning of the code, the rules of functional programming are followed so as many of those situations are handled. No paradigm can account for everything, and functional programming is one way of reasoning about the outside world in one of the safest ways you can. I think its totally unfair to consider FP as a garbage idea, there are tons of companies that follow these practices that rake in billions of dollars because their software works and is reliable. There plenty of valid criticisms of FP, but the world outside the JVM failing isn't one of them.