eri*_*oco 8 procedural-programming functional-programming stateful mutable stateless
我想知道无状态编程的好处,并找到了一个分享我的问题的人: 无状态编程的优点?
当我读完答案时,它让我对这个相反的问题感到好奇.有状态编程有哪些优点?似乎最近有很多关注无状态代码,但我对趋势很谨慎.
似乎有状态(即命令式)编程可能比无状态(即功能)编程更适合某些场景,并且我希望能够更好地识别哪些问题可以通过有状态编程来解决.
与不可变的无状态编程模型相比,基于可变共享状态的编程模型存在无可争议的优点,只有少数情况.可变性可带来巨大优势的一个领域是允许算法就地工作.haskell wiki有一个关于实现快速排序的很好的例子:http://www.haskell.org/haskellwiki/Introduction#When_C_is_better
总而言之,当您不允许修改列表内存时,您需要创建它的排序副本.几乎任何修改某些数据结构的算法都是如此,例如AVL树.
通常,函数式编程语言往往比命令式语言更加占用内存.内存现在很便宜,但带宽是至关重要的,内存速度并没有与我们在CPU功率上看到的增长成正比.但必须注意的是,Haskell的执行模型允许编译器执行一些非常好的优化,也就内存使用和访问模式而言.在某种程度上,这可以弥补理论上的缺点.
归档时间: |
|
查看次数: |
2141 次 |
最近记录: |