查看原文
其他

计算机究竟是怎么和人类交流的?|《少年时》最难一期《计算机大穿越》帮助我们懂得机器思维

2017-04-06 海上云、吕亚洲 小多童书






主讲人|海上云、吕亚洲
笔录整理|吕亚洲、杨萨萨


这是小多童书的原创文章,来自小多读者群的第19次分享内容,欢迎朋友圈转发分享,未经小多童书(ID xiaoduoui)授权不得转载。








大家好,我是吕亚洲,《少年时》的主题编辑,今天很荣幸能和海上云老师一起做《计算机大穿越》这一期的阅读分享,和大家一起探索计算机的神奇世界。


计算机现在已经是我们生活中必不可少的工具之一。也许你会用它写报告、排日程,也许你还会攒机,但是你不一定知道为什么计算机可以具备这些功能,它作为一个不同配件搭建起来的机器,又是如何处理你所理解的信息呢?


我们这本书并不是讲5分钟让你学会PS,也不是手把手教去做DIY,而是介绍我们如何发明计算机,计算机通过什么机制跟人类进行交流。


举个例子,当我们打开一个修图软件,点击“一键美化”,计算机一下子就get到了这个信息,生成了一张全方位美化的图片。但是,如果只是通过你说的这几个汉字,或是对应的英文,计算机并不能理解和执行,如果可以的话,人工智能早就已经实现了。


实际情况是,我们和计算机之间存在着一个“翻译”,我们的语言在计算机里不是想象的那样,计算机是另一个区别于人类思维的世界。


那么,这个世界是怎么被搭建起来的,人类又通过什么样的方式能让信息被机器理解,同时,这些信息又是怎样在机器里流动呢?这是我们想在这本书里描述的。我们需要一位深谙计算机“内心”的专家来把它们种种心理活动生动地讲出来,少年时常驻作者海上云老师就成了第一人选。计算机对他来说是在熟悉不过的东西,内外上下,由表及里,他是计算机网络搭建的专家,同时,他又能通过合适的比喻把一个科学现象或技术问题表达到位,比如,用小黄人的例子、键盘大叔、传达室,来描述计算机的世界,就像是小灵通漫游未来世界的计算机模板。


在此之前,我们收集到了一些读者对本期《少年时》内容提出的问题,下面就让这一期的专家,海上云老师来帮我们解答这些问题,分享一个计算机行家眼中的计算机的隐秘知识。




探索计算机的神奇世界


Q1:究竟是“电脑”还是“计算机”?一样吗?


电脑和计算机,实际上是同一个意思,在英文里都是Computer。计算机,是比较正规和专业的翻译。电脑,比较通俗、大众、形象一点。这就好比唱《青花瓷》的歌手,叫周杰伦,但是大家又叫他周董。懂的人都知道是同一人,不知道的以为是两个人呢。


其实,在80年代初期,计算机还只是大学和研究机构里高大上的设备,没有普及到家庭,也没有“电脑”一词。我们使用计算机,都需要买机票,脱了鞋,进入装有空调的计算机房,在几个小时内编程、调试、打印。印象最深的,是机房门口的鞋子,味道不是特别好闻,这个我们的印象非常深刻。


到了90年代,个人计算机开始普及,大家觉得计算机可以完成很多人脑做的计算,而且是用电的,人们很形象地称之为“电脑”。“电脑”一词开始在媒体和大众普及,并流行起来。


到了不远的将来,生物计算机出现,电脑这个词或许就不太合适了,自然会有新的名词出现来代替它,期待小多的小读者赶上那个时候,给它取名。



Q2:这一本书的内容太多,单篇理解还可以,但是冯·诺伊曼结构、计算机语言、还有电脑1+1命令的运转有什么联系吗?



 


冯诺伊曼结构好比是一种城市的设计和布局,考虑了内部的分工:有控制单元、存储单元,考虑了各个小区之间的交通连接,还考虑了城乡结合部(就是输入输出)。这种设计和布局,在过去半个多世纪的实践中,被证明是非常有效和合理的。



 


在计算机这个城市里,用的语言都是二进制的,不是0,就是1。为什么要用二进制呢,因为计算机里面的晶体管有两个状态:“通”和“断”,而这种只有两个状态的晶体管元件结构也是最简单的。二进制的1和0对应着逻辑的对和错;所有的数值,也是用一连串的1和0表示;甚至所有的“命令”也是用预先约定的一串1和0表示,比如做加减乘除,把数据从一个地方搬到另一个地方。


为了让人更容易记住这些命令,计算机专家发明了高级的计算机语言,比如“+”表示加法,你不需要记住那一串1和0。这就把你从记忆琐碎的命令中解脱出来,你只要花精力在你要做的科学计算的程序设计上。从计算机语言到二进制的翻译工作,是由一个叫编译器的程序完成的。这种严格而繁琐的转换工作,是计算机最拿手的,不仅做得快,还不会出错。



 


当我们在键盘上输入“1+1”后,编译器把它转换成二进制的1、0码,然后到达CPU的控制单元,就好比你去银行办事,先到门口的领号机前取号,然后,坐在椅子上等。在计算机里,这个命令也是先在控制单元领取一个号,然后到寄存器中等。等到喊你的号时,工作人员一看你是换外汇,就派你到换外汇的窗口。在计算机中,这个加法运算,会被派到算术逻辑单元。等运算完成后,控制单元会把结果派发到显示器上显示。这就是整个1+1在计算机中操作的过程。



Q3.:是CPU指挥操作系统,还是操作系统指挥CPU?




 

首先要明确的,是操作系统指挥CPU,而不是CPU指挥操作系统。


CPU是一块半导体芯片,里面有上亿的晶体管,有的做控制,有的做逻辑算术运算,有的做寄存器。它是硬件的心脏部分。


而操作系统是一个系统管理软件,在你和硬件软件之间提供了一个接口,让你更好地来使用计算机。它主要的任务是协调多个任务的运行、管理存储资源、控制外围设备等。


比如,你想把一个文件拷贝到另一个地方。有了Windows操作系统,你用鼠标一拉,就行了。




 

在没有Windows之前,用MS-DOS操作系统,你需要输入命令“copy”,并指定要拷贝的文件名和目的地。




 

而如果连MS-DOS操作系统都没有,只有一台“裸机”,你必须像蚂蚁搬家一样,先把文件一点一点移到寄存器,然后,为文件找到新的住所,检查一下空间是不是足够大,把文件一点一点存进去,再到做户籍登记的文件系统中做相应登记。这些工作,需要几百行计算机代码来完成。而有了操作系统,你只要输入一行命令就可以了。


打一个比方,你拿了老中医给你开的处方,去中药店抓药,当归7钱,田七5钱……,你把药方交给药店的人,很快就配好药,因为药房的人熟悉药材和存放的药柜。但是,如果这家中药店是无管理的,你得自己抓药,你要自己找到当归在哪里,田七在哪里,再称重量,这就非常不方便了。这就是没有操作系统和有操作系统的区别。


操作系统在管理控制CPU 时,还会耍一个魔术。它把很多任务切成一小块一小块,然后,先完成A任务的第一块,再做B任务的第一块,再回来做任务A的第二块,B任务的第二块……如果操作系统调控得当,任务分得细,CPU速度够快,CPU 看上去可以同时完成多项任务。这是计算机里多任务多进程的概念。但并不是并行计算,因为某一个特定的瞬间,只有一个任务在做。当CPU有多个核的时候,我们就能做真正的并行计算了。



Q4:我用了好多年的计算机了,但是从来没有看到过软件的代码。在计算机的什么地方啊?


软件的代码,可以说在计算机里无处不在。我们举几个例子:


比如,你自己编的程序,在编辑时,它在内存里;等你存盘之后,它就在硬盘上。


再比如,计算机启动时,要对硬件做初始化的配置,这个程序叫作基本输入输出系统BIOS,它存放在一个叫做ROM的只读内存里。当你打开计算机,你可以找到一个纽扣电池,它旁边有一块芯片,里面就是BIOS。




 

还有,操作系统的代码存放在硬盘上。因为内存的读写很快,而硬盘的读写很慢,等计算机启动后,操作系统会被调用到内存里,这样运作起来更快。


我们打开浏览器,比如去爱奇艺看电影,电影的视频文件是在服务器的硬盘上的,通过互联网传到你的电脑或者手机,就临时存放在内存中,被播发器软件连续不间断地解码、播放出来。从这个意义上来说,软件的代码又是流动的。


在电影《黑客帝国》里,计算机显示屏上不断有代码滚动并往下掉落。这一点很形象。实际的代码,也是在网络中不停移动,在这里,又在那里,无处不在。





接下来我们来示范一下HTML代码是怎么样的。用浏览器打开小多的网站。你点击鼠标的右键,会出现一个小的工具框,其中有一个选项“View Page Source”。选择这一项,就可以看到这个网页的源代码。







我们再举一个例子。打开电脑,在C盘的根目录下,有一个Program Files的目录。这里面有很多应用软件。Internet Explorer这个目录下是IE浏览器的软件包。我们随便选择一个DLL(动态链接库)文件,在右边这个黑框里你会看到天书一样的乱码。这里面有机器执行用的代码、数据和资源分配。像不像《黑客帝国》里的那些滚动的代码?



Q5:很多很难的电子游戏我都打通关了,如果要学计算机,从什么方面开始学比较好?


学习计算机,容易入手的是学习一种计算机语言。比如C++,用C++做一些科学计算;HTML,做一个简单的网页(18min);JAVA,做一个简单的动画,小的游戏


计算机语言,是研究人员为了人们方便使用和控制计算机而发明的,通过学习计算机语言,你会慢慢了解计算机的脾气,熟悉和它交流的方式。


计算机里有一个墨菲定律,会出错的事总会出错。我把它延伸一下,就是计算机很“欺生”,因为新手对语言不熟悉,常会犯错,而计算机是非常严谨或者说是死板的,多了一个符号、漏了一个字符,就会有警告,通不过。比如书后面的制作个人网页的小实践,读者可能因为在编程时只是漏了一个角符号“<”而使整个页面就会混乱。所以,对于刚学计算机的同学来说,一定要细心和耐心,等你把所有可能犯的错都犯一遍,你就是老司机了,计算机就不会“欺负”你,你的程序甚至可以一遍过。


打电子游戏,其实也可以学到计算机知识。比如,有的新游戏需要更多内存,加几个GB的内存条。这时候,你需要升级电脑,你需要了解计算机的硬件知识,内存的容量,计算机性能的优化配置等等。


当然,也不能在玩游戏上花太多时间。如果真想挑战一下自己,可以用JAVASCRIPT自己编一个简单的游戏,比如打乒乓、射击。自己编写游戏的成就感,远远超过玩别人编写的游戏。我们当年在中学学计算机BASIC语言的时候,最感兴趣的练习是编写程序打印出好看的几何图像。



Q6:机器人、人工智能和计算机一样吗?如果不一样,区别在哪里?计算机是不是什么事都能做?计算机有致命的练门吗?


关于机器人、人工智能和计算机这三个概念很容易搞混,因为他们有交叉重叠。


计算机是我们平时用的个人电脑和那些运算速度更快的超级电脑。


人工智能,是利用计算机的运算功能,开发出功能强大的软件程序,来模拟人的思维。阿尔法狗,就是人工智能在下棋方面的应用。我们可以在自动驾驶汽车里用到人工智能来判断路况,让汽车做出类似于人的决断。


机器人是可以自动执行工作的机器装置,里面有计算机,有软件,甚至有人工智能。现在的机器人有几类,有控制精密的机械手,可以做手术,组装汽车,它们侧重在一些机械的功能上,精密、力大、不知疲劳,比人更胜任这份工作。有的机器人做成人的样子,可以陪人聊天,照顾人的生活。


所以这三者虽然是不同的事物,但是有交叉重叠。而未来,我们可能会见到三者合一。就像《终极者》里的施瓦尔辛格演的那位战士,是外观像人的机器人,脑部装了先进的CPU芯片,可以飞速做各种运算,计算出子弹的轨迹,可以比成龙还能打斗,可以和人交流,还能听得懂人说的笑话。


现在的计算机,还只是按照人设计的程序来完成工作,还没有自我意识,不能像人一样有喜怒哀乐的情绪。科幻小说和电影中,有一个称为“奇点”的时刻,在那个突破点,计算机突然有了自我意识,有的电影甚至汇演到机器人会控制地球,控制人类。那这个“奇点”会不会存在,还是有很多争论的,我个人是倾向于存在“奇点”的,只是不知道它什么时候出现。

 

人工智能现在是比较热门的,比如说特斯拉的CEO Elon Musk,搞了一个开放式人工智能,目的是让人工智能对人类产生“正面影响”,在“奇点”到来之前有所准备。一觉醒来,计算机已经控制地球了,这样的事情,想想也挺可怕的。





《计算机大穿越》图片中蕴藏的信息



为了方便大家的理解,我们在图片上除了考虑与文字紧密联系外,还更多地考虑了图片与图片之间的关联,更立体地向大家呈现计算机的世界。


我们知道计算机语言是由0和1组成的,尽管我们输入的是模拟信息,比如图片或是语音,但计算机都会把它转换成数字信息,也就是0和1。这也是计算机中很重要的一步,是我们和计算机能够沟通的桥梁。这一点在我们的全书中可是处处都在提现,比如你有没有注意到这些图的对应关系,或者是里面藏着的秘密呢?



少年时 No.26《计算机大穿越》中《信息的数字“变身”》一文中,P40-41


少年时 No.26《计算机大穿越》中《“1+1=”在电脑里的奇遇》一文中,P20


这两张图,都是比较形象地在讲信息是如何转换成二进制代码。上面这张图我们当初在做的是时候是用四张图拼合而成的:


一个正在用话筒讲话的人


话筒传出的声音(波)


电脑可识别的二进制代码1和0


显示器上显示的图案,播放的声音(仍以一个人拿话筒的图案与第一张图呼应)


虽然看似非常简单,但是却把声波由模拟信号转换成数字信号被电脑识别这一过程表现得淋漓尽致,甚至这里你不用看文字就知道是怎么回事了。


下面这张图则是编译器,但重点是小机器人心中的“方波”,这也是我们特意修改的(原图是条曲线),也和文章中声音数字化这部分的内容相呼应(见下图),不知道你有没有注意到这个细节呢?



把正弦波曲线“分割”成按时间递增或递减的台阶型线段,实现模拟信号的数字化|少年时 No.26《计算机大穿越》中《信息的数字“变身”》一文中,P43


这种细节还有很多,我再透露一个,这也是我们在编辑过程中特意设计的,不知道你有没有发现呢?



少年时 No.26《计算机大穿越》中《“1+1=”在电脑里的奇遇》一文中,P24-25


这一页你肯定不会陌生,也许你第一眼注意到的是这三个可爱的小黄人。我们把小黄人分别被比喻成了非门、与门、或门,这几个门也是CPU里的逻辑控制单元''ALU''的组成部分,是由很多个晶体管组成。


这里我们采用的是图文结合的方式,也就是图穿插在文字中,并与文字相对应,还把各图通过箭头联系在一起,配合着来向大家呈现ALU里的秘密的。晶体管根据自身的特点组成逻辑门电路,门电路通过一定的顺序相互组合,形成加法器等换算器,直到最后的ALU……但是,你有没有注意到还有一个图没有提到:



少年时 No.26《计算机大穿越》中《“1+1=”在电脑里的奇遇》一文中,P25

 

对,就是这张,这可不只是一个装饰图,这里密密麻麻放了很多个小黄人,我们再仔细观察一下,左页讲的都是单独的一个小黄人,也就是单独的一个逻辑门,而右页则是这些逻辑门组成的加法器,没错,这个图也是对应着这个规律的,你可以看成是和左页对应的由很多个小黄人组成的强大的“ALU”或是集成电路。


看完我们的分享后,你会对这期的少年时有更深的认识,会对计算机有更多的兴趣。相信你不再对计算机一窍不通,而是也可以向你身边的小伙伴介绍你这个新朋友。



若想重听本次分享活动,请点击左下角「阅读原文」



- 小多资源共享 -


第一步:关注【小多童书(ID xiaoduoui)】微信公众号。

第二步:点击底部菜单【共享】,小多的共享资源,全在这里~~~~




小多推荐


计算机大穿越 | 少年时 No.26 试读



我们每个人几乎都是计算机的使用者,从一个计算机的使用者走到计算机的内部,看看它是怎么帮助我们实现一个个命令的,实际上这也是一场“穿越”。我们不仅要掌握它的的语言——0和1,还要入乡随俗地跟着它一起“思考”。我们的封面就是围绕“穿越”来进行设计的,看看一个0和1通道后面居住着一个个怎样的小“机器人”。




每一期少年时都有视频


https://v.qq.com/txp/iframe/player.html?vid=d0377fb7qgx&width=500&height=375&auto=0



从一个简单动作了解计算机原理


https://v.qq.com/txp/iframe/player.html?vid=f0381vtrf7q&width=500&height=375&auto=0



少年时No.26计算机大穿越

扫描以下二维码即可购买



一旦

年少的你
邂逅了《少年时》

也许
你会不再
甘于平视这个世界




把前沿科技讲清楚、把科学和人文相连





▼点击「阅读原文」获取分享活动音频文件

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存