Why so Serious?

Bias is an inescapable bug of the organic brain – it is forced to do very aggressive inference and approximation in order to conserve energy. I try hard not to judge but I do prefer pointing people at their bias (and I am grateful when mine are pointed out to me) so we can all collectively improve.

(I tried writing Perl ages ago. Never again, even if I am paid for it. Couldn’t let your remark without a response! The very little I know about it does tell me it survives on affection indeed – regardless if your remark was sarcastic or not – but I would not swear my life on that statement; I’ve seen the horrors that persist in some Linux packages that would be 100% dead if tomorrow Perl disappears.)

I would not mourn if 99% of all PLs get magically deleted from every computer on the planet tomorrow. Because that’s the approximate percentage of PLs that were mostly learning harnesses for their creators and not an objective improvement of the landscape.

Ultimately I believe every single PL / framework will fall in only one of the three camps:

  1. Strongly but dynamically typed languages (like Elixir); you don’t want to have to add tests that assert a function does in fact only works with an integer and not with a float or a string etc. (And I’ve seen that done, more than once, in big Ruby on Rails projects, that make millions every month.) That’s just burning rubber. Languages in this group will be good for prototyping and orchestrating and partial or full self-healing. Very valid niche.

  2. Strongly and statically typed languages (Ocaml, Rust, Haskell, Golang, Zig). When you really want to tighten the bolts and make invalid states non-presentable in code… and maybe also have ultra performance (Rust, Haskell, Zig). We might fit Idris and Coq here for their contribution to an even stronger typing. Ideally at one point we’ll get linear typing and others in the more mainstream languages like Rust and Golang, but it’s highly doubtful. They’ll likely fade at one point and others, even more refined languages, will take their place.

  3. Declarative programming languages that get transpiled by SAT / SMT / other solvers to many other languages in groups 1 and 2. I am thinking stuff like Kubernetes YAML files here: you describe your desired end state and the runtime reconciles what it can currently see versus what you need. IMO declarative programming will one day be the only programming that remains… but it’ll use a few lower-level PLs below (due to my bias I’d think those would be Rust + Elixir but they could be any pair that belongs to groups 1 and 2 respectively).

4 Likes