计算机和程序
介绍
现在学习计算机已经三年了,有点想讲一讲我对一个程序的看法了。对于大部分的人来说,也算上没学计算机编程之前的我,都会认为计算机是一个十分智能的东西,仿佛再难的问题在计算机的面前都算是小意思一样。但这样的思想在我读大学并且对计算机的深入学习后才发现,这主要是得益于计算机的计算性能的提升,而不是计算机本身就是十分强大的,计算机的本身是十分的弱智的,但计算机进重复劳动的能力是人类的几何倍,且其速度还十分的块,而普通人是不会进行这样大的重复的且在其看来没有意义的事情的,而计算机则不会进行这样想,这就是计算机在我们面前表现的十分只能的原因。
起源
计算机的开始就是纯粹的为了解决数学方面的问题,虽然我们学习的时候总是从图灵机开始讲起,但是最早的一台计算机是巴贝奇差分机,其就是用来解决数学的问题的。并且到了冯洛伊曼的时候,他写出就计算机的模型的时候,也是为了解决弹道和原子弹中的一些问题的(虽然不知道是不是真的在实战中用过,应为第一天冯洛伊曼模型的计算机在二战后许多年才造出来了),一直到了现在,大型的计算机也是可以用来解决数学问题的(就连日常播放视频的解码到大型网站的大规模分布式处理都算是数学问题)。其实我认为于计算机中最有趣的地方就是从问题空间到解空间的变换一直到计算机中的 01 代码的转换,这个从比较高级的抽象一直到底层的细节实现变换过程中,其将一个极其复杂的问题通过各种各样的软件工程的解题思维和数学上的思想将其一步步的再解空间中变换或映射,最后变成二进制的代码。
程序
对于程序,可以简单的认为一个程序就是对数据的操控,对数据的操控又可以继续抽象为四个主要的功能,那就是增加、删除、查询以及修改。在我们日常对计算的使用过程中,无论是看视频、听音乐还是上网购物写文档这些事情,我都可以简单的认为就是进行这四项基本的活动。而数据则是软件的基础,在一个程序运行的过程中,是不可能没有任何数据产生的,我认为程序的运行则是伴随着数据的流动的,虽然可能修改数据,但是数据一定是会在软件中进流动的。
虽然现在的程序从简单的计算器内部的计算软件到维持天猫和淘宝在双十一运行的大型分布式式系统来说,其主要的功能一直没有发生改变。随着需求的增加,原来的这些功能在现在的软件开发中不断被细化为不同的方面,但是只要仔细的对系统进行分析就会发现,这些细分的功能都是为了维持增删改查这四个基本功能在现在的需求下正常的运行。所以软件的基本功能没有发生根本性的改变,虽然不是每个软件的内部都包含着这四个功能,万变不离其宗,根本性的能容是不会轻易发生改变的。
数据
对于数据,这个的解释则有许多的书籍进行描述了,但是对于数据的存储来说,我一直有一些不同的见解。那就是对于数据的读取,我们要不是就是遵循约定俗称的规矩,也就是进行现在我们编写的代码时遇到的各种各样的规范和协议。如果我们不遵循这些协议,其他人或系统发送过来的数据我们就无法进行任何形式的解析,而是一堆乱码。所以我认为读写数据是一种双向的,以某种方式进行写入或者是传输数据,必须以这种方式相匹配的方式对需要进行操作的数据进行操作才可以得到我们需要的数据,而不会出现乱码。
这时,加密就是一个我认为比较不错的例子,对于某些比较重要的数据,我们当然希望只是在必要的人之间进行传递,而不是在整个网络中传递还能被其他人发现其中的秘密(虽然密码被破解只是一个时间上的问题,但是大部分人还是不希望自己的重要数据被其他的人获取),即使数据被其他人传递出去了,但是没有密码本,还是不能读取其中的真实能容才是每个人所希望的安全。这时数据就是遵循一种特别的约定进行传输的,所以我认为这样体现了数据在读写的时候是双向的这样概念了。
总结
每次再根据自己目前的学习水平思考计算机中的一些自己所关心的问题的时候总是会有不同的见解,虽然不一定是正确的,但是我还是想将其分享出来,分享之后才会有更大的收获。