函数式编程到底指什么

Posted 硅谷见闻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式编程到底指什么相关的知识,希望对你有一定的参考价值。

今日荐文

来自英文世界的新鲜见识 


函数是一等公民,调用没有副作用,不改变状态……有太多文章试图从概念上解释函数式编程和指令式编程的区别。业内人士都不一定get到,更别提吃瓜群众。


本文从做菜入手,对比指令式菜谱和函数式菜谱,形象地说明了二者的区别。


通常菜谱都是逐步描述操作,找把什么倒入锅里,多久后再加什么……总共多少步骤,云云。跟着一板一眼地操作就行。问题在于:

  • 如果多了人手帮忙,哪些步骤可以并行呢?

  • 第三步的材料还没备好,能不能先做第四步呢?

  • 第六步时不小心搞砸了,那得从第几步开始重新来过呢?

  • 正在第八步,却突然发现第三步忘记做了,怎么办,可以补上吗?


这些问题,如果不是个大厨,对先后依赖关系了然于胸,恐怕得花不少心思才能回答。写代码也一样,能不能并发执行,能不能调整先后顺序,某步骤失败了是否可以重试,都不是轻易能回答的问题。原因在于这种指令式的方式是控制流导向的思维方式,而函数式编程用的是数据流导向的思维方式。


下面是“食材流”导向的函数式菜谱。




那么,对于问题“如果expresso没准备好,有别的步骤可以先开展,避免干等着呢?”就很容易得出答案了,标红的部分都是依赖expresso这个食材的“数据流”,都得先搁置着,其他步骤就都可以先进行。


对着这样一个表格简直一目了然,而如果是传统的操作步骤型食谱,识别出各个步骤使用的食材就已经不容易了,再要跟踪加工到一半的半成品都包含了哪些食材,就难上加难了。


思维方式的改变引发代码(或菜谱等别的事物)结构上的改变,进而改变表现出来的行为。

▼原味英文

以上是关于函数式编程到底指什么的主要内容,如果未能解决你的问题,请参考以下文章

函数式编程的核心思想

当我们在谈函数式编程(Functional Programming,FP),到底在谈论什么?

函数式响应式编程-FRP简介

什么是函数式编程?

函数式编程的一些心得与体会

什么是函数式编程