为了账号安全,请及时绑定邮箱和手机立即绑定

面向过程编程和函数式编程有什么区别?

面向过程编程和函数式编程有什么区别?

SMILET 2019-04-19 16:11:23
不理解函数式编程。求解。更新:个人理解:“面向过程”和“面向对象”的区别是“封装”。“函数式”和“面向对象”的区别是“不使用外部状态”。这三种编程思想真是云里雾里。
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

这个是我的理解:
coffee#函数式
trimLeft=(text)->
switch
whentext.lengthis0thentext
whentext[0]is''thentrimLefttext[1..]
elsetext
#过程式
trimLeft2=(text)->
while(text[0]?andtext[0]is'')
text=text[1..]
returntext
函数式的写法,我改成了switch,因为if写起来有点难看,
而过程式的写法,简直是短小精悍..而且对JavaScript来说性能也更好
注意一下代码执行的顺序,
函数式的写法,执行过程是通过函数调用参数传递一层层展开的,text以参数的形式复制跟传递
过程式的写法,执行过程是在while里一遍一遍进行,text被一遍遍赋值更新
如果你还注意到函数式写法数据不可变的话,就更能了解怎么回事了
数据可变是很多bug的根源,也是程序并行执行的巨大障碍,函数式编程认为数据是不可以被修改的,
另一方面硬件来说,实际上就是CPU寄存器内存上不断进行数据更新的,跟函数式完全相反
单纯这一点来说,差别的非常大的.想想一下用你现在的语言,变量不能修改你怎么写程序!
还有一点是函数式编程考虑的是这个问题的解决方案可以被怎么表达?存在多少种情况?每种怎么处理?
而过程式的代码,需要找到一个能把事情做完的执行顺序,然后把这个执行顺序用代码表示出来
简单的程序没什么,但是复杂的过程用函数式来考虑,也许可以大幅度简化问题
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 277 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信