函数式编程似乎是计算机科学中越来越受到关注的范式。
我想知道在哪些问题上使用函数式编程方法比传统的面向对象方法更加有效。
谢谢。
函数式编程似乎是计算机科学中越来越受到关注的范式。
我想知道在哪些问题上使用函数式编程方法比传统的面向对象方法更加有效。
谢谢。
函数式编程最适合大多数问题,包括一般情况下使用面向对象编程的所有内容,除了可能需要存储大量状态或其他副作用的问题。除此之外,FP比OOP更优美地处理复杂问题,因为它有很多数学背景(从lambda演算开始)。在抽象和组合方面,您具有更高的灵活性。通过使用更多的功能构造来重构具有许多设计模式的面向对象程序,将使您能够在不编写设计模式所需的样板结构的情况下执行相同的操作。除了数学和解析之外,FP也广泛应用于人工智能(特别是Lisp)。
函数式编程非常适合创建可以进行并行执行的程序,因为它们不鼓励使用全局状态。
函数式编程语言在数学和统计学中被广泛使用。
进一步讲述并行执行的观点,函数式语言往往适用于图形建模,如光线追踪。
我同意Galwegian的观点 -
"函数式语言在数学和统计学中被广泛使用。"
然而,这并不是唯一的用途。随着函数式编程语言变得越来越主流,你可能会开始发现用这些语言编写的商业课程/库/软件。
如果你正在编写C++模板,那么你正在使用一种纯函数式语言。
XSLT 是一种函数式编程语言的例子,用于对表示为 XML 的数据或文档进行转换,尽管它非常冗长且受限。如果我没记错的话,XQuery 也是纯函数式的。关键在于它们没有任何全局状态的概念,它们依赖于宿主程序提供数据并消耗它们的结果。这有助于保持 XSLT 程序(样式表)纯净和可重用,但您需要添加某种(命令式)框架来将其用作通用处理系统的一部分。