理解编程语言只需四个词-编程知识体系介绍(带python及scratch案例)

学习编程有时候会给人一种高深莫测的错觉,容易让人“敬而远之”。事实并非如此,学习编程其实就是学习一种语言——一种与机器对话的语言。编程语言与人类语言有着很多相似的东西,只要你懂了机器的语言构成,学习编程的过程就像结交一个好朋友。 而你编写程序的过程就像与老朋友聊天一样有趣。这章我们就先从整体上认识一下编程语言的体系,很多编程语言都符合这个标准。

1. 编程体系概述

很多编程语言的主体部分都可以概括为四个部分:数据、运算、控制和执行。Scratch和Python也不例外。

通过设置或者从外界侦测获得数据,然后对获得数据进行运算,根据运算结果用条件判断和循环等方式进行控制,最后执行相应的程序,实现相应的功能或效果,如图4.1所示。

编程体系示意图

比如从Scratch的代码模块分类中我们可以看到数据、运算、控制三个模块;而运动、外观、画笔等模块则可以归为“执行”部分;“侦测”模块是获得数据的一种方式;“事件”是综合运用了数据、运算、控制的一种方式;“更多模块”主要是用函数进行封装,是提高效率的方法。Python与Scratch类似,Scratch的方法都能在Python中找到对应的实现方式。

后面我们用几个案例来说明一下这个编程系统,让大家加深理解。

1.1 案例一:自动驾驶汽车

假设我们设计一辆能够自动驾驶的汽车,能够根据周围的环境自动调整速度和方向,完成驾驶。这个过程就用到了我们上述的编程系统。

数据部分:侦测与前后左右车辆或障碍物的距离,获得数据;提取当前的速度和方向等数据;

运算部分:根据需求对获得的数据进行处理;

控制部分:根据运算结果制定控制计划,如根据车距合理提高或降低行驶速度;根据计算结果判读是否具备改变行驶方向的条件。

执行部分:根据控制计划作出实际的操作,达到最终的结果。

1.2 案例二:我们完成一个愿望

我们完成一个愿望的过程,其实也是在运行上述编程系统,只不过我们没有发觉而已。比如我们要完成筹备一次旅行的的过程。这个过程涉及很多内容:身体条件准备、财务条件准备、生活及工作的安排、出行计划的制定、出行方式的选择等。上述的每一个部分都在默默的运行上述系统,为了简单说明问题,我们只提取其中的“财务准备”来说明问题。

数据部分:通过各种途径了解到某地旅游的各种数据:最佳旅游天数、日均消费额、各个消费项目、最佳出行日期等数据。

运算部分:对获得的数据进行运算,总共需要多少资金,还有多长时间进行准备,每天需要攒钱多少等。

控制部分:根据运算结果制定自己的准备计划,如每天需获得多少资金,通过哪些项目进行节约资金或获得资金。

执行部分:严格执行上面制定的计划并最终获得

1.3 案例三:我们的身体本身

让我们惊讶的是我们的身体本身也在默默地按照编程系统不停运行。身体的触觉、听觉、视觉、嗅觉、痛觉等系统都符合编程系统的设置。这里我们以视觉为例进行说明。

数据部分:我们通过各个感觉器官获得外部的各种刺激,不一定折算成我们熟悉的阿拉伯数值,但一定以某种“数据”形式传递给我们的大脑。例如我们感受到的光的强度。

运算部分:我们的大脑根据获得的“数据”进行各种精密运算,得到我们身体需要的“数据”。例如我们将获得的光的强度的数据传递给大脑,大脑将这个强度数据与眼睛能够承受的光强度数据进行比较运算。

控制部分:根据大脑的运算结果进行判读,形成对器官的不同指令。例如根据运算结果制定眼睛睁眼、眯眼、闭眼的不同指令。

执行部分:我们的身体根据“控制”部分的指令产生相应的反应或动作。例如执行大脑对眼睛额指令,当光线强的时候,眼睛按照指令进行眯眼或闭眼。

2 数据

中国古代哲学(比如《易经》)认为世间万物可以从“象、数、理”三个维度进行描述,这是有一定道理的。比如说我们日常用品,你能看到这个东西,说明他有一定的具象,同时你也可以从长宽高、重量、方位等数据进行描述,同时,这个东西为什么是这个样子(“象”),为什么是这个数据(“数”)一定有他存在的道理,及所谓的“理”。 所以,从某种层面上说我们的世界是一个“数据”的世界,我们在这里讨论的“编程”更是一个离不开数据的小世界,计算机最底层的代码只不过是在处理“0”与“1”两个数字。

在编程语言中数据,一部分由程序捕获,一部分由编程者给定。需要我们注意的是,这里的数据不仅指数学中所指的各个数字,也包括字符串、布尔值等其他内容。更具体的内容,我们会在下面的章节中详细学习。

3 运算

运算指的是对各类数据进行相应的处理,这里既包括我们传统意义上的加减乘除、取模、求余、比较大小等数据运算,也包括或、且、非等逻辑运算。

逻辑运算在程序设计中与数据运算一样重要。特别是在条件判断的控制部分,发挥着举足轻重的作用。就像三个人投票决定某件事:两种相反的意见的关系互为“非”,如“同意”与“不同意”;几个人只要有一人同意即可通过,几个人的意见之间的关系就是“或”; 几个人都同意才可以通过,不同人的意见之间的关系为“且”。

4 控制

控制指根据运算的结果调整、制定相应的指令或计划。主要包括两个方面:条件控制与循环控制。

条件控制就像一个“看门人”,控制符合什么样条件的人才能进入;条件控制也可以是“谈判者”,守住心中的底线,在什么样的一个数值范围内可以接受条件并完成交易。

循环控制就像一个喜欢动脑的“机灵鬼儿”,最不想干的就一遍又一遍地反复做同样的工作,于是他将问题简化,制定了一个自动程序,一按按钮,就可以翘着二郎腿晒太阳去了。

在接下来的章节中我们会详细了解这些“看门人”、“谈判者”和“机灵鬼儿”。

5 执行

“执行”部分的语句最为丰富。是直接呈现最终结果的命令。在各种编程语言中,执行部分的语句也是种类和数量最多的部分。如在Scratch系统自带的代码分类中的运动、外观、声音、画笔等几个部分都可以归结为“执行”部分。

这就像一个企业的人事结构,出主意提想法的是少数人,真正将想法实现,变为真正产品的的是占比最多的专业人才,这些专业人才在执行任务的过程中也需要相互合作。在企业里,专业人才就相当于编程系统中的“执行部分”。编程的过程与管理一个企业出奇相似,如果我们从学习编程的过程中领悟了管理思维,这算是额外收获。

6 提高效率

在本书的后面章节,我们还会学到提高编程效率的两大利器:“函数式编程”和“面向对象编程”。大家首先要明白一点:这两个利器非常好用、对提高编程效率的作用无可替代,但是对于编程实现的功能来说,并没有添加新的东西。也就是说我们完全可以不通过这两大利器完成相应的功能,所以大家学习的时候不要有心理压力,我们只是换了一种更高效的程序编写方式。也许你的心中还有疑虑,既然可以选择不用,为什么还要学习他们?相信你看了后面章节的案例就会有了答案:太方便太强大了,没有理由不用。

7 Scratch案例——无人驾驶汽车

详见链接 Scratch案例——无人驾驶汽车

8 Python案例——喝墨水的小乌龟

详见链接 Python案例——喝墨水的小乌龟

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

十本书教你从Pythoner通往Pythonista

1、Python基础教程 本书是经典教程的全新改版,作者根据Python 3.0版本的种种变化,全面改写了书中内容,做到既能“瞻前”也能“顾后”。本书层次鲜明、...

42510
来自专栏PHP在线

为什么谷歌要执行严格的代码编写规范

原文出处: Mark CC 译文出处:外刊IT评论 本文是《Google是如何做代码审查的?》的续篇 我们在谷歌所做事情中另外一个让我感到异常有效、有用...

3256
来自专栏用户2442861的专栏

2014.4 阿里实习生招聘面试经历

  原文  http://blog.csdn.net/don_lvsml/article/details/24586091

1393
来自专栏北京马哥教育

所有人都说Python 简单易学,为何我觉得难?

记得刚学Python的时候,几乎所有人都说Python 简单易学,而对于编程零基础,只掌握Word和Excel的人来说,感觉真的好难。 学习之前网上的教材看了...

4877
来自专栏PPV课数据科学社区

如果大数据是任何东西……If Big Data Is Anything at All, This Is It

除了我们几个人是第一次听说过“大数据”这个词,我们是在信息技术厂商开着的营销活动以宣传自己的产品和服务的背景下听到它的。正是这种营销活动使得“大数据”这个词取得...

3248
来自专栏阿杜的世界

持续学习杂谈:阅读前言IT行业的知识结构最近的阅读列表阅读经验

最近在阅读Bob大叔的新书——《Clean Architecture》(需要的同学可以在公众号后台回复数字1获取),感觉字字珠玑,值得反复阅读&品味。关于系统设...

4291
来自专栏程序员互动联盟

程序员必看的十部电影

不同的行业领域中很多时候都分享着共同的思想和理念。比如,大量的计算机编程中涉及到的概念都被运用到了电影里。有些概念出现在电影里后变得如此之酷,甚至反过来能帮助我...

3685
来自专栏鸿的学习笔记

关于最近读的书的一些瞎扯

最近两个月是真的忙,忙的公众号都没有坚持更新了。现在我又回来了。在此准备瞎扯几句,顺便推荐下自己的最近读过的书,

802
来自专栏java一日一条

如何避免软件工程中最昂贵错误的发生

编者按:影响软件工程进度的原因有很多种,而代码重写无疑是最耗费时间的变更之一。那么重写的时候需要注意哪些细节才能把资源开销控制到最低或可接受的程度呢?本文作者E...

652
来自专栏Java架构师学习

优秀程序员都具备的五点特性,这些你都有吗?一、 编程能力二、面向对象思维能力三、软实力(学习能力,沟通能力,表达能力)四、利用工具的能力五、创造力(解决问题的能力)

作为一个在it行业混的老鸟,一直有一个疑虑:自己究竟要做到什么程度才算得上优秀?一个优秀程序员(指工资比一般程序员高的那种)最重要的能力是什么?写代码的最高境界...

1072

扫码关注云+社区

领取腾讯云代金券