I’m generally skeptical of FP hype, but this was a good article. The author presented his case clearly and made sure to acknowledge his biases and limits. I’ve only got one nitpicks:

Haskell paradigms are inspired by mathematics, and I have great faith in mathematics. The concepts behind Haskell feel closer to discoveries rather than inventions. Imperative programming speaks in a language formed for the accidental nature of the machines we have. Functional programming is a language closer to mathematics, which I believe is closer to how the human mind works, and closer to what the problem at hand actually is.

Math is more than just algebra and analysis. Turing machines are part of the mathematical studies of formal languages and automata. And you can formalize imperative programming with temporal logic. y := 0; y := y + 1 is just y = 0 /\ (X y) = y + 1.

I think many of the more modern langauges do not even try to be general-purpose languages. The post mentions Julia, which expicitly targets scientific computing and does not promote itself as a general-purpose language. Rust also emphasizes its usefulness for specific application domains. Not to mention the whole backend/frontend split in languages for web applications.

Of course you can implement Quicksort in every language, but a real-world application domain has so much impact on the usefulness of any language that I find it hard to have something like a best general purpose language.

I’m generally skeptical of FP hype, but this was a good article. The author presented his case clearly and made sure to acknowledge his biases and limits. I’ve only got one nitpicks:

Math is more than just algebra and analysis. Turing machines are part of the mathematical studies of formal languages and automata. And you can formalize imperative programming with temporal logic.

`y := 0; y := y + 1`

is just`y = 0 /\ (X y) = y + 1`

.I think many of the more modern langauges do not even try to be general-purpose languages. The post mentions Julia, which expicitly targets scientific computing and does not promote itself as a general-purpose language. Rust also emphasizes its usefulness for specific application domains. Not to mention the whole backend/frontend split in languages for web applications.

Of course you can implement Quicksort in every language, but a real-world application domain has so much impact on the usefulness of any language that I find it hard to have something like a best general purpose language.