幽默:函数式编程只是少数人的消遣? - Mike Hadlow


不同的编程范例需要不同水平的学习投入。随着投资水平的提高,您会迅速失去人才。这就是为什么函数式编程尽管在许多方面都有所改进,但将永远是少数人的消遣。

这就是为什么Haskell,F#等永远不会成为主流语言的原因。也是为什么Python,Javascript等如此成功的原因,因为它们提供了简单的命令式入口。
也许更简单的表述是,您需要他们学习的每个额外概念都会使您损失一半的人才。因此,静态类型的语言不如动态类型的语言流行。一旦您了解了Applicative Functors,您已经损失了99%:D

 众说纷纭:
不同意你的排列顺序,我发现(并且仍然发现)OOP比FP难做得多。我发现使用FP可以更自然地进行时间建模。
回复:我并不是说这些语言哪些“做得更好(或更难)”。我同意你的观点,我认为FP比OO容易做得好,而OO比Imperative容易做得好。我强调的是,每当您要求他们学习额外的概念时,您就会失去一定数量的人。

我完全不同意FP的投资要求。我的团队使用Clojure,我们会定期聘请缺乏编程经验的大学合作学生。他们平均在几周内就可以提高工作效率。
回复:我的经验是,困难来自于已经学习命令式/ OO风格的人的现有习惯。一旦有人开发出解决问题的模式,他们就很难放弃这些问题并学习新的问题。

我不同意。如果您是精通C#的开发人员,那么无论如何您已经在使用许多FP范例,因此,如果要切换到F#,更改思维方式和学习新语法的时间应该不超过1-2周。基于我自己的经验。
回复:因此,“如果您是精通C#的开发人员,那么您已经在使用许多FP范例”。当然,这证明了我的意思,只有在掌握了大部分方法之后,您才打算使用FP语言。对于“熟练的C#开发人员”来说,这是一个很高的标准。

我在两个层面上不同意:(1)函数式编程已经有些主流了,但还不是纯粹而一致的形式。例如,FRP(例如Redux)越来越流行,主流语言已经转向功能范例(甚至Java也支持lamda函数)。(2)在语言学中,很久以前就一直在争论哪种语言最容易作为第二语言学习。事实证明,它更多地取决于您的母语,而不是第二语言的属性。例如,芬兰语对大多数人来说很难,但对爱沙尼亚人来说却很容易。