用户名  找回密码
 立即注册
注册 登录
×
热搜: 活动 交友 discuz
查看: 101|回复: 7

什么是编程?

[复制链接]

3

主题

7

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2022-9-20 12:02:23 | 显示全部楼层 |阅读模式
什么是编程?

很多人觉得编程是门高深莫测的学问, 担心自己学不来. 实际上, 编程虽然不是随便能学会的技能, 但是也没有那么难. 因为, 普通人已经具备了很多编程需要的基础. 为什么这么说?
1. 编程也是一门语言

和我们日常使用的中文、英语一样, 编程语言也是一门用于沟通的语言.
只不过"编程语言"是和计算机沟通的语言.
而"程序", 就是使用计算机能够理解的语言书写的一连串命令.
"编程"就是我们为了完成某项任务, 将解决问题的步骤, 用计算机能够理解的语言写成指令, 这就是"编程". 而后, 计算机会根据这些指令一步步执行, 最后完成任务.


所以, 我们可以看到, "编程"涉及到 3 个组成部分:

  • 我们, 负责思考解决问题的步骤
  • 我们, 负责使用计算机能够理解的语言, 来描述解决步骤
  • 计算机, 负责执行这些步骤
我们可以把"程序"想象成"菜谱". 下面, 我们以"煎鸡蛋"为例: ​ 假设我们不会炒菜, 然后获得了一份煎鸡蛋的菜谱, 而后, 我们就可以照着这个菜谱一步步去操作, 最后做出一份香喷喷的煎蛋.


在这里, "菜谱"就是"程序", 有人制作了这个"程序", 我们呢, 只需要按照这个"程序"执行, 最终获得程序运行的结果 -- 一份香喷喷的煎蛋.
不过稍等一下, 可能有人会问: 尽管有菜谱, 我们还是可能把煎蛋搞砸啊:

  • 可能我们没有按照菜谱煎蛋, 导致失败;
  • 可能菜谱描述的煎蛋方法有问题;
  • 可能煎蛋方法没问题, 但是描述有歧义;
那么, 如果是由计算机来执行这个菜谱, 如何让它不搞砸?

<hr/>2. 如果让计算机煎鸡蛋

假设由我们来编写菜谱, 让计算机来煎蛋. 是否也会面对上面的 3 个问题?
对于第 1 个问题:

计算机不存在这个问题. 因为计算机没有思想没有情绪, 它只会不折不扣地执行指令.
对于第 2 个问题:

这个问题涉及到"解决问题的能力".
我们不要把"解决问题的能力"想像得太过高深, 其实我们成人每一天都在解决问题. 比如, 考虑如何完成工作、考虑如何安排旅行线路、考虑如何让孩子上好学校... 这些都是在解决问题. 所以说大家对于这部分有充足的练习, 能力是及格的. 我们的瓶颈在于第 3 个问题.
对于第 3 个问题:

这是我们现阶段的瓶颈 -- 尽管我们有解决问题的办法, 但是还不知道如何按照计算机能够理解的语言去描述步骤.
那么, 如何解决这个瓶颈?
如何解决第 3 个问题?

现在, 我们已经成功把"编程的难点"缩小到"如何准确描述步骤"这个问题上.
那么, 如何准确描述步骤呢:

  • 把解决问题的"步骤"抽象成"流程"
  • 按照"计算机语言的语法"​去描述这个"流程"
​学习"计算机语言的语法"是今后的学习内容, 所以我们暂且跳过, 先看看如何把步骤抽象成流程.

<hr/>3. 把"步骤"抽象成"流程"

我们生活工作中的大部分任务, 都可以抽象成"流程图".
所有的"流程图"都可以使用 3 个基本结构("顺序"、"判断"、"循环")描述清楚, 区别只是嵌套组合的复杂程度:


以日常生活来举例:

  • 早晨起床:

  • 先刷牙, 再洗脸 -- "顺序"流程
  • 吃饭, 一直吃到饱 -- "循环"流程
  • 查看天气预报, 决定是否带雨伞 -- "判断"流程


  • 到达公司:

  • 碰到不一样的人, 然后打称呼也不一样 -- "判断"流程
  • 不断碰到人, 不断打招呼 -- "循环"流程
  • 打招呼时会先跟最近的人打招呼, 再和比较远的人打招呼 -- "顺序"流程
从你萌生让孩子学习编程的念头, 到上网搜索查询, 到看到这篇文章, 到思考判断并给孩子制定学习计划, 也是一种"程序", 期间就有先后顺序有判断选择也有反复循环
所以, 我们可以发现, 把"步骤"抽象成"流程"也并不难, 并不会成为我们学习编程的障碍.

<hr/>4. 结论

上面我们分析了"编程"的 3 个组成部分, 这些分析可以帮助我们回答很多问题:
Q: 我是否适合学习编程?
A: 如果你是个普通人, 心智是正常的, 思路是清晰的, 那么学习编程就没有问题. 我们需要额外学习的只是和计算机沟通的语言, 然后把你的思考转换成用这个语言来描述就可以了.
Q: 我的孩子是否适合学习编程?
A: 那么他现在是否有"顺序、判断、循环"的逻辑概念? 他是否能解决一些小的问题, 比如走迷宫, 比如按照图纸搭建乐高.
Q: 没有基础的孩子, 如何为学习编程做好准备?
A: 可以先练习逻辑思考问题能力, 掌握"顺序、判断、循环"的基本概念, 有了这两项就具备学习编程的前提.
Q: 编程有什么好处?
A: 最直接的, 锻炼解决问题和逻辑思考的能力, 锻炼借助计算机帮助自己解决问题的能力. 关于编程的好处, 更多的讨论见这里:
Q: 编程需要学习什么语言?
A: 语言并不是关键, 因为所有的编程语言都是可以让计算机理解的. 那么对于孩子来说, 挑选符合孩子头脑发展水平的就可以 ( 对于小学生来说, 推荐学习 Scratch; 对于初高中学生来说, 推荐学习 Python; 对于有编程兴趣和天赋的孩子, 在小学高年级就可以开始接触 C++, 因为 C++ 是信息学奥赛的御用编程语言 ). 更过的讨论见这里:
回复

举报

0

主题

6

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-20 12:02:47 | 显示全部楼层
终于清楚啦
回复

举报

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-20 12:03:04 | 显示全部楼层
言简意赅,由浅入深。一个连编程,连自己在到底在做什么的程序员不是好程序员,一下子豁然开朗了。[爱]
回复

举报

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-20 12:03:22 | 显示全部楼层
编程就是一个中介。由人类先把自然语言转换成编程语言,再由编程语言通过一系列环节转换到计算机的物理层面。但编程并不能帮助人更好的认识世界,它只会让一个正常人开始像机器一样思考。是一种降维。在现实世界中解决问题仅靠编程思维是不够的。
回复

举报

1

主题

4

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-9-20 12:03:41 | 显示全部楼层
编程不就是制作程序吗
回复

举报

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-9-20 12:04:38 | 显示全部楼层
【点击领取】少儿编程试听课☞☞☞:t.cn/A6InLucb
推荐这家少儿编程专注于6-16岁在线青少儿编程教学和思维训练,被CCF评为中国青少儿编程培训师资认证组织委员会常务委员单位。
回复

举报

1

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-20 12:04:44 | 显示全部楼层
非常认同. 解决问题仅靠编程思维是远远不够的. 之所以学习像计算机一样思考, 是为了和计算机沟通, 利用计算机这种算力巨大、不知疲倦的工具来帮助我们从流程化的重复工作中解放出来, 从而有更多的脑力和时间, 去发挥人脑的优势
回复

举报

0

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2025-3-23 14:34:40 | 显示全部楼层
前排顶,很好!
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 黑客通

GMT+8, 2025-4-7 21:47 , Processed in 0.184879 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表