编程这事,往大了说去,是很简单的一件事,就是给机器下命令而已。
我们知道,我们生活所用的语言,是由笔画组合,组成文字,文字再组合,组成词语,词语再结合语法,组成句子,句子组成文章。有很明显的层级关系,是吧?
想想我们所处的世界,由最简单的碳分子,到有机物,到单细胞,再到多细胞,再到动植物,最后就是我们五光十色的大千世界。同样有很明显的层级关系,对吧?
根据层级关系,最底层的东东,通过各种各样的规则,进行组合,会形成上一层的东东,再根据不同的规则进行,会形成更高一层的东东,如此一来,就会形成一种上下层次分明的一个体系,最下层是根本,是组成一切的最小单位。
如上所述,编程,其实不过是人类通过规则来驱动机器干活而已。
历史的车轮滚滚前进,现如今,我们有了计算机这个“笨蛋的”机器。
因为历史的发展,现代的计算机大致组成为:cpu,内存,硬盘(其实就是磁盘),鼠标键盘显示器,各种外接卡(声卡、网卡、显卡)。
计算机是一个“笨蛋的”机器,只有你按下了电源的开关,它才能知道开机。不要觉得计算机很神秘,他也只是个由开关控制的机器,我们编写程序,就是控制各种开关,组合成各种我们想要计算机执行出来的结果,例如:播放音乐、阅读文档、玩游戏、看视频等等。
早期的计算机,是一个庞然大物,通过搬动各种开关来使这个机器运转,实现各种不同的功能。现代的计算机,都是微型机(相对与以前来说),核心原理也是各种“开关”。
我们知道,一个磁针受地球磁场的影响会指示南北,假如我们规定,小磁针正常指南时(针头指向南方),规定这种状态表示0,小磁针受附近强磁场干扰,指北时(针头指向北方),规定这种状态为1。我们知道电流具有磁效应,聪明的先驱们想到,正常情况下和通电情况下的小磁针,肯定要么指南要么指北,既然这样,先驱们又想到,我如果有一个东西可以判断出来小磁针的指示方向,就可以表示二进制信息了!!!没错,事实就是这样,判断小磁针方向的,是我们的硬盘(磁盘)上的读取头!小磁针就是硬盘(磁盘)中的磁性粒子!通过一定的方向(例如,从左往右),我就能读取出来一串“有序”的二进制串。可别小看这个二进制串!想一想,英语单词也好,汉语拼音也罢,不都是一串有序的“字母串”么?只不过我们规定了dog就是小狗的意思,说白了,dog这个东西的本质,只不过是一个“有序的字母串”而已。好好想想这句话。很多时候,我们需要明白事物的本质,这样才是真正的理解了这个事物!!!
好了,我们现在已经有了二进制串了,可是,开关呢?在哪里?我们有了读取头,就可以知道小磁粒的方向啦!假如我们规定,0代表关,1代表开,这样的话,通过读取头,我们可以连接另一个机器,读取到0的时候,我们就去关某个开关,读到1的时候,我们就去开某个开关,这样,通过小磁粒所表示的信息,我们就可以实现组合开关啦,就可以控制计算机啦!!!先驱们的智慧,真的很强大。
聪明的童鞋,肯定会联想,我可以用0、1来表示整个世界!就是这样,就像26个字母可以组成英语的世界一样,我0、1同样可以,只不过是二进制的世界,为了更方便的让计算机给我们干活,我们可以通过定义十进制的0,代表a,十进制的1,代表b,以此类推,我们可以用十进制数字代表字母和符号,相当聪明的一种做法!!!我们的二进制可以转换成十进制啊,所以,我们的二进制可以通过我们的规定,转换成我们现实世界中所使用的语言!这样,我们就可以更加方便的去驱动计算机帮我们干活去了,不是么?这种所谓的规定在编程界有一个专业的名字,叫做码表。通过定义码表和对比码表,我们就可以实现把二进制翻译成英文字母或者其他的任意字符(只不过规则不一样了而已),这可以解释为什么我们会在计算机上看到乱码的问题,我们看的信息,本质上都是二进制串,在别的地方,用的a码表,传输到我们这里之后,我们因为操作系统等等各种原因,可能使用的是b码表,那翻译出来的东西肯定就是一堆杂乱无章的东西啦。
我们有了字母,同样的道理,很长的一个二进制串,可能包含多个字母,就可以组成单词,同样的,也可以组成句子,组成文章,组成世界(注意:视频和图片同样是二进制文件,计算机上的所有的文件,都可以看成是二进制串)!!!
于是乎,我们编程,只不过是使用一种先驱们所规定好语法的语言(就是常用的各种编程语言啦)去书写一堆有序的命令而已,你也可以把它们看成文章,本质都是相同的,多个语句组合成的组合体而已!
我们学习编程,也是学习先驱们规定好的语言的语法而已,为什么不使用现有的语言呢?比如说英语?因为计算机是个机器,我们的本质还是在板开关,你写了一句话,说:计算机,你随便给我搬下某个开关吧!计算机不会有任何反应!因为计算机并不是个人,没有逻辑思维,他不会开玩笑,也不知道随便是什么意思。所以,先驱们规定出来的编程语言都是语法很严谨的语言,一是为了防止出现歧义,二也是因为码表的原因,就像我们生活中常见的多义词,对比码表的时候,没有特别指出的时候,计算机是不知道对应到哪个意思上去的!
回顾一下:我们通过小磁粒这个东西,把我们世界的语言,转换成具有执行能力的开关,再加上我们的各种规定,我们就像写文章一样去写程序啦,这就是编程!!!
先驱们通过下定义,描述这个世界,这就是人类智慧的伟大!
向那些为了科学和真理而不断摸索的先驱们 致敬