首页 > 范文大全 > 正文

为何要有“生活算法”一说

开篇:润墨网以专业的文秘视角,为您筛选了一篇为何要有“生活算法”一说范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

当你只有一把锤子时,所有东西看起来都像钉子

When you have a hammer, everything looks like a nail

从个人的经历来说,勉强可以算是程序员出身了。1987年就开始用计算机了,第一次接触的是Laser-310。为了准备全国师范院校的计算机程序设计比赛,我被选派参加了集训队。这才学会for-to、if-then等命令,同时还学会了高精度计算、阶乘等不同的算法。虽然比赛最终没有如期举办,但我的收获却很大。在活动中体会到了计算机程序、算法的魅力,明白了好程序可以完成很多原来不能想象的事情。

1989年开始当教师教起了计算机课。当时以中华学习机为主的计算机中只有固化的编程语言,不会语言就不能使用计算机。先是BASIC语言,然后是LOGO语言。在的编程教学中,慢慢地体会到了编程教学是有不同层次的。

第一种层次是“命令”的教学,也就是主要目标是计算机的语句、命令。前苏联学者伊尔肖夫说过:“计算机程序设计语言是第二文化”。计算机开机后只有BASIC、LOGO语言,那么教学的主要内容就是学会编程的命令和语句。

第二种层次是“程序设计”的教学。也就是教学的主要目标是程序设计。学会了命令、语句以便设计程序。而程序设计的核心是算法。因此,在教学中如何强调算法成了计算机课堂教学自然而然的事情了。

第三种层次是“思维”的教学。经历多年的程序设计后我渐渐地体会到:真正的大师善于从思维中把握算法的核心,用计算机实现一种算法首先是一种思维的实现。因此,在计算机课的学习中更重要的内容成了如何渗透算法思维,如何将思维融合于生活中,而不是掌握某一种或几种固定的“算法”。

“命令——算法——思维”三级目标对于一个成长中的计算机/信息技术教师来说有着重大的影响。在工作、生活中寻找、形成解决问题的“算法”逐渐形成了一种思维方式,一种程序员的思维方式。

当我们手里有一把锤子时,最喜欢的是把世界上所有的东西看成钉子。都愿意用手中的锤子去试一试身边的生活。感受到了算法的好处,也会经常倾向于把算法思想广泛地应用到各类问题,而信息技术课中就恰恰有这样的问题,并且还不少。

1999年前后,课程名称改为“信息技术”,教学内容由程序设计逐步改为计算机操作,算法渐渐淡出。课堂教学转变成以Office办公软件的操作为主的教学活动。今天看来,这种变化是课程经历的新一轮的螺旋上升过程。不过,经历了一轮实践后,许多信息技术教师又重提“老”问题:信息技术课仅仅是教会学生掌握软件操作吗?

当我们对计算机教学中的诸概念追根溯源,从认知心理学角度分析所谓的“操作”,可以发现“简单操作”也是由一个个更细微的动作按一定次序组成的。更复杂的问题解决步骤往往是由更细节、更具体的下一级解决方法组成。这其中的“次序”与程序非常类似。在程序员眼中,计算机的操作与程序设计在一定方面是相互对应着的(如图1)。

其中程序设计中的命令、语句对应着计算机中的操作、方法与技巧,都是相对具体的,对比整体都是“更微小”的,是组成后续要素的基础。程序对应着操作工具、解决问题的过程与步骤,都是强调有一定的次序性。程序设计算法对应着技术应用的“算法”。程序设计中的“思维”对应着技术应用的最终目标——问题解决。如果把前面的称为计算机程序设计算法,后面的这一种,为了应用技术、操作工具来解决生活中的问题而出现的行动规则,则称之为“生活算法”。

两种不同情境下的“算法”既有很多相似,也存在着很多不同。

两者都有算法思维的特点,两者都有模块化特征;两者都需要有可行性,计算机算法需要能编程实现,生活算法需要在生活中能一步步实施;两者都是由抽象到具体的,程序设计算法是按照“算法——程序——命令”逐级分开,生活算法是可以按“算法-过程-操作”逐级展开。学习程序设计算法需要从程序入手,掌握生活算法也需要从解决问题的过程、步骤入手,基础都是有程序性。

也可以看到两者有更多的不同。程序设计算法是直指程序设计的,最终能够编程在计算机上实现的。生活算法直指使用工具解决问题的,需要一步步在生活中去真正地解决某个问题;程序设计算法可以使用某种计算机语言,或者伪代码、流程图来表达。但针对技术工具的生活算法更倾向于人的自然语言表达;程序设计算法相对严谨、抽象,生活算法相对宽松,但针对不同的问题情境会有不同变化。

……

当我们在反复辨析“生活算法”与程序设计算法到底是不是同一个概念的时候,却发现这种解释对于信息技术课来说,是一种有意思的思考。因为有了“生活算法”,现在的信息技术课中一些所谓不相关的部分联系到了一体(如图2)。

中小学信息技术课的主要内容,如画图程序、字处理Word、WPS、多媒体PowerPoint、Flash等不同应用软件的学习,除了部分特有概念外,都是从单击、双击、保存、打开等简单操作开始的。若干简单操作组成了操作方法,再由操作方法逐步复杂化,向利用工具解决问题发展。从简单操作到方法,从操作步骤到程序,从过程到应用工具的行动规则,再到问题解决,形成了操作工具的“生活算法”系列。对应着的就是更抽象的、程序设计中的“命令——程序——算法”体系。

从生活算法的角度来看,现有的教学内容其实是一个有结构的整体。无论是软件应用部分强调其操作性、程序性,还是计算机编程方面强调程序设计、强调算法,都是在培养学习者的思维能力、问题解决能力。

程序设计算法——生活算法。是面对着钉子时,我们手中的锤子呢,还是一块砖头?或者它们都一样?