APP下载

深度思维:基于计算思维的程序教学应有的品质

2015-01-13王爱胜

中国信息技术教育 2015年1期
关键词:数学模型代码架构

王爱胜

计算思维不等于算法,它更多地表现为计算科学的灵魂、信息时代的技术价值以及布尔逻辑的智慧。有人说计算思维的出现是计算机文化(编程)的复兴,是纯计算机科学的回归,这虽有一些偏激,但无疑能反映基于计算机之“计算”这一根本核心的再次被重视。诚然,计算思维的思想不仅在程序设计教学方面被重视,在信息采集、加工、表达、存储等技术学习方面也都应被关注。只是,我们在运用它的时候不能仅浅显地置于算法设计或方案规划这一个环节,需要有更深度更全面的思维含量。接下来,我们讨论的是在程序设计教学中有关计算思维的方式与作用,发现它对我们重构教学体系的价值意义。对于信息技术教学内容的变革,无论怎么取舍都不宜丢掉程序设计,因为这是计算机硬件与软件都要涉及的内容,在计算思维的倡导下,它还将是一切技术思维活动的内容基础。为此,我们以程序设计教学为例剖析计算思维各个层次的思维深度,探索深度思维架构的过程。

● 第一层次的思维:从实际问题向数学模型架构

近几年的程序教学中,伴随面向对象的程序设计语言的兴起,建模能力培养被进一步弱化,主要原因是控件的可视化和代码的事件响应让编程向多媒体技术方向发展,甚至包括机器人的可视化编程也有此倾向。这种做法虽然没有过多地抛弃策略、规划等算法思想,但是缺乏由实际问题开始的底层思维,是有断层的。由于数学模型在各学科、各领域都有诸多专业方法,以下我们仅从程序教学涉及的实际问题入手,简单地分析计算思维的表现。

从实际问题转化为“计算机可以完成的计算”,数学模型的形成是需要计算思维的。

例1:计算多个规则图形组成的土地面积。我们先要考虑的输入量是各部分图形的数据,如边、高、角;输出量是它们的面积之和;其中的计算关键并非是求和,而是各种图形的分割及数据,每部分面积求法是思维核心。这里不考虑机器智能判断图形,只考虑输入各图形的特征数据,就已经够复杂。或者,再考虑有多种分解法,那么数学模型的通用性就也要考虑。开始,得出的数学模型描述可以是:S=S(1)+S(2)…+S(n);S(三角形)、S(矩形)等图形面积逐个计算。然后,可能寻找更通用的任意三角形或多边形的面积S(i)。这种实际问题向数学思维发展的过程是逐步加深的,与纯数学问题的不同在于需要同步考虑计算机程序的输入量与运算的关系,所以是计算思维的基础层次。

● 第二层次的思维:从数学模型向算法架构

当数学模型建立起来之后,我们就需要进一步针对计算机进行可行性设计,采用查找、筛选、递归、回溯等策略,依据计算机获取、存储、逻辑分析等特点设计算法。于是,思维开始转向流程图、伪代码(或简代码)等更计算机化的形式。

例2:计算不规则图形的土地面积。如果作为纯数学问题,要涉及坐标分析、微积分的数学问题。如果采用“笨”的计算机计算,也会有更多其他思路,如“逐点扫描法”可以从图形学的角度获得计算比例,这是另一种数学模型,更容易让我们明白数学模型与算法的关系,其核心是思维方式的改变。

● 第三层次的思维:从算法向代码架构

算法完善明确后,程序设计有了良好基础,但离设计出成功的程序还有距离,缩短距离需要的是对代码熟练掌握和创造性地运用代码,现实问题求解让思维价值得到实现。

例3:对个人藏书进行卡片化信息管理,需要对数据库中任意一本书目各个字段内容合成、分段,并打印图书登记卡片。这个问题的基本算法是字符串相加,折行打印。数学模型有多种,比较简易的是:不断地取固定长的字符串作为一行打印内容,最后余下的字符串为最后一行。转化代码时,关键问题来了。对任意一段英汉混合的字符串进行截取中如何防止取到一半汉字呢?这已经不再是算法的问题,而是代码编写技巧的问题,要有对字符底层存储的原理知识,更要有基于原理的深度思维,方才能够从ASCII的角度去判断截取最后字符的结果是什么。

● 第四层次的思维:从代码向软件架构

会编写一段段的代码去解决单一的问题,这只是零散的思维表达,不论深度如何这都不是整体的思维架构。算法与代码学习扎实固然重要,但是作为创造者只有趋向软件设计才能让计算思维充溢大脑。

例4:做一个跟计算机博弈“剪刀石头布”的软件。单独从数学结构来说,计算机出“剪刀”“石头”“布”要有不同的数值来代替,跟人即时出手的结果按规则比较;从程序代码来说,是“随机数”与“分支结构”的运用。但是到了软件,就要考虑输入界面(如何表达出人的出手)、输出界面(如何表达计算机的出手和博弈的结果),重要的是博弈的设计(计算机随机数的变化、人机出手的比较和分数的统计等),这个整体的过程即是软件设计思维的形成过程。这是一种主动、整体而深度的设计者的思维成长。

● 第五层次的思维:从软件向计算机工程架构

软件不论大小与功能,要看其系统内涵才能区分是不是对“工程”思维形成有帮助。工程首先是由系统分析师架构,他要从用户需求出发,结合硬件、软件和人力资源等多方面因素,系统地设计解决方案。这是集计算机科学和其他学科结合运用的高层次的思维。

例5:做一个学校交互宣传项目。从工程来说,学校宣传包括需求分析(宣传内容、方式、效果等)、规划(需要的素材、技术、流程、产品及人员等)、实施(算法设计、软件设计等)、测试(运行测试、问题修正)等。作为程序教学,经历工程的过程这很有意义,通过对流程的体验来集成与发展宏观思维,这类似广义的算法设计。

● 第六层次的思维:从工程向思想架构

无论什么工作,尤其是技术工程这样的综合事务,经历会让思维臻于成熟。让学生经历一些实际的工程,在思维发展的基础上逐步形成创意、创新思想这是计算思维最高层次的发展目标。

例6:使用动画模拟春天花开。不论从花朵设计、动画制作,或者声音配置,在这种看似非程序内容的学习中,一般做法是运用独立的元件进行逐个分步设计,不涉及代码。如果具有计算思维意识,会很容易考虑到花儿的随机位置、大小等灵活变化要素,考虑到调用同一个元件只需控制内部不同帧就会达到不同开放程度等独特技巧。这种思维的灵活性,无疑是符合运用计算提高动画创作效率的计算思维的最高层次。

以上对计算思维的架构过程,是从对实际问题的基础认识开始,到运用算法思想、代码功能、软件技术、工程思想一步步从小到大进行分析,以更容易区分计算思维的层次,这只是其中一种学习顺序,并非完全是计算思维的运用顺序,因为任何事物都是立体的、综合的。从工作实际来看,工程开发是“自顶向下”“逐步求精”设计的,对中小学生来讲学习会有难度。相对的,“从下向上”的学习会更容易一些。无论怎样,都不影响我们对计算思维之于程序教学重构的价值认识,因为计算思维核心价值更在于发展思维的品质。

猜你喜欢

数学模型代码架构
基于FPGA的RNN硬件加速架构
AHP法短跑数学模型分析
活用数学模型,理解排列组合
功能架构在电子电气架构开发中的应用和实践
创世代码
创世代码
创世代码
创世代码
LSN DCI EVPN VxLAN组网架构研究及实现
对一个数学模型的思考