猿问

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

不理解函数式编程。求解。
更新:
个人理解:“面向过程”和“面向对象”的区别是“封装”。“函数式”和“面向对象”的区别是“不使用外部状态”。这三种编程思想真是云里雾里。
SMILET
浏览 278回答 2
2回答

慕斯709654

这个是我的理解:coffee#函数式trimLeft=(text)->switchwhentext.lengthis0thentextwhentext[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寄存器内存上不断进行数据更新的,跟函数式完全相反单纯这一点来说,差别的非常大的.想想一下用你现在的语言,变量不能修改你怎么写程序!还有一点是函数式编程考虑的是这个问题的解决方案可以被怎么表达?存在多少种情况?每种怎么处理?而过程式的代码,需要找到一个能把事情做完的执行顺序,然后把这个执行顺序用代码表示出来简单的程序没什么,但是复杂的过程用函数式来考虑,也许可以大幅度简化问题
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答