啊哈C!思考快你一步
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1 编程改变思维

第1节 为什么要学习编程

你是否还在将计算机(电脑)当作上网、聊天和玩游戏的工具?没错,大部分人是这样的。当你拿起本书阅读到这里的时候,太好了,你又多了一个更好的选择,一个独特的机会!

在我们生活的这个时代,你会发现有这样一群人,他们对世界的影响越来越大,电视、报纸和网络到处都充斥着他们的身影。比尔·盖茨创立了微软,让计算机更容易被我们平常人所使用1985年如果乔布斯没有被迫离开苹果,那这一功劳可能将归于苹果的麦金塔计算机。;乔布斯创立了苹果,iPhone、iPad和iPod每一样产品都在改变着我们的日常生活;谢尔盖·布林和拉里·佩奇两个年轻的小伙创立了Google,使得获取知识变得前所未有的容易;马克·扎克伯格创立了Facebook,正在改变人与人之间的关系……甚至12岁的小软件工程师托马斯·苏亚雷斯被誉为“小乔布斯”的12岁少年托马斯是美国加利福尼亚州洛杉矶市南湾地区一所学校的6年级学生。当大多数孩子还处在玩计算机或手机游戏的时候,托马斯就已经是个能开发游戏程序的“软件工程师”了。托马斯不但为苹果公司的手机操作系统编写了两个游戏程序,还创办了一家软件开发公司。都在改变我们的世界。他们是怎样的一群人?他们为什么会创造奇迹?奇怪的是他们都有一个共同的特点:在少年时都酷爱计算机编程。计算机编程究竟具有怎样的非凡魔力?计算机编程是否给他们带来与常人不同的思维或思考方式?是否是计算机编程为他们开启了不一样的人生道路?

为什么他们从小就开始接触计算机,不但没有沉迷于游戏,反而改变了世界呢?12岁的托马斯说:“现在的孩子们不再只是爱玩游戏,他们还想自己制作好玩的游戏,不过孩子们大多不知道到哪里去学习计算机编程,而懂得计算机编程的家长又很少。”

其实每个人的童年都曾经有创造游戏的梦想,我们为什么不把这种梦想变成学习的动力呢?大部分孩子在面对计算机的时候都缺乏引导,因为他们不知道计算机除了上网、聊天和玩游戏外还能做什么。即使有人想深入地学习计算机,也不知道去哪里学,没有方向,更没有一本简单易懂并且有趣的入门书。

计算机从被发明的那一天起,其使命就是来帮助我们提高学习和工作的效率并且改变世界的。利用计算机编程,你可以轻松解决数学难题。例如,□3×6528=3□×8256,在两个□内填入相同的数字使得等式成立。你觉得这样的题目太简单了?那么来个稍微复杂点的:□□□+□□□=□□□,请将1~9这9个阿拉伯数字分别填入9个□中,每个数字只能使用一次使得等式成立。计算机也可以轻轻松松地解决。如果再复杂一点,我想知道上面这个式子的所有解,通过笔算就很困难了,但如果使用计算机编程去解决,却易如反掌,这正是计算机所擅长的。有时你甚至可以利用计算机编程去验证世界性的数学难题,例如,在10 000以内去验证哥德巴赫猜想,也都不成问题。当解决大质数、图论等问题时,计算机编程也是最好的帮手。

那么学计算机究竟是学什么呢?答案是逻辑思维和编程思维。

早在20世纪50年代,美国教育界就开始重视计算机编程教学。20世纪80年代后,计算机编程教学逐渐进入中小学校,以教程序设计语言为主,目的是提高学生的逻辑推理、批判性思维和动手解决问题的能力。实践证明,学习了计算机编程的中小学生,思考问题的方式变得非常逻辑化,学会了严密的逻辑推理方法,并无形中把它应用到其他学科的学习中。学习计算机编程本质上是在学习一种思维方式——编程思维,它是一种思维体操。青少年本身对计算机有着浓厚的兴趣并且有超强的记忆力,计算机编程将有助于开发其学习潜力,提高逻辑推理能力和解决问题的能力。

学习计算机编程的过程充满乐趣。如果你有一个想法,马上就可以通过编程来实现,并且可以立即看到效果。这种即时的反馈,会让你的学习兴趣变得越来越来浓厚,也越来越有信心。这种超强的信心,是你在其他学科中难以感受到的。我还记得我的第一个程序运行成功时的那种兴奋,真是太棒了,你一定要去感受一下,这是你一辈子都不会忘记的感觉。

最后,用笔者的一个武汉二中的学生吕凯风吕凯风在14岁时以初中生身份获得全国青少年信息学奥林匹克联赛(高中组)一等奖,初三时以全省第一名的成绩入选湖北省队,高一时获得亚洲太平洋地区信息学奥林匹克竞赛 (APIO2013) 国际金牌。他还独立创作了“对对棋”和“啊哈图”软件。“对对棋”的启发来源于他的班级同学在课间玩的一个游戏,而“啊哈图”则是他在学习计算几何和图论知识时,为了方便解题和调试做的一个类似于“几何画板”的软件。学习编程时的感受来结束本小节。

“记得我那时学编程全凭兴趣,兴趣引导我前进。以前做完了作业打游戏,如今写完了作业就编程。我觉得学会编程后最让自己激动的是,我能用编程来解决几乎所有遇到的数学问题。学数学最强调技巧性,比如7的2 000次方除以3的余数是多少?21 212 157是不是质数?你也许可以用一些小技巧把这两个问题解决掉,但是当我们遇到更难的问题时,往往无能为力。比如214 125 315的123 719 857次方除以12 125 987的余数是多少?2 147 483 647是不是质数?很多实际问题并不像数学中的那么理想和美好,许多数学结论,尽管它证明得很巧妙,式子简洁,但是归根结底,如果它只解决了一个特殊问题,则不具有什么实用价值。所以我更喜欢信息学,它告诉我如何去解决一个一般化的问题而不是一个特殊的有技巧性的问题。编程最让我感慨的是它无与伦比的唯一性与严谨性。”

说到这里你是不是有点心动了?