03.考场与赛道-Python起步(二)

我们接下来回答一下小马在上一节提到的问题:程序是如何在电脑上运行的?要回答这个问题,我们得先认识一下电脑的三个重要组件:硬盘、内存、CPU(“中央处理器”的英文缩写)。

如果我们把电脑上程序运行的过程与同学们在考场上考试的过程类比起来就非常容易理解了:“硬盘”相当于“试卷”、“内存”相当于“稿纸”、“CPU”则相当于同学们的“大脑”。
在这里插入图片描述

  • 首先,试卷上一道道试题相当于存储在电脑硬盘上的一个个“程序”和“数据”,大家在考场上每开始做一道题时,都会先把这道题相应的“计算方法”(类似如下图的竖式加法计算,相当于电脑的“程序”)和题目中的“参数”(类似加法计算中的两个加数,相当于相应“程序”的“数据”)誊写在稿纸上,让大脑能更好的聚焦,并为接下来的思考和演算做准备;
  • 接着,大脑开始依据稿纸上的“计算方法”和涉及的相关“参数”开始思考、演算,在计算过程中,大脑计算出来的临时数据又会写回到稿纸上(类似竖式加法中求出的个位和、十位和或者进位等),供下一步计算使用,梳理一下整个过程的细节(同学们可以依然类比正在稿纸上进行数学的竖式计算,能够更好的理解):
    在这里插入图片描述
  1. 读取稿纸上当前的计算方法(如:竖式加法计算中的加法)和相关参数/数据(如,需要相加的两个个位数)
  2. 在大脑中根据刚才读取的计算方法对数据进行计算(如:对两个个位数进行求和计算)
  3. 把大脑计算完的结果写回到稿纸上,为下一步计算做准备
  4. 重复上述步骤,读取稿纸上下一步的计算方法和相关参数/数据(比如,继续进行两个十位数的加法计算);直至完成整个计算过程,计算出最终的计算结果
  • 最后,同学们把稿纸上计算出的最终结果写回到试卷上,彻底完成了本道试题的计算,已用完的、作废的稿纸可以扔掉了。然后按照上述方法,开始下一道试题的计算了。

接下来我们对照着看看电脑程序的执行过程:

  • 首先,大家先对“硬盘”来个直观的认识,我们经常看到的电脑上的“C盘”、“D盘”就是电脑的硬盘;再来认识一下“程序”,大家的电脑上一定都安装有“Word软件”吧,日常用来读、写Word文档,还有,大家的电脑上也一般都安装了“360浏览器”吧,用来上网浏览网页,无论是“Word软件”,还是“360浏览器”,都是“程序”,只不过他们的块头比较大而已,属于大型软件;至于说“程序”的“数据”,我们平时用“Word软件”打开的“Word文档”或者新建后保存的“Word文档”都是“Word软件”的“数据”,对于“360浏览器”也一样,无论是我们输入的“网址”(如,“https://www.baidu.com”),还是通过浏览器打开的“网页”,都是“360浏览器”的“数据”。所以,说到底,硬盘就像一个大箩筐,主要装了两类东西:“程序”和其相应的“数据”。

  • 接着,当我们通过鼠标双击,打开一个“Word文档”时,“Word软件”的程序及选中的“Word文档”数据会被加载到“内存”中,为CPU的执行做好准备。“内存”是封装在电脑机箱中的一个硬件设备,我们从外面没法直接感知,但它跟硬盘一样,真实存在,且内存的速度远比硬盘快、价格也比硬盘贵,只有运行的程序及其相关数据才会被加载到内存。内存很像操场上的跑道,只有正在参加跑步比赛的运动员(相当于运行中的程序及其相关数据)才会进入跑道(相当于加载到内存中),比赛完毕后(相当于程序执行完成)则退出跑道(内存中该程序及其相关数据都会被清除),由其他继续参赛的运动员(相当于另外新执行的程序及其相关数据)进入跑道。所以说,内存是一个为CPU提供快速处理(读取程序指令、读写相关数据)的临时“稿纸”空间,该程序处理完了,则其占据的“稿纸”空间会被擦除,供其他程序使用,另外,需要说明的是,内存还有一点与硬盘不一样的地方,因为内存只是临时“稿纸”空间,不像硬盘需要对文件(程序文件及程序数据文件)进行永久存储,所以,电脑关机后,整个内存中的所有“程序”及“数据”都被清空了,无法存储任何东西。
    在这里插入图片描述

  • 再来说一下CPU的执行过程,上面谈到的内存跟硬盘一样,只有基本的存储功能(存储程序指令和数据,程序是由一条条的指令组成),没有任何“思考”和计算能力,只有CPU才有这个能力。再回到上一节中的三条程序指令,如下所示,这个仅三行的小程序运行起来后,除了这三条程序指令会依次存放在内存中外,内存中还会存在着用于存放数据的三个小空间,分别用于存放x、y及z。接着,CPU从第1行指令开始执行:生成1,并把1写入到内存中存放x的地方,第2行:生成2,并把2写入到内存中存放y的地方,第3行:从内存中读取两个加数x和y的值,然后把两者相加,然后把结果写入到内存中存放z的地方。以上都运行完毕后,程序退出,从内存中清除。

x = 1
y = 2
z = x + y
小马:就这么被清除了?那么x、y及z的值不是都丢了吗?
老马:问得好,是这样的。很多内存中存储的、临时的、中间数据确实没有用,就像我们平时打的草稿一样,在计算完毕就可以丢掉了。但对于有用的数据,则需要我们写程序指令做好处理,比如,在电脑屏幕上输出直接显示给用户,或者写入到硬盘的文件中,做好了这些善后,就不怕程序退出后内存被清空了。
小马:明白了。老爸,再来一个更复杂点的程序吧,比如,电脑不是运行得很快嘛,让它从1加2、加3,一直加到100,这个程序该怎么写啊?
老马:好,咱们就以这个为例,来一点挑战的,程序代码见下面,但下一节再具体给你讲解原理,这一节就讲到这。
sum = 0
for i in range(1,101):
  sum = sum + i
print("sum = ",sum)

运行的结果输出:
sum = 5050

参考: “老马带小马 一块学Python” 之 “编程起步(二)”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值