编程范式: 函数式、命令式、声明式、面向对象
命令式编程
命令式编程就是冯诺伊曼的指令序列
关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。
声明式编程
声明式编程 是以数据结构的形式来表达程序执行的逻辑。
告诉计算机应该做什么,但不指定具体要怎么做。
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
- 高阶函数
- 函数作为参数被传递(回调函数),将多个类似的函数中变化的部分抽离,从而达到封装的目的。
- 函数作为返回值输出,意味着运算过程延续到之后执行
内容会不断更新,欢迎批评指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!