编程范式
编程语言
机器语言
第一代计算机使用的是机器语言,这种语言是二进制的,非常难以阅读和编写
汇编语言
一种更高级别的机器语言,使用助记符来代替二进制代码,更容易编写和阅读
中级语言
介于机器语言和高级语言之间的一种语言。通常是一种可移植的高级语言,但在执行时被转换成机器语言。 包括C语言和C++语言
C语言:过程式语言代表
- 可对位、字节、地址直接操作
- 代码和数据分离倡导结构化编程
- 引入标注输入输出库
- 功能齐全:数据类型和控制逻辑多样化
- 可移植能力强
C++:面对对象语言代表
- C with Classes
- 基本语法与C语言相同,但增加了类、继承、多态等面向对象的特点
- 继承
- 权限控制
- public、protected和private关键字用来控制成员变量和成员函数的访问权限
- 虚函数
- 虚函数可以实现多态,即在运行时根据对象的实际类型来调用相应的函数
- 多态
Lisp:函数式语言代表
- 与机器无关
- 列表:代码即数据
- 闭包
高级语言
使用自然语言的形式来描述问题,通常具有较高的可读性和可维护性,更容易地编写和修改代码 例如Java、Python和JavaScript
JavaScript:基于原型和头等函数的多范式语言
- 过程式:可在Web浏览器中嵌入HTML页面
- 面向对象:支持类、对象、继承、封装等面向对象的特性,JS中的对象是动态的,可以随时添加或删除属性和方法
- 函数式:它的函数可赋值给其他变量,可传参给其他函数,可作为返回值给其他函数
- 响应式:可通过DOM操作实现页面元素的动态更新,与用户的交互效果等
编程范式
程序语言特性
- 是否允许副作用
- 操作的执行顺序
- 代码组织
- 状态管理
- 语法和词法
命令式
命令式编程是一种以计算机执行的命令为中心的编程范式
面向过程
面向过程是一种以过程为中心的编程方式
- 将问题分解为一系列步骤,通过函数的调用来实现过程的功能
- 面向过程的代码通常是一系列的命令,描述了计算机执行的具体步骤
面向对象
面型对象是一种以对象为中心的编程方式
- 将函数和数据封装在一起,通过对象的交互来实现程序的功能
- 面向对象的代码通常是一系列的对象,描述了程序中的实体和它们之间的关系
优点:
- 可读性好:数据和函数封装在一起
- 可维护性好:代码的耦合度低,修改代码时只需要修改对象的内部实现,不会影响其他部分的代码
- 可扩展性好:对象之间通过接口进行交互,易于对程序进行扩展
声明式
声明式编程是一种以描述问题为中心的编程范式
函数式
函数式编程是一种以函数为中心的编程方式
- 将计算视为函数的应用,通过函数的组合来实现程序的功能
- 函数式的代码通常是一系列的函数调用,描述了计算机的过程
响应式
响应式编程是一种以数据流为中心的编程方式
- 将函数和数据封装在一起,通过数据的变化来触发函数的执行,实现程序的功能
- 响应式的代码通常是一系列的数据流,描述了数据的变化和处理
结构化编程
是一种以结构为中心的编程范式,主要关注程序的可读性、可维护性、和可扩展性,通过一系列的结构化的控制流程来组织程序的逻辑 主要特点:
- 顺序结构:按顺序执行,从上到下依次执行每一条语句
- 选择结构:根据条件选择执行不同的语句,包括if、switch语句
- 循环结构:通过循环执行一组语句 优点:
- 代码清晰
- 可维护性高
- 可扩展性强