Rant with random thoughts incoming. No particular argument against you, just got some neurons fired by the comments here and I felt like sharing the thoughts behind them.
Yes they are. But we’re going to be in 2020 soon. The IT area has to start becoming truly useful and more generally applicable. Rust’s Tokio scheduler has been improved with up to 10x performance recently. Languages like Crystal, while intriguing, will inevitably become fringe curiosities in a few years if the only thing they bring to the table is a faster Ruby-like compiled language. The LLVM / IR compilers and runtimes aren’t the ultimate art in the area but they are still times faster than Crystal in real workflows no matter what a biased benchmark like TechEmpower shows – their only valuable test is the so-called Fortunes where they include various activities done in a web app; and even that doesn’t match the patterns of real web apps usage that much. (But still, it’s a respectable benchmark; much more than their others anyway.)
People praise Python left and right but without a good solid concurrency and parallelism story akin to the OTP – and in a world where only the CPU cores will increase and the frequency will likely never go beyond 10GHz per core – it will always remain just a glue for scientific or deep learning libraries and nothing much else. This, I would argue, has happened several years ago and will only continue. Serious people with tough projects reach for other languages and runtimes. Almost the same applies to PHP (a lot of old inertia and code that people don’t want to rewrite) and Ruby (quick and convenient scripting with a slow web framework tacked on top).
I am not talking about myself here but for many other people – and they are sick and tired of IT being so grossly inefficient and coming with a ton of gotchas no matter what technology you choose. It’s an eye-opener to communicate more with people outside IT. I believe that, as a consultant, you (@devonestes) are very well aware of that.
There’s such a thing as the best tool for the job and the business reality of quick buck in exchange for a tech debt is not going anywhere until capitalism itself ceases to exist. That will be a fact of life for a while still.
But when you can use such a resilient runtime like the OTP while reaching for languages that become better every month – like Rust, and maybe Zig, Nim and OCaml in the near future – when you need the full muscle of your hardware, then a lot of other languages and tech start to look inadequate and kind of superfluous in the grand scheme of things.
As I’ve shared before in this forum, as I am [hopefully] maturing as a human being and not only as a programmer, I want to achieve more while sitting on my computers – while spending less time on them. Languages like Crystal, F#, Haskell and a ton of others can teach you interesting things for sure but I wouldn’t reach for them for real production work. Same reason while I eventually rejected Racket even though I fell in love with it – it’s an amazing language in every way but… no really good transparent concurrency/parallelism like the OTP!
The only thing that truly gives Erlang/Elixir a run for their money in this department is Rust’s
actix-web frameworks. And even they have ways to go still. Everybody has ways to go until they catch up with the OTP, sadly. I’d kill for an OCaml with OTP, for example…
Eventually, Elixir might become a fringe curiosity language as well. I wouldn’t kick and scream about it. For now though, it’s a very solid contender even if it lags behind Rust’s
actix by a factor of 13x performance in the Fortunes section of TechEmpower (and likely 100x or more behind on true muscle power). A lot of people out there like reliability and future-proofing more and not a Ferrari that can crash into a wall after it takes three turns.
/end random rant