现在的位置: 首页 > 综合 > 正文

编程的本质

2013年10月03日 ⁄ 综合 ⁄ 共 2128字 ⁄ 字号 评论关闭

我一直在思索编程的本质,经过四年多的思考,现在终于有了一些眉目。计算机编程,从本质上来讲,就是存储(Store)、计算(Compute)、访问(Access)的过程。先把需要的资料存起来,当然你可以保存在内存中,也可以保存在硬盘上,然后经过简单的加减乘除运算配上复杂的业务逻辑(就是客户制定的规则),最后,从内存中或是硬盘上读取结果即可。这就是计算机的本质。

围绕这个本质,我们先看存储。存储,顾名思义,就是将数据保存。你可以将数据保存在1、内存2、数据库3、文件中。

对于读取速度要求高且数据量不大的,我们可以将其存储在内存中。

对于读取速度要求一般但数据量很大的,我们可以将其存储在数据库中。

对于速度要求一般,数据量一般的,我们可以将其存储在文件中。如果存储在文件中,就省去了安装数据库的麻烦。

无论存储在哪里,要想存储在计算机中,首先都必须格式化。为什么要格式化?因为计算机是一个精确的机器,它无法处理二义性的东西。只有格式化之后的东西,才足够精确,才消除了二义性,才能被计算机处理。譬如,有一条信息是这样的:小明在郑州移动上班,他身高170厘米,体重65公斤这是很普通的一条信息,如果想运用在软件中,就必须这样处理:

姓名

工作单位

身高

体重

小明

郑州移动

170

65

这样一来,就把一条完整的句子分割成了四段。原来完整的句子,人读起来很通顺,但计算机无法处理(或者说可以处理但是不好处理);现在将人读起来很顺的句子,进行了提取(类似于缩句,忽略修饰,保留主干),就形成了计算机能够处理的句子。这种缩句的过程,就是格式化的过程。附带说一下,自然语言含有大量的冗余信息,机器语言却需要简洁,需要消除二义性。

格式化完毕之后,就可以将数据存储在计算机中了。如果你想将这条信息存储在内存中,你可以使用链表。在存入链表之前,你必须将这条信息“类化”:就是先创造一个类,然后让小明当成这个类的实例,最后将这个实例存储到链表中。如果又来一个小张,你只需重新实例化一个类,生成一个小张对象,依然存入链表即可。值得一提的是,存储在内存中的信息,存取速度非常快,但是不能长久保存。

如果你想存储在数据库中,就省去了大量的麻烦了。你根本不需要创建什么类啦、对象啦等等,你只需创建一个Table,一个小明就是一条记录,放入Table中即可,如此简单的操作,或许就是数据库技术迅速发展的原因。存储在数据库中的信息,存取速度一般,但是能够长久保存。

如果你想存储在文件中,你可以使用XML或者是INI文件,甚至是特殊格式的文本文件或dat文件。无论以哪种方式存入文件,你只需要以某种格式区分这些信息即可。譬如上面的信息,你就可以以“小明,郑州移动,17065的形式存放在文本文件中,也可以将信息序列化之后存储在dat文件中。

无论如何,你可以把这条信息存储到计算机中了。存储是一个十分重要的过程,没有存储,就没有使用,它是计算机处理信息的“源”。没有这个“源”,就像做饭没有米一样,其它的一切都是虚幻。所以,对于计算机来说,要想使用,必先存储。其实这个道理在日常生活中处处可见,如果你没有储备粮食,你能够吃饭吗?

数据存储完毕以后,就可以利用了。如何利用,无非是简单的加、减、乘、除、取余、取整等六项操作。除非你去搞航天、搞原子弹,否则在一般的项目中,这些操作已经足够用了,根本用不上微积分等高等数学的知识。所以计算的过程是十分简单的,简单的计算加上复杂的商业逻辑,就可以是一套完整的商业软件。事实上,现实生活中的计算都是比较简单的,所以,计算在此就叙述的稍微少一点。

经过计算的数据必须展示给最终用户,这样计算的结果才算有意义,否则你计算出来的东西没人用,不等于白计算吗?经过计算之后的数据依然是存放在计算机中的,那么我们如何访问计算机中的内容呢?这就是我们将要论述的话题:访问(Access)。

根据存放位置的不同,访问也分为三种不同的情况:

对于存储在内存中的数据,我们通常是存储在链表中的,因此我们访问的时候,通常是利用遍历的方法进行的。一条for语句,就可以将链表中的内容逐一遍历,再利用if语句,就可以筛选出我们想要的信息。

对于存储在数据库中的数据,我们通常是利用SQL语句来访问的,这种方式最普遍,最简单,只需要向计算机发送select命令,就可以访问存储在数据库中的各种数据。这种方式简单、直观,是当前信息管理系统常用的访问方法。

对于存储在文件中的数据,我们通常是利用API函数来遍历整个文件的,这个API一般都被软件开发商做好了封装在集成开发环境(IDE)中。对于XML文档,我们通常采用DOM技术;对于INI文件,我们可以利用API来读取;对于文本文件,我们逐行读取文本,剩下的就是字符串的操作了。

有了存储(Store),有了计算(Compute),有了访问(Access),我们就能够利用计算机完成一切信息系统。计算机本质上就是一台机器,和锤子、机床、汽车等工具机器没有什么区别。但计算机由于其复杂性,人们不得不花费大量的时间和精力去研究。但是我们要跳出复杂看简单,计算机无论多么复杂,也就是那“三斧头”,即存、算、取。掌握了这个本质,我们理解一些系统的时候,就会更加高屋建瓴。

 

 

抱歉!评论已关闭.