我在这里看到很多关于函数式语言的讨论。为什么你要使用传统语言而不是传统语言呢?他们在哪些方面做得更好?他们更不擅长什么?理想的函数式编程应用程序是什么?


当前回答

我不认为大多数现实的人会认为函数式编程会流行起来(成为像OO那样的主要范式)。毕竟,大多数业务问题都不是漂亮的数学问题,而是用来移动数据并以各种方式显示它们的繁琐的命令式规则,这意味着它不适合纯函数式编程范式(monad的学习曲线远远超过OO)。

对了,函数式编程让编程变得有趣。它会让你欣赏宇宙中潜在数学的简洁表达所蕴含的永恒之美。人们说学习函数式编程会让你成为更好的程序员。当然,这是非常主观的。我个人认为这也不完全正确。

它让你成为一个更有感情的人。

其他回答

我认为你问题的答案更多地在于“工作的正确工具”这句话,而不是最热门的东西。总会有热门的新技术,也总会有人扑上去。

函数式语言已经出现了一段时间,只是现在它们得到了更多的报道。

大学里并没有真正教授(或者现在有吗?)

我不知道现在的情况,但在90年代中期,我在计算机科学课程中学习了米兰达语言和Lisp语言。尽管从那以后没有使用纯函数语言,但它影响了我解决问题的方式。

大多数应用程序都足够简单,可以用正常的面向对象方法解决

在90年代中期的CS课程中,面向对象(使用Eiffel教授)的教学与函数式编程相当。两者在当时都是非主流的。面向对象现在可能是“正常”的,但过去并非如此。

我很有兴趣看看f#是否是将FP推向主流的东西。

我认为其中一个原因是有些人认为一门语言是否被接受最重要的部分是它有多好。不幸的是,事情很少这么简单。例如,我认为Python被接受的最大因素不是语言本身(尽管这非常重要)。Python如此受欢迎的最大原因是它庞大的标准库和更大的第三方库社区。

像Clojure或f#这样的语言可能是这个规则的例外,因为它们是构建在JVM/CLR之上的。因此,我没有答案。

对我来说,主要的优点是它固有的并行性,特别是当我们现在从更多的MHz转向越来越多的内核时。

我不认为它会成为下一个编程范式并完全取代OO类型方法,但我确实认为我们将会达到这样的境地:要么我们需要用函数式语言编写一些代码,要么我们的通用语言将会发展到包含更多的函数式结构。

Slava Akhmechet写了一篇很棒的文章,叫做《函数式编程》(顺便说一下,正是这篇文章让我开始接触FP)。在FP带来的好处中,他非常规地强调了以下几点(我认为这有助于软件工程师的吸引力):

单元测试 调试 并发性 热码部署 机器辅助证明与优化

然后继续讨论FP中更多传统讨论的方面的优点,如高阶函数、咖喱、惰性求值、优化、抽象控制结构(尽管没有讨论单子)、无限数据结构、严格性、延续、模式匹配、闭包等。

强烈推荐!