格物致知、诚意正心
编程,是让计算机为解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。 随计算机语言的种类非常多,可分成机器语言,汇编语言,高级语言三大类。计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。程序设计语言编写的源程序转换到机器目标程序有:解释方式和编译方式两种
和我们日常使用的中文、英语一样, 编程语言也是一门用于沟通的语言.
只不过”编程语言”是和计算机沟通的语言.
而”程序”, 就是使用计算机能够理解的语言书写的一连串命令.
而“编程”就是我们为了完成某项任务, 将解决问题的步骤, 用计算机能够理解的语言写成指令, 这就是”编程”. 而后, 计算机会根据这些指令一步步执行, 最后完成任务.
所以, 我们可以看到, “编程”涉及到 3 个组成部分:
我们可以把”程序”想象成”菜谱”. 下面, 我们以”煎鸡蛋”为例: 假设我们不会炒菜, 然后获得了一份煎鸡蛋的菜谱, 而后, 我们就可以照着这个菜谱一步步去操作, 最后做出一份香喷喷的煎蛋.
在这里, “菜谱”就是”程序”, 有人制作了这个”程序”, 我们呢, 只需要按照这个”程序”执行, 最终获得程序运行的结果 — 一份香喷喷的煎蛋.
不过稍等一下, 可能有人会问: 尽管有菜谱, 我们还是可能把煎蛋搞砸啊:
那么, 如果是由计算机来执行这个菜谱, 如何让它不搞砸?
假设由我们来编写菜谱, 让计算机来煎蛋. 是否也会面对上面的 3 个问题?
计算机不存在第 1 个问题. 因为计算机没有思想没有情绪, 它只会不折不扣地执行指令.
第 2 个问题涉及到”解决问题的能力”.
我们不要把”解决问题的能力”想像得太过高深, 其实我们成人每一天都在解决问题. 比如, 考虑如何完成工作, 考虑如何让孩子上好学校… 这些都是在解决问题. 所以说大家对于这部分有充足的练习, 能力是及格的. 我们的瓶颈在于第 3 个问题.
这是我们现阶段的瓶颈 — 尽管我们有解决问题的办法, 但是还不知道如何按照计算机能够理解的语言去描述步骤.
那么, 如何解决这个瓶颈?
现在, 我们已经成功把”编程的难点”缩小到”如何准确描述步骤”这个问题上.
那么, 如何准确描述步骤呢:
学习”计算机语言的语法”是今后的学习内容, 所以我们暂时跳过, 先看看如何把步骤抽象成流程.
我们生活工作中的大部分任务, 都可以抽象成”流程图”.
而所有的”流程图”都可以使用 3 个基本结构(”顺序”、”判断选择”、”循环”)描述清楚, 区别只是嵌套组合的复杂程度:
上图中的每种流程结构都是"单入口单出口(Single Entry, Single, Exit)", 这可以让嵌套组合时只有唯一的输入和输出, 从而保证井井有条, 不会混乱
以日常生活来举例:
从上文中, 我们可以发现, 把”步骤”抽象成”流程”也并不难, 并不会成为我们学习编程的障碍.
上面我们分析了”编程”的 3 个组成部分, 这些分析可以帮助我们回答很多问题:
Q: 我是否适合学习编程?A:如果你是个普通人, 心智是正常的, 思路是清晰的, 那么学习编程就没有问题. 我们需要额外学习的只是计算机语言, 然后把你的思考转换成用这个语言来描述就可以了.
Q: 我的孩子是否适合学习编程?A: 那么他现在是否有”顺序、判断、循环”的逻辑概念? 他是否能解决一些小的问题, 比如走迷宫, 比如按照图纸搭建乐高.
Q: 没有基础的孩子, 如何为学习编程做好准备?A: 先练习思考问题的能力, 掌握”顺序、判断、循环”的逻辑概念, 有了这两项就具备学习编程的前提.
Q: 编程有什么好处?A: 最直接的, 锻炼解决问题和逻辑思考的能力, 锻炼借助计算机帮助自己解决问题地能力.
Q: 编程需要学习什么语言?A: 语言不是关键, 因为所有的编程语言都是可以让计算机理解的. 那么对于孩子来说, 挑选符合孩子头脑发展水平的就可以.
您的邮箱地址不会被公开。 必填项已用 * 标注
评论 *
显示名称 *
邮箱 *
网站
在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。