The author says that when they imagine what they want to tell the computer, they imagine an imperative sequence of commands and side-effects. Lo and behold, an imperative language is a closer match to what they are thinking than a functional language.<p>No. Shit. Sherlock.<p>I’d say the same thing about human languages. Can you imagine me criticizing Japanese because when I try to translate the English in my head to Japanese on a word-for-word basis, it’s a lot of hard work and the result is terrible?<p>The point of learning a different language is not to learn how to translate what is in your head into whatever the language demands, it is to <i>change what is in your head</i>. Alan Perlis put it best:<p><pre><code>  &gt; A language that doesn&#x27;t affect the way you think about programming, is not
  &gt; worth knowing.
</code></pre>
What I would say, is that if you know language X and want to compare it to language Y, you need to keep working at Y until it affects the way you think about programming. If it doesn’t, you can then say that it failed to improve you as a programmer. If it does, you can then give a thorough review of how your new perspective has improved you, and whether it is worth the effort.<p>I’m not saying FP is better or worse, but I am saying that “It’s terrible for writing the imperative programs in my head” is not a good argument.