函数式编程有什么弊端?

 我来答
Panda旅行
2018-03-21 · TA获得超过107个赞
知道答主
回答量:180
采纳率:0%
帮助的人:5.8万
展开全部

我接触过Haskell、Clojure和其他语言,也做过PL的“研究”。可以浅谈一下:

  • 函数的复杂度

分析Haskell程序的时间和空间复杂度是很麻烦的。首先编写Haskell程序往往是很多“重用”内置/自定义数据结构,以实现数据持久性(或“不变性”)可以增加空间和时间消耗(实现策略有很多,但采取临时解决方案不影响永久治愈),优点是控制副作用。然后,函数组合和高阶函数可能代价昂贵,可以生成额外的中间数据。其优点是抽象能力强,模块化是有益的。最后,惰性评价使过程评价模型复杂,滥用可导致效率的降低。功能语言的分析工具也较少。

简而言之,就是消除中间数据结构+,降低函数成本。编写高效的程序需要经验,对底层实现有一点了解(标准库+语言核心),c++没有,但是c++对程序有更好的控制。

  • 模块化和并行性

模块应该是基本软件元素(操作、类型、变量等)的组合,用于重用、扩展服务。“函数式编程的主要价值在于极大地提高程序的模块化程度,”Huges在函数式编程(函数式编程经典)的解释中说。高阶函数、递归数据类型和延迟评价是“新粘合剂”。

但是这些提供了细粒度的模块化,程序员需要更多的“设计”。“使用函数式编程的程序员必须努力确保程序使用更小、更简单、更通用的模块,”Huges说。这是一个挑战。

而且,模块之间的交互也是一个问题。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式