本帖最后由 yyy71cj 于 2014-10-26 17:49 编辑
1.1.2 简介 我们通常是用代码来表达程序逻辑的,特别是在数据量并不大的时候。但是事实上有很多的逻辑,却隐藏在一些数据中。 数据是如何反映客观事物的生存逻辑的呢? 根据现行科学界的普遍认识,我们可以得到这样一个观点,那就是“数据是宇宙的语言”。也许我们与外星人之间没有共同的口头言语,但是对于宇宙的描述,智慧生物一定会使用相同的语法——数学,一定会使用相同的词义——数据。也正是这个观点,为我们的数据驱动的程序提供了一个理论上的支持。 首先,数据的大小本身就是对客观事物的一种描述。例如这个物体体积是3立方米,质量是5千克。这里的数据“3”与数据“5”便是对该物体的一种准确的客观数据描述。准确的客观数据描述几乎毫无悬念地被人类所接受,对于这类数据的解释我们只需要用直白的方式就可以了。如果不遵循这种描述方式,我们将称之为扭曲的描述方式。扭曲的描述方式也会经常被我们使用在项目实践中,被扭曲过的数据将不再有直观的含义,解释它们当然也不能使用直白的方式,而必须要遵循一定的解释协议,这个解释协议也正是控制协议中的一部分。 例如物体1的体积是7立方米,物体2的体积是8立方米,那么我们用数据“7”与“8”可以描述它们的体积,我们也可以用“700”与“800”来对它们的体积进行描述(如图1.1-2中的直白描述),……。很显然,这些描述我们只是使用了不同的单位,所有的物体之间的体积遵循着固有的比例关系,这看起来很直白。但有时候,我们会打破这种成规,例如为了节约内存而在有限的数据空间中描述一组对象,我们完全可以用扭曲的方式来描述它们。假如我们的数据都集中在500之上,那么我们可以以500为基准,所有的数都去掉一个500,将得到的以500为0点的增量作为该物体的体积,我们将得到一组增量描述的数据(如图1.1-2中的增量描述)。假如这些数据更优的集中点在1000,那么我们就可以以1000为基准减去该物体的体积,将因此得到的补量作为该物体的体积,我们将得到一组补量描述的数据(如图1.1-2中的补量描述)。很显然,增量描述与补量描述都是一种扭曲描述。
其次,数据与数据之间的相对大小也是对客观事物的一种描述。无论我们对于项目中的待描述成员采用了直白描述还是扭曲描述,数据与数据之间的相对关系都能成为我们所要关注的事物的本质规律(如图1.1-3)。
第三,数据的顺序决定了客观事物运行的时序,时序与数据的相对大小就决定了客观事物的变化规律,常见的时间曲线正是这一规律的描述者。
数据中隐藏的规律远远还不只这么多,但是我们这里不一一絮说,因为上面典型的几个方面就已经足以能够告诉我们,数据具有足够的资格成为客观事物生存规律的描述语言。 虽然我们通过代码逻辑也能实现任务的要求,但是这会让代码十分冗长,而且分支众多,程序会非常难以理解、记忆与维护。而如果我们将这些隐藏这奥秘的数据按照它们固有的规律整理出来并按一定的格式摆放,局面将会发生逆变,逻辑控制的代码将会十分简单而且易于理解、记忆与维护。 举个例子来说明数据驱动的程序的结构特点。 例如我们需要听歌,我们不能为每首歌编制一段代码来播放,所以我们就计划着设计了一种叫MP3的播放器,然后我们要求所有的歌都必须按照MP3的格式来存放。这样每首歌不再带有特定的代码,只要送入MP3中就能播放,而且当要听另一首歌时,播放器不会有任何改动的需要,只要换首MP3格式的歌就行。而当我们的播放器需要做升级换代时,原来的MP3格式的歌也同样没有任何改动的需要,还能与原来一样继续使用。这样,MP3播放器就相当于我们这里所说的解析器,而MP3格式的歌曲就相当于我们这里所说的数据脚本。 这看或许起来很深奥!然而如果等你明白了其中的奥妙,你就会发现数据驱动的程序离我们并不是遥不可及。
|