功能编程适合哪种问题?

时间:2008-10-14 09:40:03

标签: functional-programming

功能编程似乎是计算机科学中的一种范式,它具有越来越多的回声。

我想知道哪种问题可以通过函数式编程方法更好地解决,而不是采用更传统的面向对象方法。

谢谢。

12 个答案:

答案 0 :(得分:7)

答案 1 :(得分:7)

函数式编程最适合于大多数类型的问题,包括通常使用面向对象编程的任何问题,除了可能需要存储大量状态或其他副作用的问题。除此之外,FP比OOP更优雅地处理复杂问题,因为其中很多都来自数学背景(从lambda演算开始)。就抽象和构图而言,你有更多的灵活性。具有大量设计模式的面向对象程序可以使用更多功能构造进行重构,这将允许您在没有设计模式使您编写的样板结构的情况下执行相同的操作。除了数学和解析,FP还被广泛用于人工智能(特别是Lisp)。

答案 2 :(得分:6)

功能编程非常适合创建可以进行并行执行的程序,因为它们不鼓励使用全局状态。

答案 3 :(得分:4)

在数学和统计学中使用了很多函数式语言。

答案 4 :(得分:3)

为了进一步了解并行执行点,函数式语言往往适用于图形建模,例如光线跟踪。

答案 5 :(得分:2)

我同意Galwegian -

“在数学和统计学中使用了很多功能语言。”

但是,这些并不是唯一的用途。随着函数式编程语言变得越来越主流,您可能会开始寻找用这些语言编写的业务类/库/软件。

答案 6 :(得分:2)

几乎所有有很多数学的东西。

答案 7 :(得分:2)

例如,函数式语言ML非常适合实现编译器和其他操作树的应用程序。

答案 8 :(得分:1)

如果您正在编写C ++模板,那么您将使用纯函数式语言。

答案 9 :(得分:1)

XSLT是一个函数式编程语言的例子,用于对表示为XML的数据或文档进行转换 - 这无疑是一个非常冗长且非常有限的语言。如果我没记错的话,XQuery也是纯粹的功能。技巧是没有任何全局状态的概念,他们在主机程序上提供数据并消耗他们的结果。这有助于使XSLT程序(样式表)保持纯粹和可重用,但您需要添加某种(命令性)框架,以将它们用作通用处理系统的一部分。

答案 10 :(得分:1)

基本电子表格可视为功能程序......:)

答案 11 :(得分:1)

数据结构。示例:将Fibonacci Heap(通常用作优先级队列)的命令式实现与功能实现进行比较。通常,功能代码将少于100行代码,而命令式实现可以是更多行代码。