什么是编程思维?
这本书与以往见到的编程书籍不一样,不是从枯燥的代码开始,也没有通篇讲述编程原理或者某一种具体的编程语言,而是通过一些有趣好玩儿的例子、通俗易懂的语言让不能年龄的读者指导“生活,就是编程思维”。从题目中我们至少可以获得两点信息:第一,编程思维适用于所有人,换言之,每一个人都有可能通过学习和训练发展编程思维;第二,这本书讲的是“编程思维”而不是涉及代码的“编程”。因此,无论哪个行业、无论性别与年龄、无论怎样的学识基础,都能因编程思维得到发展而获益。
编程思维源于编程却并不囿于编程。
如果对书中涉及编程的术语不感兴趣,那么这本书至少可以解答以下两个问题:
什么是编程?
计算机编程的过程就是将人的想法、思维过程转换成计算机要执行的动作。这一过程的实现,需要借助一些编程语言的帮助,将人类自然语言用程序语言表达出来,才能被翻译成计算机可以读懂的数字语言。无论计算机多么强大,真正强大的还是人的大脑!
各种编程语言在人与计算机之间架起沟通的桥梁。掌握一门编程语言,相当于掌握了一种控制计算机、与计算机沟通的方法,在计算机无处不在的今天,各个国家不约而同在基础教育渗透编程教育,在印度,条件允许的家庭更是在孩子4岁时就开始接触至少一门编程语言,并且持续学习直到精通。
什么是编程思维?
基础教育阶段开设编程课程,并不是为了培养合格的程序员,而是让学生尽早习得编程思维方式,从而让他们的学习、生活和未来的工作更有效率。
第一,编程思维是一种追求高效解决问题的思维方式。
编程思维,意味着创造性地解决问题、表达思想,包括理性推理、逻辑思维和必要的数学运算。但实际上,它就是做事情的方法、解决问题的思路。
学习编程思维,并不意味着必须具备多种特殊的技能。但是,拥有解决问题的欲望却是非常重要的!其实,我们一直都在解决问题,只是自己没有意识到而已,或者说没有意识到可以用更有效的方法解决问题。比如,我们可能在一个陌生的地方迷路了,找不到目的地,这时候,每个人解决的问题的方法是不一样的:可以使用手机导航,可以打个电话找朋友帮忙,也可以查看当地的地图,或者找行人问问路……这些行为,就是解决问题。
大多数时候我们遇到的问题是复杂的,这时候,我们需要将复杂的大问题分解成简单的小问题,一个个地理解和解决,分析和分解问题的过程中,学生的高阶思维能力得到培养。
第二,编程思维是一种设身处地站在他人立场思考问题的态度。
程序最终是为用户服务的。因此,一个程序员在开始编程之前就要站在用户的角度分析程序需求,程序完成后要以用户的角度进行测试,后者邀请用户参与测试并善于听取用户反馈。学习编程的过程,也是逐渐学会站在他人立场思考问题的态度。
在人际交往中,设身处地、换位思考越来越重要。站在他人立场看问题,我们会多一点理解、多一点宽容。
第三,编程思维是一种能与同伴合作的沟通方式。
无论线上线下,在开放的社会,我们很容易找到志同道合的伙伴,与他们一起完成一些工作或参与到他人的项目中,善于听取他人的意见和建议,都是很有效的沟通与合作方式,而善于从他人批评中获得建设性意见,不断完善自己的工作,更是一种可贵的品质,在合作中,我们的沟通能力会得到发展,不断提高人际交往能力。
第四,编程思维是一种简单、有序的行为方式。
编程的过程,就是将目标分解成具体、简单、机器能理解的指令序列。目前我们使用的电子产品功能越来越强大,这些多样化的功能依赖于程序员编写的一条条清晰、具体的代码才能实现。学科教学或者学生管理过程中,我们经常会发现学生有时候很难达成朝着我们预期的目标发展,在反思目标是否合理的同时,我们也需要反思给学生的标准是否明确、指令是否具体。
例如,我们想让学生将抽屉保持得井井有条,如果只给学生一个模糊笼统的指令“把抽屉整理好”显然是不够的。首先要让学生知道井井有条的标准是什么——分门别类摆放物品、无垃圾、取用方便……然后按顺序发布指令——把抽屉清理干净、根据物品的属性或取用频率分类摆放、物品用完放回原处等等。越是低年段的学生,越是需要简单、明确的指令。
无论使用微课还是导学案指导学生自主学习时,以一组明确清晰的学习目标开始,伴随有序、有效的过程指导是促进学生达成学习目标的必要前提,仅仅为学生提供一组学习资源是远远不够的。
或许,我们从这本书中还可以领悟更多的信息。