Chapter 1: What is Computational Thinking? / 第一章:什么是计算思维?
第一章:什么是计算思维?
你有没有想过,当你整理自己的房间时,其实正在进行一项超级英雄般的任务?或者当你在为生日派对做准备时,你的大脑正在像一台精密的计算机一样运转?这听起来可能有点疯狂,但请相信我——你比自己以为的更像一个计算机天才!
让我们从一个简单的场景开始。想象一下今天是周六早上,你决定整理自己的房间。这个任务看起来很简单,对吧?但是如果你仔细想想,整理房间其实包含了无数个小决定:衣服应该叠好放在衣柜里还是挂起来?书架上的书是按大小排列还是按颜色?玩具应该收到哪个箱子里?垃圾应该扔到哪个垃圾桶?
就在你思考这些问题的时候,你的大脑正在做着一些非常特别的事情——这些事情甚至连世界上最先进的超级计算机都会感到佩服。而这些事情有一个专门的名字,叫做计算思维(Computational Thinking)。
当你还是个孩子的时候,你就已经是计算机天才了
听起来是不是很不可思议?让我来解释一下。我曾经采访过一位软件工程师,他告诉我,他小时候最喜欢做的事情就是帮妈妈列购物清单。“我会把所有要买的东西写下来,然后想想应该按照什么顺序逛超市,”他说,“是先买新鲜的水果还是先买冷冻食品?怎样走才能少走弯路?”他当时只有八岁,完全不知道自己在做什么——他只是在玩,只是在帮家里的忙。但他做的事情,其实正是程序员每天都在做的事情。
计算思维并不是什么神秘的高科技,它是一种思考问题、解决问题的方式。这种方式如此自然,以至于我们每天都在使用它,只是从来没有给它起过名字。就像鱼儿不知道自己在水里游泳一样,我们也不知道自己每天都在运用计算思维。
现在,让我们一起来揭开这个秘密,看看计算思维到底包含哪些神奇的组成部分。
计算思维的四根支柱
计算思维就像一座美丽的房子,而这座房子有四根非常重要的支柱。如果缺少任何一根,房子就会不稳定。幸运的是,这四根支柱都很有趣,而且你可能已经对它们非常熟悉了!
第一根支柱:分解——把大怪物变成小可爱
你有没有过被一个巨大的任务吓到的经历?比如说,数学老师布置了一整页练习题,一看到那么多题目你可能就想放弃了。但如果我们换一种方式呢?
假设这一页有20道题。你可以这样想:先做第一题,然后做第二题,接着第三题……每做完一道,就离完成更近一步。当我们把一个大任务分解成许多小步骤时,原本看起来可怕的大怪物就变成了可以一个个打败的小可爱。
分解(Decomposition)就是这样一个神奇的过程——把一个复杂的、庞大的问题分解成许多小的、简单的部分。就像把一块大披萨切成小块,你不用一次吃完一整块,而是可以一小口一小口地享用。
让我给你讲一个真实的故事。在美国航空航天局(NASA),有一群世界上最聪明的科学家和工程师。他们曾经面临一个巨大的挑战:如何让火星探测器成功登陆火星?这个任务听起来简直不可能——火星离地球那么远,探测器要飞行好几个月,而且必须在精确的时刻、精确的位置、精确的速度进入火星大气层,任何一个微小的错误都可能导致整个任务失败。
但他们没有放弃。他们把整个任务分解成无数个小任务:首先设计推进系统,然后设计隔热罩,接着设计降落伞,再然后设计安全气囊……每一个小任务都由专门的团队负责。当所有小任务都完成并组装在一起时,人类历史上最伟大的工程壮举之一就诞生了。
所以,下次当你面对一个看起来不可能完成的任务时,记住:即使是最大的挑战,也可以被分解成足够小、足够简单的步骤。
第二根支柱:模式识别——发现隐藏的规律
现在让我们来玩一个游戏。看看下面这组数字:2、4、6、8、10。你能猜到下一个数字是什么吗?当然是12!太简单了?那我们再来一次:1、1、2、3、5、8、13、21……下一个是什么?
答案是34。你发现规律了吗?每个数字都是前两个数字的和:1+1=2,1+2=3,2+3=5,3+5=8,5+8=13,8+13=21,13+21=34。这就是著名的斐波那契数列(Fibonacci Sequence),它在自然界中到处出现——向日葵的花瓣、松果的螺旋、甚至你手指关节的长度都遵循这个规律。
模式识别(Pattern Recognition)就是发现这些隐藏规律的能力。当我们能够识别出重复的模式时,我们就能预测接下来会发生什么,我们就能找到解决问题的新方法。
你可能每天都在使用模式识别,只是没有意识到。早上你穿衣服的时候,会根据天气决定穿什么——如果外面下雨,你会带伞;如果天气冷,你会穿外套。这是天气变化的模式。期末考试前,你会比平时更认真地复习,因为你知道考试前是学习效果最好的时间——这是学习效果的模式。
在编程世界里,模式识别尤为重要。程序员们发现,很多问题虽然看起来不同,但其实遵循相同的模式。比如,在社交媒体上推荐你可能认识的朋友,和在购物网站推荐你可能喜欢的商品,用的是同一种模式——找出相似的东西。这就是为什么学习编程能够提高你的模式识别能力,而模式识别能力提高后,你在学校的数学题、科学的实验设计,甚至日常生活的决策中,都会变得更加聪明。
让我告诉你一个有趣的故事。医学家们曾经花了几十年时间试图理解为什么某些人会得心脏病,而另一些人不会。直到有一天,一位心脏病专家注意到了一个问题:几乎所有心脏病患者都有相似的X光片模式!这个发现导致了革命性的心脏病诊断技术,拯救了数百万人的生命。
模式就像藏在石头里的宝石,等待着我们去发现。而你的大脑,天生就具备发现这些宝石的能力!
第三根支柱:抽象——找到真正重要的东西
假设我要给你描述一下你的学校。我可以这样说:“学校有一栋两层的楼房,砖头是红色的,每层有五间教室,第一间教室的窗户上有道裂缝,第二间教室的第三排桌子有点摇晃……”哇,这样说下去可能要说几个小时,而且你听完之后可能还是不知道学校长什么样。
但如果我换一种说法呢:“学校是一所公立小学,有24间教室,操场在东侧,图书馆在西侧。”这样你就立刻对学校有了清晰的了解。虽然我省略了很多细节——比如砖头的颜色、窗户上的裂缝——但我保留了最核心的信息。
这就是抽象(Abstraction)的力量。抽象就是从众多细节中提取出最重要的、最本质的特征,而忽略那些不重要的细节。就像你看一幅漫画或卡通人物,它们没有真实的皮肤纹理,没有精确的光影,但你能一眼认出那是谁。艺术家捕捉了最本质的特征,其他的都抽象掉了。
抽象思维帮助我们在复杂的世界中保持清醒。想象一下,如果你每次过马路都要考虑路面的每一颗石子、每一滴雨水、每一阵风的强度,你可能永远过不了马路。但你不会这样想,你只是简单地想:“红灯停,绿灯行。”这个简单的规则让你能够安全地过马路。
在计算机科学中,抽象无处不在。当你用手机玩游戏的时候,你不需要知道手机内部是怎么工作的——CPU怎么运算、内存怎么存储、屏幕怎么显示。你只需要知道怎么操作就够了。游戏设计师已经把所有的技术细节抽象成了简单的按钮和画面。
学会抽象思维,就像是获得了一副特殊的眼镜。戴上它,原本混乱复杂的景象突然变得清晰有序,你能看到问题的本质,而不会被无关的细节所困扰。
第四根支柱:算法——做事的完美配方
你有没有仔细看过妈妈做蛋糕的食谱?食谱上会写:“首先,把黄油和糖搅拌在一起,大约三分钟,直到颜色变浅、体积变大。然后加入鸡蛋,一个一个地加,每次加完都要搅拌均匀。接着加入面粉和泡打粉,用刮刀轻轻翻拌。最后倒入模具,放入预热到180度的烤箱,烤40分钟。”
食谱就是一个算法(Algorithm)的例子!算法就是一步一步解决问题的详细指令,就像做事的完美配方一样。只要你按照算法的步骤执行,就能得到预期的结果。
算法的历史可以追溯到几千年前。古巴比伦人就有求解方程的算法,古希腊数学家欧几里得发明了求最大公约数的算法(这个算法至今仍在使用!),阿拉伯数学家花拉子密写了一本关于算法的书,“算法”这个词就是从他的名字演变而来的。
让我们来做一个思维实验。假设你要找一本特定的书,你知道它应该在你们学校图书馆里。一种方法是:走进图书馆,随便走到一个书架前,一本一本地找,如果找不到就换下一个书架,一直找下去。这叫做线性查找,运气好的话可能很快就找到,运气不好的话可能要把整个图书馆的书都翻一遍。
但还有另一种方法:先想想那本书可能属于哪个类别——是小说还是科学书?然后直接去那个区域。再想想书可能是按什么顺序排列的——字母顺序还是按作者?然后按顺序去找。这就是二分查找,它就像查字典一样,比一本一本找快得多。
算法就是这样神奇的东西。同样的问题,用不同的算法来解决,效率可能相差千百倍。一个好的算法,可以让原本需要几百年才能完成的计算在几秒钟内完成。这就是为什么全世界的计算机科学家都在努力寻找更好的算法。
现在你已经了解了计算思维的四根支柱:分解、模式识别、抽象和算法。它们就像四个超级英雄,各有所长,但只有团结在一起才能发挥最大的力量。当你遇到问题时,你的大脑会自动组合这四个工具来帮助你解决。
日常生活中的计算思维
既然我们已经认识了计算思维的四根支柱,那就让我们看看它们在日常生活中是如何大显身手的。
整理书架的艺术
还记得开头提到的整理房间吗?让我们更详细地看看整理书架时计算思维是怎么工作的。
首先,你需要进行分解:把整理书架这个大任务分解成小步骤。第一步,把所有的书从书架上取下来;第二步,把书分类;第三步,决定排列方式;第四步,把书放回书架。
然后,你需要进行模式识别:你可能会注意到,你的书可以分为几类——教科书、小说、漫画、杂志。同一类的书可能放在一起更容易找。你还可能注意到,有些书你经常看,有些书很少看,那么经常看的书应该放在容易够到的位置。
接着,你需要抽象:你不需要记住每一本书的精确位置,你只需要记住每个类别的大致位置。“小说在第三层”,“漫画在第五层”,这样就够了。
最后,你需要一个算法:决定先做什么、后做什么。比如,是不是应该先把所有书分类,再决定排列方式,最后放回去?或者一边分类一边排列?不同的顺序可能效率不同。
看,一个看似简单的整理书架任务,其实包含了这么多思维过程!
规划生日派对
生日派对是另一个很好的例子。假设你要为自己的生日派对做准备,我们需要用到计算思维的所有四根支柱。
首先是分解,你需要把整个派对分解成无数个小任务:确定日期和时间、邀请朋友、准备食物和饮料、布置房间、准备游戏、买蛋糕、准备礼物……每一个小任务还可以继续分解,比如“准备食物”可以分解成“买食材”、“准备菜肴”、“摆放餐具”等。
然后是模式识别:你可能会注意到,以前参加其他小朋友生日派对时,大家最喜欢的游戏是什么?什么食物最受欢迎?这些都是通过观察和记忆积累起来的模式。
接着是抽象:你不需要考虑每一个细节——不需要记住两年前参加表姐派对时吃的具体是什么蛋糕,不需要记住隔壁邻居家派对用了什么颜色的气球。你只需要抽象出最重要的原则:生日派对需要食物、娱乐和朋友的陪伴。
最后是算法:你需要决定做事的顺序。是先买蛋糕还是先邀请朋友?食物应该提前多久准备?如果时间不够,哪些事情可以省略?这就是制定计划的过程,也就是设计“算法”的过程。
做饭的艺术
做饭可能是日常生活中最能体现计算思维的的例子了。想象一下,你要为全家人做一顿晚餐。
分解在这里体现得淋漓尽致。你需要把做晚餐分解成:确定菜单、列购物清单、去超市买菜、洗菜切菜、烹饪、摆盘、收拾餐桌……每一道菜也是一个复杂的任务,需要进一步分解。
模式识别帮助你知道什么食材搭配在一起好吃,什么样的火候最合适。奶奶告诉你“炒青菜要大火快炒”,这就是通过经验积累起来的模式。
抽象让你能够从一道菜的学习推广到一类菜的学习。你学会了炒青菜的方法,可能就学会了炒其他绿叶蔬菜。大厨们常说“学会了原理,可以变通无穷”。
算法就是食谱。好的食谱步骤清晰、逻辑合理,按照它做出来的菜就差不了。但算法也需要灵活运用——如果你发现某种食材用完了,能不能用另一种替代?这就是算法之外的智慧了。
你的第一个计算思维练习
现在你已经了解了计算思维的基本概念,让我们来做一些练习,看看你的计算思维能力有多强!
练习一:早晨Routine
描述一下你每天早晨从起床到出门上学的过程。试着把这个过程分解成尽可能详细的步骤。记住,每一个小动作都是一个步骤——睁开眼睛、坐起身、把脚放到地上、站起来……
完成分解后,思考一下:这些步骤中有没有可以并行进行的?比如,你可以在刷牙的时候让洗衣机开始转动。有什么步骤可以优化?也许可以节省时间,或者节省水、电等资源?
练习二:整理衣柜
你的衣柜是不是经常乱成一团?现在让我们用计算思维来整理它。
首先,对所有衣服进行分类——这涉及模式识别能力。你可能会按照衣服的种类(外套、上衣、裤子)、季节(春夏、秋冬)、或者使用场合(上学、运动、聚会)来分类。
然后,你需要抽象:不是每一件衣服都需要单独的存放位置。你可以把同一类的衣服叠放在一起,用颜色或者类型来区分。
接着,制定算法:你决定按什么顺序整理?是先按季节分类,还是先按类型分类?整理完成后,按什么顺序摆放更方便你每天早上找衣服?
最后,分解:把所有任务分解成可以在10分钟内完成的小块。比如今天只整理上衣,明天整理裤子,后天整理外套。
练习三:周末计划
假设你有完整的周末时间,没有任何安排。设计一个完美的周末计划,要求包括:休息娱乐、学习、运动、和朋友相处的时间。
运用抽象思考什么对你来说最重要。运用模式识别回忆什么样的周末让你感到最充实、最快乐。运用分解把大目标分解成具体的小任务。运用算法安排时间和顺序。
做完这些练习后,你会发现:计算思维并不是什么遥不可及的高深概念,它就藏在我们的日常生活里,随时等着我们去使用。
轻轻推开编程世界的大门
说了这么多关于计算思维的内容,你可能会问:“这和真正的编程、代码有什么关系呢?”
好问题!让我们来聊聊这个。
想象一下,如果你是一位厨师,你想让别人按照你的方法做一道菜。你会怎么做?你可以亲自示范给他们看,但这样效率很低。或者你可以写一个食谱,让别人按照食谱来做。
编程(Programming)就像是写食谱。只不过,这个食谱不是给人类看的,而是给计算机看的。计算机会严格地按照你写的步骤执行,不会多一步也不会少一步。
而代码(Code)就是食谱的具体文字。你可能听说过一些编程语言,比如Python、JavaScript、Scratch——这些就像是不同国家的语言,都有自己独特的词汇和语法规则,但都能表达相同的“食谱”内容。
编程和计算思维的关系非常紧密。计算思维是解决问题的心智模式,而编程是把这种心智模式表达出来的工具。有了计算思维,你就有了解决问题的思路;学会了编程,你就可以让计算机帮你执行这些思路。
让我们用一个例子来说明。假设你要写一个程序,让计算机帮你计算从1加到100的结果。
如果你用计算思维来思考这个问题,你会这样想:我可以一个一个加——1+2=3,3+3=6,6+4=10……但这样太慢了。你会注意到一个模式:1+100=101,2+99=101,3+98=101……一共有50对这样的组合,所以答案是101×50=5050。这就是发现了规律(模式识别)。
或者,你可能会用另一种更“计算机化”的思维:我可以把这个任务分解——先算1+2,保存结果;再加3,保存结果;再加4,保存结果……一直加到100。这就是循环(Loop)的思想,是编程中最基本也最重要的概念之一。
```python
用Python语言写一个简单的计算程序
total = 0 # 先把总和设为0 for i in range(1, 101): # 从1到100的循环 total = total + i # 每次循环把当前的数字加到总和中 print(total) # 最后打印结果 ```
你看到了吗?这段代码只有四行,但它背后的思想——分解、循环、累积——正是计算思维的体现。
好消息是,学习编程并不需要等你完全掌握计算思维。恰恰相反,学习编程本身就是培养计算思维的最好方式之一。每一次你写代码解决问题,你的计算思维能力就会变得更强。而每次你的计算思维能力变强,你写代码的能力也会提升。它们就像两个互相促进的好朋友,一起成长,一起进步。
你将在本书中收获什么
现在,让我们来看看这本书将会带你踏上的旅程。
在接下来的章节中,我们将深入探索计算思维的每一个方面。你将学会如何更好地分解问题,如何更敏锐地发现模式,如何更精准地抽象本质,如何更优雅地设计算法。
我们将通过大量有趣的练习和项目来学习。你会设计自己的游戏,创建自己的动画,解决真实的谜题。你会惊讶地发现,原来我可以做到这些!
具体来说,在第二章中,我们将深入了解分解——这个看似简单但其实非常有深度的概念。你会学会如何把一个巨大的任务分解成可以管理的小块,这是所有伟大项目的起点。
第三章将带你探索模式的世界。你会发现,模式不仅存在于数字中,还存在于自然界、艺术中、甚至你的日常行为里。识别模式的能力将让你在各个领域都变得更加敏锐。
第四章专注于抽象艺术。你会学会如何像专家一样从复杂中提取简单,从表象中抓住本质。这不仅对编程有用,对学习任何学科都有帮助。
第五章将带你进入算法的奇妙世界。你会学习如何设计清晰、高效、可执行的步骤来解决各种问题。
之后,我们会学习Scratch编程——一种专门为初学者设计的图形化编程语言。你会创建自己的动画和游戏,在这个过程中自然而然地培养计算思维。
再往后,我们会一起挑战一些有趣的项目:设计一个自动整理文件的程序,创建一个简单的搜索引擎,甚至了解人工智能和机器学习的基本原理。
最重要的是,你会逐渐发现:原来我也可以成为那个“解决大问题的人”。不管你以后想成为科学家、医生、艺术家还是企业家,计算思维都会成为你最强大的思维工具之一。
计算思维,改变你看待世界的方式
在我们结束这一章之前,我想和你分享一个重要的观点:计算思维不仅仅是一种技能,它更是一种看待世界的全新视角。
当我们用计算思维的眼睛来看世界时,我们看到的不再是一团混乱的、无法理解的混沌,而是一个充满了模式和结构的美丽世界。复杂的问题变得可以分解,重复的现象变得可以预测,混乱的事物变得可以抽象。
更重要的是,计算思维让我们相信:任何问题都有解决的方法。不管问题看起来多么困难,只要我们把它分解成足够小的部分,发现其中隐藏的模式,抽象出核心的要素,设计出正确的算法,我们就一定能够解决它。
这种信念,将会成为你人生中最宝贵的财富之一。在未来的学习和生活中,你会遇到无数的挑战和困难。有时候你会感到沮丧、想要放弃。但如果你记得计算思维教给我们的智慧——没有解决不了的问题,只有还没有找到方法的问题——你就会重新获得勇气和力量。
小结:计算思维四要素
现在让我们来回顾一下这一章学到的内