编程范式

编程范式

从多种函数式编程资料中, 学习梳理如下:

如何编程(抽象)

编程范式这个概念, 关注的是用怎样的抽象思维方式去构建程序.

简单的说, 一种编程范式就是一种程序设计法, 一类典型的编程风格.

我们的编程活动总是在应用某一种或几种范式进行. 它是程序员对程序执行的看法和思维方式.

  • 过程式编程中, 程序被看作是解决问题所需要的步骤
  • 面向对象编程中, 程序被看作是一系列相互作用的对象
  • 函数式编程中, 程序被看作是一个无状态的函数计算的序列

过程式编程和面向对象编程都属于命令式编程范式, 二者之间虽然有很大的不同,但函数式编程和二者的差别更大.

从这些不同的思维方式出发, 会让构建的程序在以下几个方面产生重大的差异.

状态

函数式编程和命令式编程最大的特征区别是状态.

命令式编程通过在不同命令空间中的变量标记计算状态, 通过每一条语句改变状态, 推动计算从初始状态一步步向期望的最终结果不断靠近.

函数式编程则使用"对函数求值"这一更简单的概念代替改变变量值得"状态". 这使我们站在更高的抽象层次去考虑问题.

重用

OOP会对具体的问题建立专门的数据结构, 相关的专门操作以"方法"的形式依附在数据结构上. 重用的单元是类以及类之间沟通用的消息.

函数式编程提倡在有限的几种关键数据结构(list set map)上运用对这些结构高度优化的操作, 以此构成基本的运作机构. 开发者再根据具体用途, 插入自己的数据结构和高阶函数去调整机构的运转方式.

比起一味地创造新的结构, 把复用单元控制在函数级别上, 更有利于达到细粒度的, 基础层面的重用.

对复杂度控制

“面向对象通过封装不确定因素使代码能被人理解, 函数式编程通过尽量减少不确定因素使代码能被人理解.” ——Michaer Feathers

实现

函数式编程借助筛选(filter)、映射(map)、化约(reduce)这样高层抽象, 使得构建程序的方式从描述步骤, 变为描述函数求值的数学模型.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值