« 文摘:创新算法ARIZ-61十年003:技术-问题解决-算法 »

十年002:为什么会出现“生活算法”一说

当你有一把锤子,所有东西看起来都像个钉子
When you have a hammer, everything looks like a nail ——英国谚语

    从个人来说,我能勉强算是程序员出身了。

    1987年还是学生时开始接触的计算机。当时的计算机是Laser310。使用它需要会BASIC语言,配套的有一个录音机存储程序。为了准备全国师范院校的计算机程序比赛,我被选拔参加了一次程序培训班。在程序班里明白除了for-to,if-then的简单编程外,如果程序设计好了可以完成很多原来不能想象的事情。虽然最终比赛未搞成,但我学会了高精度计算、阶乘等等不同的算法。感到了计算机、程序、算法的非常魅力。

    1989年毕业后,就开始教起了计算机课,一教就是十几年。说是计算机课,这时使用的主要是LASER-310,中华学习机。这样的计算机只有编程语言,前期五、六年主要教BASIC语言,后五、六年增加了LOGO语言。在长期的编程语言教学中慢慢地摸索到了,程序教学也是有层次的。 
    第一层次是教“命令”,也就是进行计算机语言教学的层次。最早的原则是前苏联学者伊尔肖夫提出的:“计算机程序设计语言是第二文化”。这时的计算机只能用BASIC或LOGO语言,教学的主要内容是命令和简单程序。学生学会了这些命令才可以操作当时的LASER-310、R1、中华学习机等计算机。 
    第二个层次是教“算法”,也就是进行程序设计教学的层次。教过一段时间后就体会到,对于学生来说,重要的不是用命令来操控计算机,而是进行“程序设计”。其中的核心应当是计算机程序设计算法。算法的学习应当是计算机课的重要内容,在教学中强调程序设计、强调算法成了自然而然的事情。 
    第三个层次是教“思维”。随着技术发展,程序越来越复杂。渐渐地体会到,用计算机实现一种算法首先是一种思维的实现,真正的大师善于从思维中把握算法的核心。因此,在计算机课的学习中更重要的是如何渗透算法思维,而不是掌握固定的某一种或几种“算法”。
    这样“算法思维-算法-命令”三级目标的教学活动对于一个成长期的计算机/信息技术教师来说有着重大的影响。渐渐地在工作中、在生活中寻找、形成解决问题的“算法”,逐渐明确化、固化对于生活有着很大帮助。形成了一种思维方式。

    到了1999年前后,在计算机“工具论”的推动下,计算机课改成了信息技术课。课堂的教学内容也由计算机编程改为计算机操作。今天看起来,这种变化使课程的变化双经历了新一轮的螺旋上升。经过了几年教学后,我们又重新提出了“老”问题:
    信息技术课仅仅是教会学生掌握计算机操作吗?我们如何突破、发展?
    对于课程的研究者如何使课程延续下去,自然而然地想起了过去的成果。如果从“思维-算法-命令”的层级去理解信息技术课,可能会有不同的东西。

    不过首先面对的问题是,原有的“算法思维“既包括程序设计方向的,也有问题解决方向。而算法的体现一般使用伪代码,到了命令则直接针对具体编程语言。这样从范围广泛到具体应用,直接指向的是程序设计。 与操作计算机的关系是什么呢?

    经过了反复的思考,忽然有一天我在问:既然“算法思维”中包括了算法,那么属于“算法思维”但不是计算机算法的那部分应当是什么? 
    ……

    进而展开了后续的思考:可以使用伪代码或者使用流程图,甚至自然语言表示的,属于算法思维部分,但不属于计算机编程算法的部分会是什么样子?它对于信息技术课、对于操作计算机的学习等有着什么样的作用?
    为了搞清楚这样的一个问题,需要从理解程序设计的“算法”概念入手,从问题解决入手,从操作计算机的心理学基础入手……。将这些不同方向的内容组合起来才会更靠近课程的规律。

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们

日历

最新评论

最近发表

Powered By Z-Blog 1.7 Laputa Build 70216

Copyright 2003-2007 芸心芹意 bean.being.org.cn Some Rights Reserved.