数据库技术的两个方面
作为存储管理工具
副作用
我们什么时候会使用赋值语句呢?按使用目的,分为下面三类:
- 标记数据流(包括复用中间结果)
- 节省内存
- 广播式消息传递(全局变量)
标记数据流就是描述表达式树,用滚动数组节省内存,用全局变量在任意过程间(或未来的自身)传值。
持久数据结构
对计算来说,数据库技术支撑起一个巨大的全局变量。
作为查询语言
是什么与怎么做
规定所求对象的逻辑语言常常并不蕴含构造该对象的方法。几乎所有数学题都是例子。
过程式语言描述计算过程(纯粹的怎么做),判断一个计算过程是否对任意可能的输入产生所期望的值是件难事。
函数式语言用表达式描述函数,表达式的求值有简单通用的方法,所以可以认为既是对函数的描述,又是对求值过程的表述(是什么,同时怎么做)。
逻辑式语言描述约束。例如,方程、不等式组。在离散意义上也可以看成是对关系(有序对的集合)的描述(纯粹的是什么)。逻辑语言不一定有简单好用的求值器(通用高效的求值方法)。
关系与函数
关系和函数有何不同呢?关系是可以反向运行的函数。例如,R = U // I,给定任意两个就可以查询到第三个,给定任意一个就可以查询另外两个的新关系。
理解和展望
存储管理永远都不是计算的一部分,就像擦黑板不是数学家思考的一部分一样。存储管理能为计算营造一种无限存储的假象,其发展的目标是隐藏自己。