存在很多关于元数据与 XML 之间的关系的似是而非的认识,这里谈谈我的看法。
1 、数的诞生
自然数 {1 , 2 , 3 , ...} 集合是公理性认识,数总是与运算相联系的,即所谓的数与运算的不可分性。
2 、运算的完美性
所谓运算的完美性,就是数学的纯粹性,即数学研究当中可以不计较其应用特征,而仅仅追求数学的内在的规律性。
运算的完美性,扩大了数的范畴。如加法运算的逆运算,减法。当加法、减法完全可逆以后,数的范畴就从自然数扩大到整数域了。同样的,乘法与除法完全可逆之后,数的范畴就从整数扩大到有理数了;指数与对数运算完全可逆之后,又把数的范畴从有理数扩大有无理数和复数范畴里了。
3 、图灵计算系统的由来
当数与运算发展到一定高度以后,人们追求运算的机械化、自动化,从而诞生了图灵机系统。图灵机系统可以定义如下:
1 ) 有一个确定的数域。
2 )以及基于该数域的一组确定的运算,称该组运算为一个图灵机。运算通常由硬件来实现,也可以用软件来模拟。此时称这些运算为指令集或 者功能函数集。
3 )图灵机系统定义为该组运算的生成,该组运算的一个生成就是一个图灵机系统,也称图灵机系统为算法,该组运算的生成空间就是该图灵机的算 法空间。
4 、布尔代数
当研究算 法理论的时候,不能不提到布尔代数。布尔代数是通用图灵机研究的必然,通用图灵机不是人们通常所认为的一个具有通用运算指令集合的计算机系统。事实 上, PC 机只是具有常用运算指令集合的计算系统,这个 “ 常用 ” 是基于人们对于运算需求而做出的使用频度的一个度量, “ 常用 ” 不是 “ 通用 ” 。
世上根本不存在什么 “ 通用 ” 的东西。因此通用运算集合是不存在的,通用计算系统也是没有的。
具有一个运算集合的计算机就是一个图灵机,运算集合的一个生成就是一个图灵机系统,通用图灵机研究的是所有图灵机系统所具有的共同特征。因此通用图灵机研究的是运算生成理论,即图灵机系统理论,也即算法理论。
在引入了布尔代数以后,通用图灵机可以导出软件程序理论模型,即我们通常所说的程序设计的 3 大结构:顺序、分支和循环 。
5 、元数据的引入
当图灵机理论、即算法理论与软件实践发展到达一定高度了的时候,人们产生了软件模块复用的需求。一个软件模块就是一个图灵机系统,这个复用包括了 2 个方面的 涵义:
1 )静态复用:整个模块当成一个更高级系统的原子模块来复用。这是软件理论与实践的早期追求。
2 )动态复用:软件模块作为 “ 服务 ” 来动态生成一个更 加高级的复杂系统。这里的 “ 服务 ” 具有社会学意义,即服务的社会性,服务就是社会服务。这正是我们当前计算系统理论与技术实践所面临的情况。
此时就需要引入元数据的概念了。
6 、元数据的概念
在软件动态复用、也即 “ 软件即服务 ” 的实践过程中,我们需要对一个具体软件模块的行为抽象,这个抽象实践就是软件工程里的 handle ,通常翻译为句柄,而描述该句柄的技术就是元数据。元数据的表达可以是任意形式, XML 是其中一种适合的表达技术。
7 、元数据的表现分析
根据 handle 所定义的图灵机模块内涵的不同元数据可以有不同的表现形式。当软件模块仅包含有函数而无内部变量时,软件实践就是早期面向过程的编程模型; 当模块里只有变量而无函数时,软件实现就是管理系统,有人称此时的元数据定义为数据的数据;当模块里包含变量和函数 2 者时,其实践过程就是著名的面向对象 编程了。
8 、元数据与 XML 的关系
元数据与 XML 的关系可以用文字与纸张的关系来类比。
人们发明出纸张的目的就是为了记载文字的需要的,但文字不局限于记载在纸张上面,虽然文字适合于记载在纸张上。文字还可以记载在石头(称为石刻)、木头(称为木雕)上,甚至是金属上面。同样,现代纸张早已不局限于仅仅用来记录文字了,手纸就是用来擦拭而非记录的。
同样的,元数据适合于用 XML 来表达,但绝对不能狭义地理解为只能用 XML 来表达元数据的,早期的句柄显然不是用 XML 来描述的,因为那时候 XML 还没有被发明出来呢,正如同早期的文字记载还没有发明纸张一样。
XML 是一种数据表达和描述格式,适合于在不同的计算机系统间流转和共享,但 XML 除了描述和表达元数据以外,还可以表达其他需要在系统间流转和共享的任何数据。
转自:http://blog.donews.com/ygzw/archive/2007/07/09/1184511.aspx