元胞自动机的头像

编程导论 :: 1 你管这叫程序?

1 你管这叫程序?
6
1 你管这叫程序?
1.1 生活中的程序
1.1 生活中的程序
1.2 程序的概念
1.2 程序的概念
1.3 程序的执行者
1.3 程序的执行者
1.4 执行的失败
1.4 执行的失败
1.5 执行的保障
1.5 执行的保障
1.6 电脑程序
1.6 电脑程序
常见疑问
常见疑问
承诺解答
承诺解答
无处不在
无处不在
老王的短信
老王的短信
青椒炒肉
青椒炒肉
大象进冰箱
大象进冰箱
广义的程序
广义的程序
程序的概念
程序的概念
作息时间表
作息时间表
就诊流程图
就诊流程图
老师的题目
老师的题目
程序和计划
程序和计划
举例程序
举例程序
执行难度
执行难度
执行者
执行者
小明答题
小明答题
老王接孩子
老王接孩子
员工工作
员工工作
举例执行者
举例执行者
执行会失败
执行会失败
不懂加法
不懂加法
买错面包
买错面包
无辜的狗
无辜的狗
无能的手
无能的手
编写一个程序
编写一个程序
执行的保障
执行的保障
改造执行者
改造执行者
教会加法
教会加法
写明步骤
写明步骤
塞象牙步骤
塞象牙步骤
执行环境
执行环境
小明的身体
小明的身体
硬件和操作系统
硬件和操作系统
执行中的程序
执行中的程序
电脑程序
电脑程序
计算机程序
计算机程序
计算1+1
计算1+1
应用软件
应用软件
举例软件
举例软件
暂告一段落
暂告一段落
素材来源
素材来源
单集封面
单集封面

编程导论 :: 1 你管这叫程序?

2022-08-29
70 次观看
29 讨论
元胞自动机的头像
元胞自动机
粉丝:5
主题:7
描述:13
例子:19
类比:1
验证:4
其他:4
字数:3783

编程导论 :: 1 你管这叫程序?

2022-08-29
70 次观看
29 讨论
元胞自动机的头像
元胞自动机
粉丝:5
元胞自动机的头像
元胞自动机
粉丝:5
主题:7
描述:13
例子:19
类比:1
验证:4
其他:4
字数:3783

1 你管这叫程序?

疑问 常见疑问

很多人都想学习编程,但是不知道从何开始?

而且害怕难度会很大,感觉对数学的要求也很高?

有的人以前学过编程却学不会,到底应该怎么学习?

承诺 承诺解答 常见疑问

上述的疑问,都能在这里得到解答。

1.1 生活中的程序

无处不在

「编程」就是「编写程序」,虽然名字听起来很专业,但其实在生活中,程序是无处不在的,而且几乎人人都编写过程序,只是很多人并不知道什么是程序,所以没有意识到它们的存在。

老王的短信 无处不在

例如,老王的手机收到一条信息,是他老婆发来的。

信息的内容是:下班后先去学校接一下孩子,再去超市买十五个鸡蛋和一袋面包,最后领一下快递。

青椒炒肉 无处不在

例如,青椒炒肉的做法是:

  1. 先炒五花肉。

  2. 炒好的五花肉出锅,然后再炒青椒。

  3. 最后把五花肉倒回锅里混炒,并加入盐和其他调料。

大象进冰箱 无处不在

例如,把大象装进冰箱的步骤是:把冰箱门打开,把大象放进去,关上冰箱门。

广义的程序 无处不在

没错,上述的例子的确都是程序,不过它们不是电脑程序,而是「广义上的程序」。

可以看到它们都描述了「特定的目标」和具体的先后步骤,但后续会知道,一个程序并不一定要有具体的步骤。

1.2 程序的概念

程序的概念

在广义上,程序的概念可以定义为:表达了「要实现的特定目标」的相关信息。

按照这个定义,我们可以回想起生活中很多常见的程序。

作息时间表 程序的概念

例如,有的人会编写一个作息时间表,列出每天要做的事情,

什么时候起床,什么时候吃饭,什么时候睡觉……并按时完成。

这里的「作息时间表」就是一个程序,「每天要做的事情」就是要实现的特定目标。

就诊流程图 程序的概念

例如,医院的门诊大厅一般会提供就诊流程图,告知人们按照挂号、候诊、就诊、缴费、取药、治疗、复查……等等顺序完成就诊。

这里的「就诊流程图」就是一个程序,「完成就诊」就是要实现的特定目标。

老师的题目 程序的概念

例如,数学老师在黑板上出题:计算1+1的结果。

这里的「题目」也是一个程序,虽然没有写明具体步骤,但是表达出了要「计算1+1的结果」这样的一个目标。

程序和计划

从上述的例子可以发现,「程序」和「计划」的意思有些类似,「程序」这个词的英文「program也的确有「计划」的含义,例如「阿波罗计划」的英文就是「Apollo program」,可以直译为「阿波罗程序」。总之程序的概念就是这么简单,不要想得很复杂,把「程序」等价于「计划」也没什么问题。

举例程序

请举出一些生活中的「程序」的例子。

1.3 程序的执行者

执行难度

从程序的概念可以得知,编写一个程序并不难,只需要写出「要实现的特定目标」是什么即可,难点在于如何才能执行程序、从而准确实现程序中的「特定的目标」。

由于程序本身只是静态的信息,无法自己行动,这就涉及到一个问题——由谁来实际行动?

执行者

我们可以把实际行动、尝试去实现程序目标的那些事物称为「程序的执行者」,简称为「执行者」,要注意的是,程序的执行者可以是人或动物、也可以是机器或设备、甚至可以是某种物质。

小明答题 执行者

例如,数学老师在黑板上出题:计算1+1的结果,并让学生小明回答。

小明算出了正确答案,小明就是「计算1+1的结果」这个程序的「执行者」。

老王接孩子 执行者

例如,老王按照收到的信息,先后完成了接孩子、买东西等事情,老王就是这些程序的「执行者」

员工工作 执行者

例如,公司的员工按照工作计划进行工作。

员工就是「工作计划」这个程序的「执行者」。

举例执行者

请举出一些生活中的「程序的执行者」的例子。

1.4 执行的失败

执行会失败

即使有执行者,也不一定就能保证实现程序的目标,因为执行者自身或客观条件有可能存在某些局限性、也有可能因为程序缺少关键信息导致执行者对目标的细节产生误解,最终无法准确执行程序。

不懂加法 执行会失败

例如,如果学生小明根本不知道加法和加号是什么意思,甚至连数字都不认识,那么对于「计算1+1的结果」这个程序,无法保证小明能够准确执行。

买错面包 执行会失败

例如,老王发现超市里有很多种面包,不知道应该买哪种,而且此时老婆也不知为何联系不上,孩子也不知道应该买哪种面包,最后可能随便买了一种面包,而恰好就不是老婆想要的面包,这个程序就执行失败了。

无辜的狗 执行会失败

例如,如果没有提前把象牙塞进狗嘴里,狗是太不可能吐出象牙的,那么「狗嘴吐象牙」这个程序就有可能执行失败。

无能的手 执行会失败

例如,从物理原理上来说,手掌里不太可能凭空产生火球,那么「手掌里发出火球」这个程序就有可能执行失败。

编写一个程序

请编写一个程序,并思考它有没有执行失败的可能,为什么可能会失败?

1.5 执行的保障

执行的保障

严格来说,没法百分百保障程序的准确执行,但是我们可以在程序执行前,尽可能多做一些措施,从而尽量保障程序的执行,主要措施如下:

改造执行者 执行的保障

我们可以改造和强化执行者的能力,从而能够执行程序。

教会加法 改造执行者

例如,学生小明不知道加法和加号是什么意思,就无法执行「计算1+1的结果」,我们可以先教会小明什么是加法,然后再让小明去执行这个程序。

写明步骤 执行的保障

原理可行的前提下,我们可以再编写一个带有「具体步骤」的第二个程序,用来辅助第一个程序的执行。

塞象牙步骤 写明步骤

例如,可以写出「给狗嘴里塞象牙」的具体步骤:把狗嘴打开,把象牙塞进去,关上狗嘴。

然后让小明执行「给狗嘴里塞象牙」,然后让狗执行「狗嘴吐象牙」。

执行环境

虽然说程序是由执行者来执行,但很多时候我们所说的执行者本质上并不是真正的执行者,而是一个程序与真正执行者之间的中介,中介的作用是辅助真正的执行者,相当于代理了真正的执行者的一部分工作,我们可以称之为「执行者代理」或者「执行者接口」,「真正的执行者」和「执行者接口」共同构成了「程序的执行环境」,简称为「执行环境」。

小明的身体 执行环境

例如,学生小明在执行「计算1+1的结果」的时候,其实真正的执行者是小明的大脑某个部分的「神经细胞群」,

而小明的其他身体部分所做的工作则是把程序从黑板传输给大脑,并将程序的执行结果传输回黑板。

那么「小明的部分身体」实际上也是中介,所以我们可以认为小明的部分身体就是一个「执行者接口」,而不是真正的执行者,小明的部分身体和小明的大脑共同构成了「程序的执行环境」,不过小明的部分身体和大脑联系紧密,而且物理结构上相互融合,在不需要那么严谨的时候,把「小明」这个整体称为「执行者」,逻辑上也没问题。

硬件和操作系统 执行环境

例如,我们在个人电脑上执行「电脑程序」的时候,其实真正的执行者是「CPU或相关处理器」,但我们并不是直接把程序交给处理器,而是通过键盘或鼠标去操作电脑,继而委托操作系统去调用程序,最终在处理器上执行。

那么「鼠标键盘」、「电脑的部分硬件」、「操作系统」实际上都是中介,也都是「执行者接口」,可以看出「接口」也可以和「接口」相互联系,它们和「CPU或相关处理器」共同构成了「程序的执行环境」,后续正式学习电脑程序的时候,「执行环境」这个概念会被反复用到。

执行中的程序 执行环境

要注意的是,「操作系统」自己就是一个程序,但程序只是「信息」,不能自己行动,必须依赖执行者,所以严格来说,上述的操作系统是「执行中的操作系统」,它自身已经被CPU执行了,由此可见,「执行中的程序」本身也可以成为程序的执行环境的一部分。

执行中的程序是程序的一种特殊的存在状态,它能够改变执行者的能力,这里先不深入探讨,以后再详细阐述。

1.6 电脑程序

电脑程序

专门为电脑编写的程序就叫做电脑程序,「电脑」就是「电脑程序」的「执行环境」,但是「电脑」只是一个俗称,而且一般指的是个人电脑。

计算机程序

在专业角度,电脑的范畴非常广泛,例如笔记本电脑、手机、平板、计算器、服务器、汽车发动机控制器、洗衣机控制器等等……都是电脑,而且专业上统称为「计算机系统」,简称为「计算机」,后续我们全面使用「计算机」这个专业词语来代替「电脑」,那么专门为计算机编写的程序就叫做「计算机程序」,「计算机系统」就是计算机程序的「执行环境」。

计算1+1 计算机程序

我们来看一个计算机程序的例子,在操作系统的桌面上新建一个纯文本文件(例如.txt文件),并编辑输入以下内容:

<script>
document.write(1+1)
</script>

然后把文件名的后缀.txt改成.html,并打开文件。

可以看到,浏览器被打开,并显示了结果:2。

我们成功地编写了一个计算机程序,它实现了「计算1+1的结果」的目标,它的执行环境主要是由计算机硬件、操作系统、浏览器三者组成,但是为了方便交流,我们可以省略计算机硬件和操作系统,就说执行环境是浏览器。

应用软件 计算机程序

我们常用的应用软件,例如浏览器、办公软件、各类手机App、专业设计软件、工控软件、游戏软件,它们最核心的部分都是计算机程序,都能实现特定的目标,而它们的执行环境是操作系统(这里省略了计算机硬件)。

举例软件

请举出一些自己用过的软件的例子。

尾声 暂告一段落

至此,我们通过大量的篇幅,深入地了解了程序的相关概念,虽然这只是学习编程的预备课,但是为今后的学习打下了坚实的基础,接下来我们将正式开始学习计算机编程。

素材 素材来源

视频和音乐素材来源:www.videvo.net

讨论
随记