二进制编程怎么做 (原始人是如何学习编程的)

警告:计算机科班出身的程序员禁止进入!

二进制编程怎么做,原始人是如何学习编程的

自从写了上一篇文章以后,一直没有进一步的动作。这些天我一直在思考,我希望自己能做一个课程,这个课程能够给下面这些人提供帮助。

1、非科班出身的绝对小白。希望找到一条路进入编程行业。

2、it行业的其他非编程人员,你或许每天与神秘的程序员打交道,但是却无法了解他们。对他们的神秘咒语——“这个需求实现不了”,完全没有抵抗能力。那么,这系列文章帮你了解编程到底是怎么回事。

今天,我们先来了解一个最简单的问题:

计算机到底是如何工作的?

计算机是由软件和硬件组成的。

硬件就是我们的电脑、手机,这一堆能够摸得着的有实物存在的东西。

而软件呢,你在计算机或者手机屏幕里看到的一切都是软件。

操作系统是软件,office是软件,订餐的app是软件,网站是软件,游戏是软件,*放播**视频的*放播**器也是软件。

软件是由程序组成的,而程序是整个电子世界的灵魂。

那么程序到底是如何运转的呢?

程序这东西,说起来很神秘,但实质就是一个文件,一个可执行的文件。

通俗上来说,我们把文件分为两种,一种叫文本文件,一种叫可执行文件。

文本文件,顾名思义,就是文件本身是文本形式,比如咱们常见的TXT文件就是文本文件,我们人能够查看能够读懂。

而可执行文件,基本上是没有办法直接读懂的。不信你用你的记事本打开一个mp4文件试一下。

当然不管是文本文件还是可执行文件,本质上都是二进制文件。因为计算机跟我们人不一样,它只能读懂二进制文件。

什么是二进制?

说起二进制,大家可能觉得很神秘。但是我要说,这其实没什么神秘的。

如果当初由你来发明计算机,你也一定能做出二进制的东西。

不信你跟着我来。

现在我们找一个原始人来解决这个问题。

假设我们有一个原始人叫做小王。

小王现在遇到一个问题。

他老婆晚上要生了但是部落大首领让他晚上去对面山头站岗,防止野生动物半夜猫过来。

小王虽然不情愿,但是领导让加班,还是不得不去的。因为这是福报。

所以,临走之前,他和自己妈说,要是孩子生了,你就告诉我一声。

可是这大晚上的,月黑风高,隔得又远,既看不见,又听不见,怎么告诉你呢。

小王找来找去,哎——家里有一个火把。于是跟他说,要是生了,你就把火把点亮就行了。

几十万年以后,小王的智慧被计算机科学家发扬光大了。

我们把小王的问题稍微抽象一下,就是:

如何用一个火把,来表示两个数字。

生了是1,没生是0。

用火把点亮表示1,用火把没点亮表示0。

问题解决了。

二进制编程怎么做,原始人是如何学习编程的

那如果小王希望知道到底生了几个该怎么办呢?是生了一个,两个,还是三个(小王老婆肚子大,很多人说有可能是三胞胎)。

一个火把显然解决不了问题了,但只需要再加一个火把,我们就能很方便的表示四个数字了。

两个火把全灭就是0;

第一个灭,第二个亮表示1;

第一个亮第二个灭表示2;

两个全亮表示3。

看,是不是完美解决了问题。

二进制编程怎么做,原始人是如何学习编程的

然后我们再扩展一下,3个火把是不是就可以表示8个数字?

4个火把是不是就可以表示16个数字?

5个火把是不是就可以表示32个数字?

6个火把是不是就可以表示64个数字?

是的,小王因为生孩子的问题,一下子茅塞顿开。第二天就向大首领建言,在山头架上六个火把,这样就可以每天汇报山下野牛群有多少野牛可以抓了。

然后我们把火把的亮灭换成0和1,用灭表示0,用亮表示1,下面这一串数字是不是有点眼熟?

二进制编程怎么做,原始人是如何学习编程的

是的,二进制产生了。

几十万年以后,计算机科学家解决问题的方法和小王是一样的。

因为计算机作为电子产品,状态只有两个,有电和没电。

有电代表1,没电代表0。

所以我们就可以用一串1和0代表世界上任意一个数字。

那么除了数字之外,我们是不是还可以用来表示文字呢?

当然可以了,我们只需要规定,一个数字代表一个文字就行了。

英语26个字母,就算加上大小写,52个数字足够了对不对?汉字虽然多一点,但也不过就是字库大一点而已。

所以,到这儿我们就可以得出结论了。

二进制可以记录和表示世界上任何一个概念。

好,解决了二进制的问题,我们接下来来看另外一个问题。

计算机语言如何执行

既然计算机只认识二进制的,那么,我们人类编写的程序语言,是怎么在计算机上执行的呢?

我们还是来看看原始人小王是怎么解决这个问题的吧。

小王的六个火把计划被大首领采纳了。

大首领在山上竖起六个火把,打算给全部落的人传递野牛群的数量。

但是很快就发现,这个PPT演示起来很丰满,执行起来很骨感。

为什么?

最大的问题就是谁能记住什么数量对应怎么点火把啊。

比如今天山下有31头野牛,谁能告诉我该点多少火把,怎么个点法?

大首领一看急了,限令时间,由小王来给大家培训,每个人都必须记住计算方法。

领导的话谁敢不听啊,996也是福报啊。

于是所有部落的人牺牲睡眠时间,啃硬骨头,把算法都给学会了。看见野牛数,咔咔咔咔咔咔一通算,就知道该点几根火把了。

是的,你没看错,最初的计算机语言就是这样的。既然计算机只能读懂二进制的东西,那咱就写二进制的东西给他看。

但是你想一想就知道这东西有多折磨人了。今天在山下看见31头野牛,我咔咔咔咔咔咔一通算,终于算出来了,回头一看,野牛已经跑光了。

所以,这法子不行啊,为了更好的完成部落的信息化建设工作,小王同学必须另辟蹊径啊。

于是小王同学冥思苦想,终于想出一个大力出奇迹的办法。

找两个人,什么事情也不干,专门负责点火。

你也不用去打猎了,你就给我把换算规则背过。给你数量,马上知道点多少火,看见火把,马上知道多少数量。

这解决方案一出来,事情终于简单了。

不管是谁负责找猎物,只要看到了,马上告诉这个人,这个人一听数量,马上就知道该怎么点火,然后就把火炬点起来。找猎物的人专心负责找猎物就行了。

完美。

是的,我们复盘一下小王的解决方案,其实就是找了一个专门的翻译。负责把人类能听懂的数字翻译成二进制,再去点火。

计算机科学家最终的解决方案和这个是一样一样的。

计算机里加一个专门的模块,负责把源代码翻译成机器语言,这样计算机就可以识别了。

而编写程序的人再也不用和01打交道了,他只需要写一些类似英文的程序代码就可以了。

比如if......else......就可以解决“如果怎么样,否则怎么样”的逻辑判断问题。

看下图,源代码需要经过翻译层,翻译成机器语言,计算机才能执行。

二进制编程怎么做,原始人是如何学习编程的

这种编程语言,我们现在把它称之为高级语言。

是的,你现在能听到的几乎所有编程语言,都是高级语言。从上古时代的C,到人到中年的JAVA、PHP、C#,再到后起之秀python、go等等。

当然,根据翻译方式的不同,这些语言其实还可以分成两类。

这儿再举个例子,就比较好理解了。假设你要去见一个国外客户,你不懂他们的语言。这时候你找了一个翻译。但是如何把你要说的话都传递给客户,你有两种方式。

一种是你先把所有的话都写好稿子,然后翻译把它翻译完,直接把翻译好的东西给客户看。

还有一种是你见客户的时候带着翻译去,你说一句,翻译给你翻译一句。

是的,对应计算机,就是下面这张图。

二进制编程怎么做,原始人是如何学习编程的

第一个是先编译再执行,叫编译型语言,典型代表是java,第二个是边解释边执行,叫解释型语言,典型代表是php。

两种类型的语言各有各的优势,编译型语言因为先编译后执行,所以执行效率更高一些,但是灵活度稍逊。解释型语言灵活度更好,但是效率上稍微差一点。但随着计算机语言的发展,目前这两种语言也在互相学习,差异正变得越来越小。

好了,篇幅问题,今天就先说到这里。这是一个系列课程的第一篇,如果你有兴趣,可以关注我,下次我们讲一讲一个大型的项目到底是如何工作的。

二进制编程怎么做,原始人是如何学习编程的