函数式编程/命令式编程
Posted 暴躁前端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式编程/命令式编程相关的知识,希望对你有一定的参考价值。
简介
当我们看一些技术博客或者论坛的时候经常会看到函数式编程,那么什么是函数式编程呢?除了函数编程还有什么编程方法呢?函数编程又有什么好处呢?接下来我将利用javascript代码片段进行演示说明。
命令式编程
在函数式编程之前先来了解一下什么是命令式编程。命令式编程关心解决问题的步骤。
假如小明来到某公司面试,技术官给你提出了如下要求(当然正儿八经的公司不会出这种一加一的问题,这里只是假设):
【20,30,40,22,51,32,65,98】
1.从数组中筛选大于50的元素
2.从筛选出的元素中每一个都乘2
3.然后再进行元素相加
考虑过后小明给出了如下解答
小明给出的答案就是命令式编程——你要做什么事情,你得把达到目的的步骤详细的描述出来,然后交给机器去运行。这也正是命令式编程的理论模型——图灵机的特点。一条写满数据的纸带,一条根据纸带内容运动的机器,机器每动一步都需要纸带上写着如何达到。
函数式编程
函数式编程关心数据的映射。这里的映射就是数学上「函数」的概念——一种东西和另一种东西之间的对应关系。
如果进行函数式编程上面的要求就会一步到位,不用啰里啰唆的写一堆可读性较差的代码
(这里用到了三个JavaScript中的高阶函数,如果不明白的小伙伴可要抓紧去学习一下了,在以后的工作中用到的还是比较频繁的)怎么样?有没有瞬间感觉神清气爽。
首先,最直观的角度来说,函数式风格的代码可以写得很精简,大大减少了键盘的损耗
其次,函数式的代码是“对映射的描述”,它不仅可以描述二叉树这样的数据结构之间的对应关系,任何能在计算机中体现的东西之间的对应关系都可以描述——比如函数和函数之间的映射(比如 functor);比如外部操作到 GUI 之间的映射(就是现在前端热炒的所谓 FRP)。它的抽象程度可以很高,这就意味着函数式的代码可以更方便的复用。
以上是关于函数式编程/命令式编程的主要内容,如果未能解决你的问题,请参考以下文章