计算机教育到教育计算机

更新时间:2023-12-21 作者:用户投稿原创标记本站原创 点赞:5423 浏览:19860

摘 要:教育计算机与计算机教育是不同的概念,前者是为教育而改造计算机知识,后者是为了计算机而改造教学法.文章从第一代教育计算机出发,在编程教育层面上,论述了正在形成的教育计算机的最新成果和意义.

关 键 词:教育数学;计算机教育;教育计算机;程序设计

文章编号:1672-5913(2013)03-0042-04

中图分类号:G642

计算机教育和教育计算机是不同的概念.计算机教育是为了传授计算机知识而作教育,它不创造计算机知识,只改造教学法.而教育计算机是为教育而做计算机,它要对计算机知识进行再创造,使之更适合于计算机教育.

下面笔者用吃核桃的例子来阐述计算机教育和教育计算机之间的例子.有种核桃,核仁与外壳结合得很紧,成都人叫它们“加米子核桃”,若砸的方法不当,即使砸开了也很难吃到核仁.计算机教育研究的是一套砸核桃的方法,但它既改变不了“加米子核桃”存在的事实,更改变不了核桃的味道和营养成分;而教育计算机则研究如何改良核桃的品种,目的是让核桃容易被砸开、吃净,而且使桃仁更美味、更营养.

笔者只从编程教育层面上来谈计算机教育和教育计算机的关系,因为计算机文化是建立在程序基础上的,所以这种研究是有代表性的.

1来自教育数学的启示

教育计算机和教育数学有类似之处,我们从后者可以得到一些启示.

以微积分为例.17世纪,由牛顿和莱布尼茨创建的微积分是第一代微积分,这是说不清楚原理的微积分.创建者说不清楚,使用微积分的数学家也说不清楚.微积分在说不清楚原理的情形下应用发展了130多年.

到19世纪,柯西对积累了两百年的微积分成果进行了再创造,写出了迈向严密的微积分王国的第一部教程——《分析教程》.这是一部教育数学的经典,形成了第二代微积分,但使用的极限ε-语言使概念和推理繁琐迂回,多数学生听不明白.第二代微积分在这种情况下发展了170多年.

直到今天,出现了正在创建的微积分——第三代微积分.人们希望微积分不但严谨,而且避开ε-语言关卡,直观易懂,简易明快,让更多非数学专业的学子听得明白.在我国,张景中和林群院士十几年来一直从事第三代微积分的创建工作,而且卓有成效.《直来直去微积分》一书是他们的代表作.

这三代微积分在具体计算方法上基本相同,不同的是对原理的说明:第一代微积分说不清楚;第二代微积分说清楚了,但是繁琐迂回;第三代微积分深入浅出.

再以几何为例.欧几里得的《几何原本》是第一个对数学知识进行再创造的教育数学范例.它影响数学家和科学家的思维方式长达两千年之久.直到今天,它仍然是中学数学教育的主要内容之一.但是,由于它没有借助代数和三角,孤立无支,使学生学得很难,教师教得很苦,

我们知道,几何与三角研究的都是图形.几何侧重定性研究,三角侧重定量研究.代数研究的是运算的规律和方法,它不仅是解决数学问题的基本工具,也是几何和三角的基本工具.几何、代数和三角应该相互支撑,携手共进.

然而,几何、代数和三角的知识是在不同历史时期和不同地域分别形成的,它们各有自己的体系、术语和记号.现在我们是根据它们在历史上形成的顺序分别讲授,而且基本上保持着它们各自的体系.张景中院士对此提出质疑:“学习数学的顺序必须和数学知识在历史上形成的先后一致吗?这些在不同年代、不同地方,由不同的人,为不同的目的创造出来,而且其中很多是为了应用而创造出来的知识,会自然而然地相互融合,相得益彰吗?当然不会.

几何在没有工具的情形下孤军奋战地作定性研究,不辛苦吗?三角建立了有力的定量工具但为时已晚,空怀绝技难以施展,不委屈吗?几何自顾自地推理,三角自顾自地计算,代数该用不用,不冷落吗?

为使几何、代数和三角携手共进,张景中院士重建三角,请三角早出茅庐,因为三角是解决几何问题的有力工具,是训练代数变换能力的天然平台,也是沟通初等数学和高等数学的一条通道.

微积分和几何,乃至整个数学,进入20世纪后迅速发展,其再创造工作越来越重要.以布尔巴基命名的一个数学家集体,已经出版了皇皇巨著《数学原理》的前40卷.他们的目标是对数学从头探讨,并给予完全证明.布尔巴基把数学归结为“研究抽象结构的理论”.他们认为,集合论是数学大厦的地基,大厦的骨架由三种母结构组成:序结构、代数结构和拓扑结构.比如,实数有大小,这是序结构;有四则运算,这是代数结构;有连续性,这是拓扑结构.母结构加进新的公理,产生子结构.不同的结构结合起来,产生复合结构.布尔巴基认为,研究今天已有的和未来可能产生的种种结构,就是纯数学的特征.有了结构观点,数学的核心部分就显得条理化、系统化了.

教育数学给我们的启示有两点:①逻辑在发展;②综合促创新.

2第一代教育计算机

第一代教育计算机始于20世纪60年代末和70年代初.为此作出贡献的人很多,其中的3个人我们比较熟悉.

一是单源最短路径算法的发明者E·W·迪克斯特拉(Dijkstra),他最先察觉goto语句的有害性,首创结构化程序设计.他在《结构程序设计札记》一文中提出了把程序的可靠性建立在程序的“有效结构”基础之上的观点,揭开了程序设计革命的新篇章.

二是快速排序法和CASE语句的发明者霍尔,他的《计算机程序设计公理化基础》一文使得对程序设计的分析可以在数学推理的基础上进行.

三是N·沃思(NicklausWirth),他在《算法+数据结构等于程序》一书中,第一次揭示了程序的本质.“算法+数据结构等于程序”这个公式对计算机科学的影响程度类似爱因斯坦的质能等价理论方程式“E等于mc2”对物理学的影响.

第一代教育计算机确立的原则和方法对计算机教育产生了深远的影响,意义至今尚存.但是有些原则和方法在计算机教育中被打了折扣.N·沃思的思想是:“程序设计这一领域极为纷繁多变,常常包含复杂的脑力劳动.因此,以为能够把它压缩成一种纯粹‘开药方’式的训练是错误的.我们所能采用的教学方法只能是仔细地选择和描述标准的例子.N·沃思所说的标准例子都是依赖数据结构的算法.但是学习数据结构有两个难点:算法的性能分析和算法的实现.算法的性能分析是以极限概念为基础的,非数学专业的学生很少能够掌握极限概念,因此在数据结构教学中进行算法的性能分析是让教师很为难、让学生很困惑的事情.

N·沃思非常强调算法实现的原则,他指出:“把程序表达为充分考虑细节的最终形式是很重要的,因为程序设计的错误正是隐藏在细节中.尽管对于学者来说,纯粹描述算法原则及其数学分析可能具有刺激性和挑战性,但对于实际工程人员来说,似乎是不切实际的.因此,我严格遵循这一原则:将程序的最终形式以某一语言表述出来,以便确实能在计算机上执行.但是那时候的程序语言还只是过程式语言,用这种语言描述数据结构需要很高的水平,实现一些比较大的数据结构算法是单个人难以做到的.

结果是,非计算机专业很少讲授数据结构,计算机专业讲授的数据结构让许多学生感觉抽象难懂.

3正在形成的教育计算机

现在,学习数据结构的两个困难有了解决办法.第三代直观易懂的微积分便于更多的人掌握,进而使数据结构中的算法性能分析更普及.C++的出现使数据结构的实现变得简单.如本贾尼·斯特劳斯特卢普(BjarneStroustrup)所说:“C++的设计就是为了使较大的程序能够以一种合理的方式构造出来,并因此使单独一个人也可能对付相当大的一批代码.”特别是,C++最重要的发展就是STL——容器和算法的标准库.它不仅使数据结构和C++语言得到近乎完美的统一,而且促进了程序设计的发展.

但是新问题又出现了:程序语言多了,不知学习哪一种好;程序设计方法多了,不知道什么才是程序设计.

今天,流行的程序语言已经有C、C++、C#、Ja、VisualBasic、Delphi等.这使很多人困惑,不知道学习哪一种语言才好.有没有最好的语言呢?对此,AlanPerlis的回答是:“如果某人说,‘我想要这样一种程序设计语言,我只需说出我希望做什么,它就能帮我完成’,那么就给他一个棒棒糖吧.”可见,要求一个万能的程序设计语言是很天真的.

其实,几乎每一种语言都是为特定的商业目的而设计,并不是为教育而设计.COBOL是为商业应用而设计;FORTRAN是为数学运算而设计;Basic是为了易学易用而设计;Ada是为美国国防部开发的,主要用于国防项目;VisualBasic和Delphi用于开发图形用户界面,可以进行快速应用开发.

现在很多人选择C、C++或Ja,主要还是因为它们具有更大的商业用途.C语言不仅具有汇编语言的强大功能,而且如高级语言一样易学和易移植;C++适合开发系统软件,如编写编译程序和操作系统,Microsoft公司的Windows操作系统就是用C++编写的;Ja用于开发Inter应用程序.

今天,程序设计除了以前的过程式设计,还有了数据抽象、面向对象设计、泛型设计等.那么什么才是程序设计呢?对此,BjarneStroustrup的回答是:“通常人们一提到程序设计风格,都是将它们看作是毫无关联的:你要么使用泛型程序设计,要么使用面向对象程序设计.但如果你的目标是尽可能好地表达解决方案,就需要组合多种风格了.这里的‘好’是指代码易读、易编写、易维护以及足够高效.”这种组合多种风格的程序设计是多范型程序设计.

面对新的问题,新的教育计算机正在形成,它要把用于商业目的的核心程序语言和程序设计方法再创造,使它们连贯起来,怎么写作于计算机教育.

关于程序语言,BjarneStroustrup指出“在你已经掌握了C和C++的公共子集和某些C++直接支持的高级技术之后,你会更容易去学习C中那些更诡秘的部分”,实际上,这是“人体解剖法”的秘密:事物的本质只有在一个事物发展过程结束时才能最清晰地显露出来,借此我们可以对整个历史重新作出合乎逻辑的描述,展示出历史的内在规律性.BruceEcke1便利用这个方法,在《C++编程思想》一书中建立起一个从C结构到C++类的平滑过渡模型:先实现一个袖珍的C库,然后再将它转换为C++代码,通过比较分析而进入C++.这样一来,从C到C++的一条脉络就疏通了.AninashC·Kak也是利用这个方法,在《面向对象编程C++和Ja比较教程》一书中,给我们指出了一条从C++到Ja的道路.

用李未院士的三个语言环境理论,可以对从C到C++再到Ja的线索作出严谨的形式描述.“一般说来,一个语言在它作为对象语言时,它的符号和语法对象所取得的准确性和已被人们证明的结论,在它作为元语言时,就可以用来解释和说明相应对象语言的符号和语法对象,并用来证明该对象语言中不同语法对象之间的关系.这是人类从事科学研究的基本方法.”例如,C、C++和Ja是程序语言发展中的版本序列.如果把C++视为对象语言,那么从C++程序集合到C程序集合的一个解释映射(记做IC++)和C程序集合就构成C++的一个模型,而C语言就构成了C++语言和它的模型的元语言;如果把Ja视为对象语言,那么从Ja程序集合到C++程序集合的一个解释映射(记做IJ)和C++程序集合就构成Ja的一个模型,而C++语言就构成了Ja语言和它的模型的元语言.

从C到C++再到Ja,这是新一代教育计算机给予计算机教育的一个方向性选择.

关于程序设计,StanleyB·Lippman从发展的角度给予了定义:“纵观短暂的计算机发展史,算法和数据这两个主要方面一直保持不变.发展演化的只是它们之间的关系,就是所谓的程序设计.”这种观点启发我们对过程式设计、数据抽象、面向对象设计和泛型设计,不要仅仅把它们毫无关联地排列起来,平等地看待,而是要由此及彼地把它们推出来,使它们互相隶属,从低级形式发展出高级形式.把C和Ja连接起来的C++,这个在计算机软件领域中覆盖面最为广阔的编程语言,不仅支持多种不同的程序设计风格,而且它记录着程序设计从低级形式到高级形式的发展.用Stroustrup的话讲:“它的特点是可以看作是更好的C;支持数据抽象;支持面向对象程序设计;支持泛型程序设计.”因为兼容了C,所以C++自然也支持过程式设计.


从过程式设计到数据抽象,从面向对象设计到泛型设计,这是新一代教育计算机为计算机教育指出的又一个方向性选择.而且这个过程,因为C++的特性,所以又和从C到C++再到Ja的过程相互融合为一个过程.

这个过程不是从概念出发,而是从实际出发,如Stroustrup在总结C++的一些设计原则时所说:“C++的每一步演化和发展都是由于实际问题所引起的.”“C++支持一种逐步推进的学习方式.你学习一个新语言的方式依赖于你已经知道些什么,还依赖于你的学习目的.”所谓逐步推进,就是从C到C++再到Ja,而目的就是认识发展规律.

正在形成的教育计算机将使计算机教育沿着严谨、流畅、丰富和启迪的方向发展.所谓严谨就是讲逻辑,而逻辑是随着事物发展而发展的,一个事物发展了,我们才可以观察它的变化,研究和发现事物的本质.所谓流畅就是不重复,把C、C++和Ja贯串起来学习,就去除了不必要的重复.所谓丰富就是包含更多的典型程序设计实例,数据结构包含着丰富的典型程序设计实例,C++不仅是我们描述数据结构的有力工具,而且它的标准模板库(STL)把数据结构近乎完美的统一到C++语言中.所谓启迪就是引导人们注重规律,从事物的发展和变化中来观察事物.

4结语

新一代教育计算机不是纯粹思考出来、想象出来的概念,而是计算机科学发展的必然产物.计算机科学的迅猛发展,积累了大量的实证的知识材料,以近乎系统的形式描绘出一幅相互联系的清晰图画,任何人,只要依据材料的内在联系把这些材料加以整理,就可以达到上述的认识.

(编辑:彭远红)

相关论文范文