函数式编程似乎是计算机科学中的一种范式,它的呼声越来越高。
我想知道使用函数式编程方法而不是更传统的面向对象方法可以更好地解决哪种问题。
谢谢你。
函数式编程似乎是计算机科学中的一种范式,它的呼声越来越高。
我想知道使用函数式编程方法而不是更传统的面向对象方法可以更好地解决哪种问题。
谢谢你。
函数式编程最适合大多数类型的问题,包括您通常使用面向对象编程的任何问题,除了可能需要存储大量状态或其他副作用的问题。除此之外,FP 比 OOP 更优雅地处理复杂问题,因为其中很多来自数学背景(从 lambda 演算开始)。就抽象和组合而言,您拥有更大的灵活性。具有大量设计模式的面向对象程序可以使用更多功能结构进行重构,这将允许您在没有设计模式让您编写的样板结构的情况下做同样的事情。除了数学和解析之外,FP 还被广泛应用于人工智能(尤其是 Lisp)。
函数式编程非常适合创建可以并行执行的程序,因为它们不鼓励使用全局状态。
函数式语言在数学和统计学中被大量使用。
为了进一步了解并行执行点,函数式语言往往有利于图形建模,例如光线追踪。
我同意Galwegian -
“函数式语言在数学和统计学中被大量使用。”
然而,这些并不是唯一的用途。随着函数式编程语言变得越来越主流,您可能会开始寻找用这些语言编写的业务类/库/软件。
几乎任何有很多数学的东西。
例如,函数式语言 ML 非常适合实现编译器和其他操作树的应用程序。
如果您正在编写 C++ 模板,那么您就是在使用纯函数式语言。
XSLT 是一种函数式编程语言的示例,用于对表示为 XML 的数据或文档进行转换 —— 诚然,这是一种非常冗长且非常有限的语言。如果我没记错的话,XQuery 也是纯粹的函数式。诀窍在于,在没有任何全局状态概念的情况下,它们只能在主机程序上提供数据并使用它们的结果。这有助于保持 XSLT 程序(样式表)的纯粹性和可重用性,但是您需要添加某种(命令式)框架以将它们用作通用处理系统的一部分。
基本的电子表格可以看作是功能程序...... :)
数据结构。示例:将 Fibonacci Heap(通常用作优先级队列)的命令式实现与函数式实现进行比较。功能代码通常少于 100 行代码,而命令式实现可以是更多代码行。