编程范式

编程语言 = 范式(模型) + 语法与程序库(接口) + 运行时(实现)

编程范式也就说开发者们看待编程的方式,以不同的视角看待编程,某些方式相比某些方式自然就会有优点,也自然会有缺点,这些在现代编程语言的多范式融合中得到了很好的中和。

如何降低软件开发的复杂度:

202185213811

非结构化 -> 结构化 -> 面向对象 -> 多范式

另一条线:函数式(多核、垃圾回收)

总体来看,共有3种方式:1. 命令式编程 2. 声明式编程 3. 逻辑式编程

声明式编程跟逻辑式编程都将大量工作交给运行时,让运行时处理底层细节,让开发者更专注高层的业务逻辑抽象。

关于软件开发

软件,是由顺序结构,分支结构,循环结构和间接转移几种行为组成,无可增加,也缺一不可

结构化编程(命令式)

程序 = 算法 + 数据结构

主要表现:自顶向下/模块化/语句结构化(顺序、选择、循环)

结构化编程是对程序的控制权的直接转移进行了限制和规范

可推导性:通过数学化的证明法来证明程序是正确的(理想)

科学证明法:测试只能证明程序存在错误,而不能证明其正确

可将模块递归降解为可推导的单元

结构化编程自顶向上的依赖性较强,无法很好地隔离变化

面向对象编程(命令式)

程序 = 数据 + 行为

面向对象编程是对程序的控制权的间接转移进行了限制和规范

函数式编程(声明式)

程序 = 数据(list) + 函数(filter, map...)

函数式编程是对赋值操作进行限制和规范

函数式编程中的变量是不可变的

逻辑式编程

抽象的能力就更强,计算细节干脆不见了

通过描述逻辑来求解问题

编程思想

面向切面编程AOP

批注 2020-05-13 154203

面向元数据编程MOP

利用元数据(metadata)来定义和描述程序的数据结构、算法、逻辑和行为,以便程序在运行时能够根据元数据自动地生成代码或者运行,实现动态扩展和灵活适应需求变化的能力

面向契约编程COP

在开发过程中强调接口契约的重要性。契约指的是类、方法、接口等代码元素之间的约束条件,这些约束条件描述了这些元素在应用程序中的预期行为和使用方式,通过定义契约规范来描述代码元素的预期行为和使用方式来减少定义与使用的不一致性,降低出错的可能

模式驱动编程

将应用程序的开发过程分解成一些小的可复用的模式,通过接口、配置、注解、函数、模块等方式进行驱动程序的行为