There is a fundamental change in language coming. I believe that within 5 years the latest crop of programmers will begin to write PROVEN functional programs. Program proof technology has taken a giant leap in the last few years. These new techniques are starting to show up at Universities. Those graduates will know how to prove programs and, after the old programmers like myself die off, will simply expect that proo…
I've recently tried out Elm [1] and have come away with a similar perspective on functional programming and static typing. The benefits I noticed are:
- Because of the static typing and strict management of data/state, the compiler is very good at telling you where the errors in your code are.
- If the compiler is happy, there are essentially no runtime errors.
- While I didn't write any tests, unit testing seems like it would be trivial because every function is stateless.
- You're forced to write better code. I find that Elm is pleasantly constraining. It's an opinionated language that forces you into certain design patterns, but they always seemed like the design pattern I should be using anyway.
Overall, I haven't been more impressed by a language since I discovered Ruby a decade ago. If you could do backend development in Elm I would probably try using it as my primary language.
1. If anyone else is interested, I went through the Pragmatic Studio Elm course: https://pragmaticstudio.com/courses/elm. I have no affiliation with them, just thought it was a really well done course and would recommend it to others who want to try out Elm.