计算机文化基础

        什么是计算机??

        计算机是一种工具,一种既可以提高人类工作效率,又能够扩展人类感知和改造世界能力的工具。

        先来看计算机是如何提高人类的工作效率的。从字面的意思上来看,计算机是一种能够计算的机器。在计算机被设计出来之前,计算是需要人来做的,当时为了造原子弹,雇了大量女工去算,后来发现用人算太慢而且经常出错,一帮人才就想着是不是能用机器来算呢?天下武功无快不破,又怎么来设计这么一种比女工快的机器呢?大神开始用启发式的方法来思考这个问题。

        首先,客观现实是计算需要女工,她们受过教育啊,会识数算数,加减乘除微积分都会,但是很慢,一人算个一天算不了几个题。设计的机器得提高算题的速度啊,但是怎样才能提高效率呢?让我们来想象这样一种女工,她会的不是那么多,只会识数做加减法,但是比前一种女工做的快很多倍,也就是说比前一种女工笨一点但是也快一点。那么她们在碰到复杂运算的时候怎么办呢?她们去一个抽屉里找方法,碰到乘法就去抽屉里找乘法的小纸片,小纸片上有方法告诉她们怎么用加法来做乘法。做完了她们就把结果记下来。这种女工凭借速度快,虽然步骤多了,但是整体做题的速度比前一种也要快多了。然后再想像一种更笨更快的女工,只会识数,不会加法,但是比前一个又快了不少,碰见加法也得去找小纸片。甚至再想象一种更笨更快的,她们连数也不识,一个数在她们眼里就一图形,得去比抽屉上的图形,对了就拿小纸片,按小纸片上说的比了或者画了再把小纸片放回去。到现在她们还会比图样,再继续下去还能想象一种更笨的,连图样也不会比,只会拿放纸片比圆点画圆点擦圆点~,拿一个纸片,看有没有圆点,然后根据自己的状态决定怎么做。到这里基本就算笨到极限了,这样的女工只会

  • 在纸上写上或擦除圆点;
  • 把注意力从纸的一个位置移动到另一个位置

然后大神就构造了这样一种假想的机器,认为这样的一台机器就能模拟人类所能进行的任何计算过程。:

  1. 一条无限长的纸带TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号\square表示空白。纸带上的格子从左到右依次被编号为0, 1, 2, ...,纸带的右端可以无限伸展。
  2. 一个读写头HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
  3. 一套控制规则TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
  4. 一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态

        这样又出现这样一个问题,怎么把假想的机器变成现实的机器呢?

        可能现在已经注意到了,纸带上只有0和1,那么就可以用打孔不打孔来表示。二进制出现啦,那个时代有真空管和继电器,控制打孔和平移是没有问题的,问题解决。

        到这里,我们已经走到了源头,下面我们要再从源头走出来。看从0和1中我们能构建出一个什么样的世界。

        所谓道(0)生一(1),一生二(0,1),二生三,三生万物。这个三是什么呢?是0和1的三种基本运算,也叫基本逻辑运算:与、或、非。然后就是基本运算的各种派生形成了计算机的大千世界。

        先来看看如何用0和1来表示普通的整数:

imageimage

image

        很好(well done),现在连字母也能表示了,字母用国际通用约定标准ASCII码表示,ASCII码是8位二进制数(0~255),表示英文字母什么的轻松没问题,至于汉字就无能为例了,汉字常用的就几千个,需要的二进制位数要多一些,16位(0~65535)应该够了,所以就有了国标汉字编码GB2312,注意这里是国标不是国际标准,还有繁体的BIG5什么标准,所以汉字显示头几年一直是老大难,经常出现乱码。所以又出了Unicode,32位,这下所有人类已知的文字和符合都能表示了。表示问题解决了。

        表示问题解决了,还有我们怎么看呢?总不能让我们翻标准对0xBEEF对应的是那个汉字吧,我们需要把汉字显示出来让人来读。所以有了点阵字库。

imageimage

        这样,就在计算机只认0和1的情况下显示出了我们能看的字符。至于怎么显示出来的,那是后话了。这里只是表明我们可以用约定的标准,使用数字表示任何我们想表示的东西。

        现在,我们再回到那三个基本运算和那台假象出来的机器上,虽说从三个基本运算能算尽天下,但是我们不能什么都从基本做起吧,我们人类那可怜的脑袋只能记住几十个节点和状态转移,而稍微复杂点儿的运算动辄需要成千上万个晶体管和运算步骤,所以我们需要把这个过程分层次,那些经常用到的操作我们把它独立出来作为基本模块来构建更高层次的系统,每个模块内部包含一定的操作,对外有自己的输入输出,所以有了累加器、加法器、乘法器、比较器、触发器等模块电路,连带着纸带、读写头、控制规则、状态等抽象出了控制器、输入输出、存储、内存、寄存器等等设备。我们用8位、16位、32位、64位等不同的指令集来抽象在不同控制器或是处理器上运行的常用操作,类似ASCII码一样我们给各个指令集一个名字,每个指令一个代号,写出来大家也能看得明白怎么去控制机器的运行了,这样就有了汇编语言,汇编语言是和处理器配对的,这样我们就有了程序,机器用PC寄存器来指示当前运行的指令位置,就这样,我们把0和1的纸带变成了8位、16位、32位、64位的指令序列,机器也能够随意的在指令序列里跳来跳去了,咦,机器好像又变的能耐点儿了,其实这都是抽象出来的假象,事实上机器还是那个只懂有无的笨蛋。

        继续从源头走来,我们从难懂的汇编语言中把运行顺序控制,数据存储方式等等抽象就形成了C语言,为了方便人类的理解和表达。为了屏蔽控制和操作的复杂性,人们又用语言抽象了操作的共性部分,编写了操作系统,类似window、linux、ios这些操作系统通过图标和文件把各种操作和数据经过归一然后用拟物化的形式展现在了我们眼前。现在抽象出来的假象已经接近乱真了。但本质上机器还是那个只懂有无的笨蛋。

        这里我们要看一下数据这个概念。根据数据、信息、知识、智慧这种层级划分,数据是基础元素,我们周围的事物或认知如果想在计算机世界里有立足之地,那么就必须被序列化成0和1的序列。我们再回到那台假象的机器,现在它经过模块化已经不再是一台机器了,而是有了5大组成模块:控制器、运算器、存储、输入和输出。这里0和1的序列表示两种类型的东西:指令和数据,指令就是可以指示控制器或者运算器按照预设运作的01序列,数据则是按照一定标准或规则保存起来的01序列。啊,标准和规则再这里又出现了,也就是说不论是你动动鼠标或是打印一下编辑好的文件,你的操作都会依据一定的规则将其序列化成数字信息,然后发给对它感兴趣而且能够解读的地方,让箭头动一下或是在A4纸上一个点一个点的打出来让人看懂。这些规则有的是公开的,而有一些因为商业原因被刻意的保密,于是有了自由开源(GNU/LINUX)和商业软件的划分。到互联网络上一样是各种各样的协议标准,一样的规则,由此来说,我们对计算机和互联网的了解一定程度上就体现在对这些定义在各个抽象层面上的协议标准的认知上了。你知道这些协议标准,然后你就可以有意识的跟机器进行沟通,因为机器是按照拟物化的设计标准来设计的,跟人们在纸面上进行日常工作的方法一样,类似女工们可以在小纸片所做的,数据也就这么几种基本操作,CRUD(创建、获取、更新、删除),所有的数据操作归根到底都是这4种基本操作的排列组合。有这种了解就可以让你在面对不熟悉的任务时有一定的依靠。

        到这里,应该对计算机是如何提高工作效率的有了大概的了解,计算机凭借其速度,利用预订的协议规程获取、处理和交换数据来提高效率。学习计算机科学一定程度上来讲就是了解如何使用各种各样的方法来抽象表示现实世界的事物。而计算机是如何成为扩展人类感知和改造世界能力的工具也就容易理解了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值