什么是编程范式
函数、闭包、范式
一、编程范式的发展
- 非结构化 60年代(195x) goto语句泛滥
- 结构化、函数式编程 70年代
- 面向对象 90年代
- 多范式融合 (21世纪20年代)
二、语言的主流范式
- C 结构化
- Java 面向对象
三、概念
- 编程范式
如何编写程序的方法论 - 结构化编程
把运算过程尽量写成一系列嵌套的函数调用
也称过程式编程,面向过程编程 - 函数
函数式编程中的函数不是结构化编程中的函数,而是数学中的函数,结构化编程中 的函数是一个过程(Procedure) - 普通程序
程序 = 数据结构 + 算法 - 函数式编程程序
程序 = 数据 + 函数 - 高阶函数
高阶函数,是指一种比较特殊的函数,它们可以接收函数作为输入,或者返回一个 函数作为输出 - 闭包
由函数及其相关的引用环境组合而成的实体,即闭包 = 函数 + 引用环境
闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私 有变量不受外界干扰。 - DDD
领域驱动设计, Domain-Driven Design - 函数式编程
即只关注做什么而不是怎么做
函数式编程不仅仅局限于声明式编程。
函数式编程最重要的特点是“函数第一位”,即函数可以出现在任何地方,比如可以把函数作为参数传递给另一个函数,不仅如此你还可以将函数作为返回值 - 声明式编程
如SQL编程
告诉计算机应该做什么,但不指定具体要怎么做
不需要创建变量用来存储数据
它不包含循环控制的代码如 for, while
五、面向对象建模四步
- 需求分析建模
- 面向对象分析(OOA)
- 面向对象设计(OOD)
- 面向对象编码(OOP)
六、命令式编程
又称指令式编程 ,与声明式对立
七、声明式编程-子范式
- 约束式
- 函数式
- 逻辑式
如Prolog声明关系并且对关系进行提问 - 领域专属语言
- 声明式领域专属语言(DSLs)包括
- 语法分析器yacc,
- 编译说明语言Make,
- 管理配置语言Puppet,
- 正则表达式和SQL的一些子集(例如Select queries等)
- 很多文本标记语言,如HTML、MXML、XAML和XSLT也是声明式的