But really, Scala remains the most fun you can have in your day job Which is why it wins again and again compared to every other language I have tried in the last decade (or 3). In particular it wins against GoLang, Java, Kotlin, Typescript and Python which I have had to use in the last 3 years.
Language choice 2021
Scala vs Kotlin 2021 Java vs Kotlin 2021 Typescript vs Javscript 2021 GoLang vs Java 2021 Typescipt vs Scala 2021 Python vs Kotlin 2021
Or: ‘ Scala is not too hard’
Scala is still my language of choice. I have been reading about its pending death for the last 3 years, ‘The death of Scala!’. This is certainly a great tag line for a blog.
However, they always end up saying that Scala is still the most powerful language. It has the most features but lots of the web say these features are ‘hard’, so use myNewLanguage instead. Then they go on about all the hard bits of their own language - structural types, null interop with Java, write only code - or the totally terrible set of tools you need to download in order to get HelloWorld onto a web page.
I was starting to agree that Scala is hard because so many people have been saying it. They say it right at the start of their docs about why you should learn their less fun language. Or why you should pay for their Kotlin training.
Even the functional Scala folks attack Scala at conferences, and some of their reasoning is totally strange. It is not Haskell! Err. Well, its not Haskell, but Scala is adaptable so if you want to you can treat it like Haskell by downloading some libraries. Better yet these folks could stop digging at Scala and go program in Haskell.
FP! I found this quote:
Michael Feathers, Nov 3, 2010
OO makes code understandable by encapsulating moving parts.
FP makes code understandable by minimizing moving parts.
The quote sums it up nicely, both approaches are about making the code understandable. If you add unit tests then both approaches are proven, and your code is great. Neither approach is ‘better’.
So FP vs OO is yet another religious war which is actually irrelevant. All the languages (well most) now embrace both. Scala also allows you to write imperative (if then else) logic and then move through that to functional (.filter.map.recover). If you love being a software engineer Scala still remains the most fun language to learn, and keep on learning.
Scala 3 has changed Scala quite a lot. This is a positive - this is why Scala is great. Java is pulling in more and more features of Scala, they have been playing catch-up for a decade now and will continue to. Improving the language to respond to changes in the field of software engineering is a really good thing, and rewriting software systems to take advantage of features is also a good thing. Scala 3 looked at Python, looked at Kotlin, looked at itself and the feedback and changed some Syntax and I look forward to how Tasty could be used in the future.
So, Scala vs. The argument remains that lots of web sites state/argue Scala is too big and powerful, too featured. They take the good bits (that they like) and then add their own complexities to their own smaller languages. The counter argument is to ‘Just Say No’. Scala is not too big or too powerful or too hard, if I can do it then you can too.
But Scala is too big!
FUD, Fear Uncertainty and death
Back in the Solaris Windows wars there was lots of Fake News. Back then it was called FUD. The one I hear over and over is ‘Scala is an academic language and it shows compared with Y which is commercial.’ Scala has been run by a commercial company for a decade now, and is ALSO having features designed with academic theory behind them. I want my software engineering language to have solid foundations in academia, and to also feed in commercial push back - purely theoretical languages do tend to fail.
Ignore the FUD (or Fake News). We want theory to back our languages.
Scala is only as big as you choose.
Don't worry about the bits you can't understand - Roald Dahl
Do the bits you can do, once you have that mastered, and you fancy learning again, do the next bits. You will end up being a totally modern software engineer who can work with any other language in the field.
It remains the most fun you can have in your day job - in either OO or FP.