计算模型:源于对计算过程的不同认识;
1.基于不同计算模型一般分为://教科书的一般分类
- 命令式语言;
- 函数式语言;
- 逻辑式语言;
- 面向对象程序设计语言;
2.基于程序本质分类: //编程的经典法则:算法+数据结构=程序;
- 命令式: //基于数据结构
- 结构化编程(冯诺依曼:计算机系统以存储和处理为核心)【面向存储的编程】;
- 面向对象编程;
- 说明式: //基于算法
- 函数式;
- 其他;
命令式语言面临的问题:如何抽象数据存储;
结构化编程:通过运算去改变内存;
- 结构:
- 控制结构:顺序,分支,循环;
- 组织结构:表达式,语句行,语句块,过程,单元,包等;
- 数据结构(命令式语言所关注的存储):基本数据结构,复合数据结构;
- 问题:
- 数据具体含义与关系;
- 面向数据存储形式的算法,脱离使用环境,算法结构也缺乏通用性;
- 僵化的类型和逻辑影响业务逻辑表达;
面向对象编程:对象系统:数据/行为/关系
- 优化:
- 更加细化的可见性设定,更好的数据封装性及数据域管理;
- 使用继承解决通用性;
- 使用多态解决业务逻辑冲突;
- 对象是更高层次的数据抽象,但它仍是对以结构的认可而不是以对算法的认可为前提的;//所以仍然是在结构影响算法当中;
面向接口的编程方法:
- 接口:更高层次的抽象,只暴露数据体的逻辑行为能力,而不暴露这种能力的实现方法和基于的数据特性;
- 接口基于的原则并不是结构确定则算法确定,而是在共同的规约描述下的算法功能的确定;
3.多范型语言:具有交叉分类特性的语言;其中JS支持函数式,命令式和(基于原型)面向对象;