函数式编程到底指什么
Posted 硅谷见闻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式编程到底指什么相关的知识,希望对你有一定的参考价值。
今日荐文
来自英文世界的新鲜见识
函数是一等公民,调用没有副作用,不改变状态……有太多文章试图从概念上解释函数式编程和指令式编程的区别。业内人士都不一定get到,更别提吃瓜群众。
本文从做菜入手,对比指令式菜谱和函数式菜谱,形象地说明了二者的区别。
通常菜谱都是逐步描述操作,找把什么倒入锅里,多久后再加什么……总共多少步骤,云云。跟着一板一眼地操作就行。问题在于:
如果多了人手帮忙,哪些步骤可以并行呢?
第三步的材料还没备好,能不能先做第四步呢?
第六步时不小心搞砸了,那得从第几步开始重新来过呢?
正在第八步,却突然发现第三步忘记做了,怎么办,可以补上吗?
这些问题,如果不是个大厨,对先后依赖关系了然于胸,恐怕得花不少心思才能回答。写代码也一样,能不能并发执行,能不能调整先后顺序,某步骤失败了是否可以重试,都不是轻易能回答的问题。原因在于这种指令式的方式是控制流导向的思维方式,而函数式编程用的是数据流导向的思维方式。
下面是“食材流”导向的函数式菜谱。
那么,对于问题“如果expresso没准备好,有别的步骤可以先开展,避免干等着呢?”就很容易得出答案了,标红的部分都是依赖expresso这个食材的“数据流”,都得先搁置着,其他步骤就都可以先进行。
对着这样一个表格简直一目了然,而如果是传统的操作步骤型食谱,识别出各个步骤使用的食材就已经不容易了,再要跟踪加工到一半的半成品都包含了哪些食材,就难上加难了。
思维方式的改变引发代码(或菜谱等别的事物)结构上的改变,进而改变表现出来的行为。
▼原味英文
以上是关于函数式编程到底指什么的主要内容,如果未能解决你的问题,请参考以下文章