我在这里看到了很多关于函数式语言的讨论。为什么你要用一种而不是“传统”的语言呢?他们做得更好的是什么?他们在什么方面做得更差?理想的函数式编程应用程序是什么?
发布于 2008-08-31 00:38:05
函数式语言使用与命令式和面向对象语言不同的范例。它们使用无副作用的函数作为语言中的基本构建块。这使得很多事情变得更加困难(或者在大多数情况下与人们所习惯的不同)。
函数式编程的最大优点之一是,无副作用函数的执行顺序并不重要。例如,在Erlang中,这用于以一种非常透明的方式启用并发性。因为函数式语言中的函数行为与数学函数非常相似,所以很容易将它们转换成函数式语言。在某些情况下,这可以使代码更具可读性。
传统上,函数式编程的一大缺点也是缺乏副作用。没有IO很难写出有用的软件,但IO很难在没有函数副作用的情况下实现。因此,大多数人从函数式编程中获得的好处永远不会超过从单个输入计算单个输出。在像F#或Scala这样的现代混合范式语言中,这就更容易了。
许多现代语言都包含来自函数式编程语言的元素。Python3.0有很多函数式编程特性,你也可以用C#进行函数式编程。我认为函数式编程流行的原因主要有两个:并发性在普通编程中正成为一个真正的问题,因为我们得到了越来越多的多处理器计算机;以及语言变得越来越容易使用。
发布于 2009-01-04 21:10:58
我不认为函数式编程“流行”有任何问题,因为它已经使用了大约40年(作为一种编程风格)。每当OO程序员编写支持不可变对象的干净代码时,该代码就借用了函数式概念。
然而,强制使用函数式风格的语言现在得到了大量的虚拟墨迹,这些语言在未来是否会成为主导还是一个悬而未决的问题。我自己的猜测是,混合的、多范式的语言,如Scala或OCaml,很可能会以与纯面向对象语言(Smalltalk、Beta等)相同的方式主导“纯粹的”函数式语言。影响了主流编程,但并没有成为最广泛使用的符号。
最后,我忍不住要指出,你的评论re FP与我几年前从过程程序员那里听到的评论高度相似:
正如图形用户界面和“作为业务模型的代码”是帮助OO得到更广泛认可的概念一样,我相信增加对不变性和更简单(大规模)并行的使用将帮助更多的程序员看到函数式方法提供的好处。但是,正如我们在the past 50 or so years中学到的那样,这构成了整个数字计算机编程的历史,我认为我们仍然有很多东西需要学习。二十年后,程序员将惊讶地回顾我们目前使用的工具的原始性质,包括现在流行的OO和FP语言。
发布于 2009-01-04 17:16:31
对我来说,主要的加分是它固有的并行性,特别是当我们现在从更多的MHz转向越来越多的内核时。
我认为它不会成为下一个编程范例并完全取代OO类型方法,但我确实认为我们将需要用函数式语言编写一些代码,或者我们的通用语言将成长为包含更多的函数式结构。
https://stackoverflow.com/questions/36504
复制相似问题