在哪些情况下,我应该选择使用函数式编程语言,而不是更冗长的面向对象语言,如C++、C#或Java?
我明白什么是函数式编程,我不太明白的是,对于什么类型的问题,函数式编程是完美的解决方案吗?
发布于 2008-12-29 10:20:20
在我看来,函数式语言主要用于两件事:游戏人工智能和数学计算。它在游戏人工智能中很好用,因为它有很好的列表操作(至少在Lisp和Scheme中是这样),而且由于它的语法,它还适用于数学计算。Scheme、Lisp和Haskell都有一种语法,使得数学计算易于阅读。我要补充的最后一点是,函数式语言是非常有趣的语言。我的计划课程是我玩得最开心的课程之一。
发布于 2008-12-29 20:17:54
我自己对此做了一些研究,我想我可能会将并发性添加到使用函数式语言的原因列表中。看,在不久的将来的某个时候,使用相同的cpu技术将无法提高处理器的速度。架构的物理特性不允许这样做。
这就是并发处理的用武之地。
不幸的是,由于数据之间的相互依赖性,大多数OOP语言不能同时利用多个处理器。
在纯函数式编程语言中,计算机可以同时运行两个(或更多)函数,因为这些函数不会改变外部状态信息。
这是一个关于函数式编程的excellent article,你可能会喜欢。
发布于 2008-12-29 14:02:51
我的一位朋友引用他的一位大学教授的话说:
绘制一个网格,顶部是数据类型,左侧是对这些数据类型的操作。如果你垂直切分网格,你是在做OO;如果你水平切开网格,你是在做FP。
我的回答是,FP是一种完全可行的编程方法,具有与OO一样广泛的应用范围。与任何编程语言选择讨论一样,我认为更重要的问题是:
:你是否有时间去学习一种新的符号和一种新的
至于第一个问题,如果你这样做主要是为了学习价值,我建议你看看Haskell,因为有广泛的支持材料(书籍,文章,活跃的社区等)。
关于第二个问题,Haskell有一系列不错的库(虽然有些比其他的更成熟),但是Scala (一种运行在JVM上的混合面向对象-函数式语言)的优点是,您可以更逐步地过渡到函数式风格,并且您可以使用所有Java可访问的库。
https://stackoverflow.com/questions/397425
复制相似问题