已故苹果公司创始人史蒂夫·乔布斯曾经说过:“每个人都应该学习编程,因为它教会你思考。”
同样的,比尔·盖茨和扎克·伯格等科技大咖都说过类似的话。这曾经让我非常不解,为什么说每个人都应该学习编程呢?
直到最近看到这本《写给所有人的编程思维》,我才能够理解这句话的含义。
这是一本神奇的书,在书的封面上有着很醒目的两行字,上面写着——培养孩子的逻辑思维能力,释放孩子的创造力,让孩子掌握解决问题的元技能。
《写给所有人的编程思维》作者是吉姆·克里斯蒂安,他是英国著名科技教育专家,被称为“编程怪才”。也是畅销书作家,拥有20多年科技教育和国际教学经验,曾获Dr.Dobb’s 程序设计卓越奖。曾经出版了《如何利用“我的世界”编程》《写给所有人的编程思维》等作品。
到底这本书讲得是什么?是否真的能够带来如此神奇的魔力呢?我带着疑问和好奇,迫不及待地翻开了书页。
第一部分 什么是编程思维?
说到编程,大家可能第一时间会想到另一个词——代码。
简单来说,编程是为了借助于计算机来达到某一种目的,或者解决某个问题,而采用某种程序设计语言来编写程序代码,并最终得到结果的过程。
而代码,可以说是一种编程语言,它能够将人的思想、思维过程所产生的语言描述,转换成计算机可以读懂的语言。
打个比方,对于普通人来说,我们可以通过声音来接收别人想要传播的信息。但是聋哑人不行,想要传播信息给他们,可以把声音转换成其他东西,比如文字、手语这类的方式。
这个过程,其实也类似于编程的过程,因为是把信息重新组织编写,通过其他方式传达给某些特定的人群。
在本书中,提到的编程思维,其实是除了指数字、符号或代码以外,最重要的就是指创造性地解决问题、准确表达真正的思想。
此外,学习编程思维还能够锻炼你的理性思维能力和逻辑思维能力 。
这是我们接下来要说的第二部分,请继续往下看
第二部分 为什么要学习编程思维?
学习编程思维,其实最主要的是学习“如何去解决问题”。
有人说过,人活在世上,其实一直都是在解决一个又一个的问题。
所以,“解决问题”是我们生活中的常态,而定期锻炼大脑、解决问题,有益于编写程序或者培养我们的编程思维,还有助于集中精力,提高记忆力和我们的自身的反应能力。
换句话来说,我们可以通过学会编程思维,来学会更直接快速的解决问题的方式。
书中提到,不管我们遇到多么复杂的问题,其实是可以将其分解成三个步骤来解决的:
Step 1 : 弄清楚到底是什么问题。
Step 2 : 思考问题的不同解决方法。
Step 3 : 验证所考虑的不同解决方法。
比如书中提到一道名为“三兄弟”的逻辑谜题,讲的是:
假设你认识长相一模一样的三兄弟,约翰、詹姆斯和威廉。其中,约翰和詹姆斯只说假话,而威廉只说真话。那么,当你碰到三兄弟其中一人时,你只能问一个问题来确认这个人是不是约翰时,你会问什么问题呢?
让我们来用上面的三步法解决这个逻辑谜题。
首先,我们需要弄清楚到底是什么问题。这道题是想让你确定你遇到的这个人,到底是不是“约翰”,这是问题的本质——确认遇到的人是不是约翰。
然后,我们来思考下,如果问他们同一个问题,他们会如何回答。根据已知条件,约翰和詹姆斯是说假话,只有威廉会说真话。
那么,当我们提问他们是不是三兄弟中的一人时,会有以下这些情况发生:
提问1:你是约翰吗? 约翰(说谎):不是
詹姆斯(说谎):是
威廉(说真话):不是
结果:无法区分到底谁是约翰,因为约翰和威廉都会回答“不是”。
提问2:你是威廉吗?
约翰(说谎):是
詹姆斯(说谎):是
威廉(说真话):是
结果:无法区分到底谁是约翰,因为三个人都会回答“是”。
提问2:你是詹姆斯吗?
约翰(说谎):是
詹姆斯(说谎):不是
威廉(说真话):不是
结果:可以区分谁是约翰,因为约翰是唯一一个会回答“是”的人。
最后通过验证,我们可以得到这道题的真正解决方法,就是询问他“你是詹姆斯吗?”,如果回答“是”,那么遇到的这个人就是约翰。
所以,解决问题的关键其实在于发现问题、思考问题,然后通过验证解决方法,最终解决问题。
综上所述,我们学习编程思维,其实就是在学习如何去学会思考,并去解决问题的过程。就算是再复杂的问题,都可以一一拆解,直面问题的本质去思考、分析,最终找到解决问题的方法。
提到编程思维,可能大家对其却步的主要原因在于,觉得普通人很难理解真正的“编程”是什么,比如听到关于二进制、数据类型、字符串、算法、运算符、Bug等这些专有名词时一头雾水,所以觉得很难入门。
其实这些都不用怕,这些在书中都有提及,而且语言简单易懂,解说生动形象,配上清晰的图片,不管是青少年还是中老年朋友,都能很快上手。
本书中还有很多亮点,比如我们知道计算机使用的计数方式是“二进制”,只用到0和1两个数字来进行组合排列,最终变成计算机能懂的语言。
如下图所示,二进制是由右至左每移动一栏,就意味是前一栏的2倍。
在上面的图表中,32位栏、8位栏和2位栏中都有1,以此相加32+8+2=42。那么,在计算机中,42这个数字就记为101010。
除此之外,书中还提到一种二进制手指计数法:
将拳头攥紧,这代表数字“0”
大拇指代表数字“1”
食指代表数字“2”
中指代表数字“4”
无名指代表数字“8”
小拇指代表数字“16”。
另外,还可以用一个二进制数值表达一个英文字母,并用手指表示出来,如下图所示。
《写给所有人的编程思维》这本书,除了普及了一些编程方面的基础,最重要的还是告诉我们,学习编程思维,是在学习一种思维模式,意味着有能力创造性地解决问题、表达思想。