编程范式: 函数式、命令式、声明式、面向对象

函数式编程

命令式编程

命令式编程就是冯诺伊曼的指令序列

关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。

声明式编程

声明式编程 是以数据结构的形式来表达程序执行的逻辑。

告诉计算机应该做什么,但不指定具体要怎么做。

HTML、CSS、SQL

函数式编程

函数式编程是面向数学的抽象,将计算描述为一种表达式求值

函数式编程是一种编程范式,它将 电脑运算 视为 函数运算,并且 避免使用 程序状态 以及 易变对象。 ——维基百科

不同不体现在符号上,而体现在关系上。

函数式编程起源——λ演算

λ演算(读作lambda演算)由数学家阿隆佐·邱奇在20世纪30年代首次发表,它从数理逻辑(Mathematical logic)中发展而来,使用变量绑定(binding)和代换规则(substitution)来研究函数如何抽象化定义(define)、函数如何被应用(apply)以及递归(recursion)的形式系统。
视频讲解

函数形式

在这里插入图片描述
代换规则
在这里插入图片描述

左式 – 柯里化等于 --> 右式
在这里插入图片描述

对应js中写法
在这里插入图片描述

可以通过函数来定义数字
并在此基础上定义 运算法则
但一切都是基于函数的!
在这里插入图片描述

在这里插入图片描述

图灵机

图灵机 是建立在数据和指令之上的

冯诺依曼架构 是对图灵机的物理实现

编程发展 是在一步步限制图灵机的指令自由度,同时不减少其解决问题的能力
goto 被弃用 转而用结构化编程保障其能力
封装工具函数
面向对象 管理数据与函数
函数式编程 限制了图灵机破序的能力

函数式编程范式特点

参考文章 上
参考文章 下
在这里插入图片描述

  • 函数是 第一等公民
  • 函数是纯函数(相同的输入总会得到相同的输出,并且不会产生副作用)

通常需要封装以下函数以提高开发效率

  • 函数合成(compose)将不同函数拼接成新的函数
  • 函数柯里化(Currying)又称部分求值,通过闭包的方式提前存入一些函数参数值,返回新的函数以备后续调用
function sum(a, b) {
    return a + b
}
function sumCurry(x) {
    return function(y) {
        return sum(x, y)
    }
}
const sum25 = sumCurry(25)
sum25(2) // 27
  • 高阶函数
    1. 函数作为参数被传递(回调函数),将多个类似的函数中变化的部分抽离,从而达到封装的目的。
    2. 函数作为返回值输出,意味着运算过程延续到之后执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值