时间:2023-06-16 16:03:50
序论:好文章的创作是一个不断探索和完善的过程,我们为您推荐十篇计算机语言的概念范例,希望它们能助您一臂之力,提升您的阅读品质,带来更深刻的阅读感受。
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2011)16-3809-02
Research on Method of Semantic Similarity Based on Concept Semantic Tree
HAN Xin, QIN Fan
(School of Electronics and Computer Science and Technology, North University of China, Taiyuan 030051, China)
Abstract: At present, the application of information retrieval has been widely used, but it is still a difficult thing to be accurate in the specific field of searching. This paper provides a semantic similarity calculation method based on the concept semantic tree, considering the concept of the semantic relations, hierarchies, and inheritance and other factors, as much as possible to improve retrieval efficiency in specific areas of information, and at final, demonstrate the feasibility of the method by experiment.
Key words: semantic retrieval; concept semantic tree; semantic similarity
传统的信息检索都是基于关键词查询的,因此在检索时可能会出现一堆用户并不真正需要的信息,导致查询结果的准确率很低,查全率也不令人满意,会出现“表达差异”,“词汇孤岛”等问题。语义检索就是把信息检索从传统的基于关键词层面提高到基于语义的层面,从语义方面着手,分析概念之间的内在联系,利用语义来组织、存储和获取信息,信息和语义的结合,使信息变成计算机可识别的知识,从而系统能识别出用户所需要的信息,提高检索的查准率和查全率。
1 语义相似度
语义相似度是对语义相似性的定量表示,语义相似度计算是信息检索、数据挖掘、知识管理等领域的基本问题。在信息检索中,语义相似度能够更多的反映文本概念是否符合用户的查询要求,相似度越高,说明文本内容与用户的查询请求越接近。
刘群、李素建[1]基于实例的机器翻译,提出语义相似度就是两个不同上下文本中的本体概念,在不改变文本的句法及语义结构的情况下可以互相替换的程度。如果位于不同上下文本中的两个概念词语在不改变文本的句法及语义结构的情况下可以互相替换的可能性越大,则说明二者的相似度就越高,否则相似度就越低。
当两个语义概念元素x,y相似时,用sim(x, y)表示两者之间的相似度,形式上,相似度计算满足[2]:
1)相似度的值为[0,1]区间中的一个实数,即sim(x, y)∈[0,1];
2)如果两个对象是完全相似的,则相似度为1,即sim(x, y) = 1 当且仅当x = y;
3)如果两个对象没有任何共同特征,那么相似度为0 ,即sim(x, y) = 0;
4)相似关系是对称的,即sim(x, y) = sim(y, x)。
2 概念语义树
使用层次化的树状结构来描述概念之间的逻辑关系,这种语义化的概念树为检索算法提供语义基础,在检索过程中不同的概念之间也有一定的相似性和相关性,因此需要处理概念树中祖孙节点、兄弟节点等不同类型的关系,我们考虑用概念间的相似度对其进行描述和量化,以提高检索的准确率为了计算概念相似度,作如下定义[3-4]:
定义1:在本体概念的树状层次结构中,如果概念A和概念B之间存在这样的关系:A是B的祖先,则称A和B为同支概念。概念A称为A和B的最近根概念,记为R(A,B),而A、B之间的距离dist(A,B)=dep(B)-dep(A),其中depth(C)为概念C在层次结构中的深度。如图1(a)所示。
定义2:在本体概念的树状层次结构中,如果概念A和概念B之间存在如下这样的关系:A不是B的祖先并且B也不是A的祖先,则称A和B为异支概念。如果概念R是A和B最近的共同祖先,并且是符合此条件的所有节点中距离概念树的根节点最远的一个,则称R为A和B的最近根概念,记为R(A,B),且A、B之间的距离为dist(A,B)=dist(B,R)+dist(A,R),如图1(b)所示。
定义3:概念C 称为概念A 和B 的语义相关概念,当且仅当概念C 满足如下的条件:当A, B 为同支概念时,C 在以A 为根的子树中且不在以B 为根的子树中;当A,B 为异支概念时,C 在以R 为根的子树中且不在以A 或B 为根的子树中。
在计算语义相似度时,A和B各自的子概念数以及它们的语义相关概念数对相似度计算结果也有影响, 当A,B为同支概念时,A的子概念由B的子概念和A,B的语义相关概念组成,前者所占的比重越大,则概念A,B的语义相似度越大;当A,B为异支概念时,R的子概念由A 的子概念、B 的子概念以及A,B 的语义相关概念三部分组成,前两部分的比重越大,则A,B 的语义相似度越大。
1)当A,B为同支概念时,A与B之间的语义关系为:
式中,m表示概念B的子概念数,n表示概念A的子概念数。
2)当A,B为异支概念时,A与B之间的语义关系为:
式中,m表示概念B的子概念数,n表示概念A的子概念数,X表示A与B最近根概念的子概念数。
定义4:两个概念之间的语义距离,是指在语义树中连接这两个概念的最短路径的长度。语言学研究认为,两个概念的语义距离越大,其相似度越低;反之,两个概念的语义距离越小,其相似度越大,两者之间可以建立一种简单的对应关系。特别地当两个概念之间语义距离为0 时,其相似度为1;当两个概念之间的语义距离为无穷大时,其相似度为0。两个概念之间的语义距离表达式为:
式中,distant(A,B)表示概念A与B之间的语义距离,weighti表示连接A,B的最短路径上第i 条边的权值。
定义5:概念的深度是指该概念与语义树根的最短路径中所包括的边数。因为在语义树中,每一层的概念都是对上一层概念的细化,由此可见,在语义距离相同的前提下,两个概念的深度和越大,概念之间的相似度越大;两个节概念的深度差越小;概念之间的相似度越大。概念深度的表达式为:
式中,depth(A)表示概念A的深度,n表示概念A与语义树根之间的最短路径中所包括的边数。
3 语义相似度计算方法
考虑概念语义树中概念之间的层次关系、继承关系及语义关系,我们提出下面这个关于语义相似度的就算方法:
其中:Level(A,B)表示概念之间的语义关系对相似度的影响;
Distant(A,B)表示概念之间的语义距离对相似度的影响;
Depth(A,B)表示概念之间的深度对相似度的影响。
但对概念语义树中层次结构分以下这两种情况考虑:
1)当A,B为同支概念时,A与B的语义相似度为:
2)当A,B为异支概念时,A与B的语义相似度为:
α,β,γ为调节因子,且α+β+γ=1.
4 实验结果
选取如图2一个简单的实例来计算语义相似度。
选参数α=0.6,β=0.3,γ=0.1,可得到“计算机”与其余各节点之间的语义相似度为:
参考文献:
[1] 刘群,李素建.基于《知网》的词汇语义相似度计算[J].Computational Linguistics Chinese Language Processing,2002,7(2):59-76.
[2] 李玲.面向流程诊断的企业知识相似度匹配工具研究与开发[D].哈尔滨:哈尔滨工业大学,2006.
为了不断提高技能水平,增强就业竞争力,高职院校的学生在取得大专学历的同时,努力获得各种职业资格和岗位资格证书,而全国计算机等级考试一级MS Office就是其中之一,它用以测试学生的计算机应用知识的掌握和实际操作能力。从历年我校学生参加的国家一级MS Office考试的成绩(满分100分,60分及格)来看, 过关率排名在全区范围来讲即使相对比较靠前,但绝对成绩还是较低,这充分证明了传统教育模式的弊端。
因此,笔者尝试将CDIO理念应用于高职院校计算机基础课程的教学中,分析CDIO指导下教学的特点和实施教学的思路,以包头轻工职业技术学院为例,结合本校计算机基础课程的目标和学生的特点,探索一种新的教学模式。
2 CDIO简介
CDIO代表构思(ConcEive)、设计(Design)、实现(Implement)和运作(Operate) ,它以产品研发到产品运行的生命周期为载体 ,让学生以主动的、 实践的、课程之间有机联系的方式学习工程。
CDIO理念是做中学和基于项目教育和学习的集中概括和抽象表达。它提出系统的能力培养方案与实施办法,与我国高职院校所倡导的项目教学及校企合作办学在理念上具有一致性,这就决定了CDIO引入高职教育具有十分重要的作用。
从2000年起,麻省理工学院和瑞典皇家工学院等四所大学经过四年的探索研究,创立了 CDIO 工程教育理念。国内最早引入CDIO工程教育理念的是汕头大学工学院,经过多年的实践表明,CDIO理念非常适合工科教学的各个环节。目前国内已有近四十所CDIO试点高校,并且教学改革多集中在本科院校的机械、电气、土木这些学科类别进行,而高职院校对于这种教学模式的渗透相对较少。
3 计算机应用基础教学改革策略
3.1 编写适合教学要求的教材
根据教学要求和改革思路,以及国家一级MS Office考试大纲的要求,编写一本相适应的教材,教学内容应该突出应用性和先进性,希望学生能够学以致用。教材一共可以分为七章,第1章计算机基础知识,第2章认识Windows 7操作系统,第3章文字处理软件Word2010,第4章电子表格处理软件Excel2010,第5章使用演示文稿制作软件PowerPoint2010,第6章计算机网络基础知识。其中第1章和第6章是纯理论性的知识,可以以选择题的形式考核同学们的掌握情况,其他章节我们可以分为若干个任务,每个任务对应1~2课时的教学内容,每章之后还有实训的要求和内容。其中任务部分较为详尽地介绍一些实用的操作,如同老师在手把手地对学习进行实践操作一样,而实训部分则结合任务内容提出一些要求,学生在思考之后才能进行操作,以期对基本操作水平进行巩固提高。
3.2 灵活运用教学方法和手段
坚持以教师为主导、学生为主体的现代教学理念,课程的实训环节将教学内容设计为教学项目,围绕项目的完成开发若干任务单元,每个任务单元的实施都包含构思、设计、实施、运作等4个环节。教师在教学过程中应该灵活采用个案教学、项目教学、问题教学、任务驱动式教学、启发式等教学方式方法,以充分调动学生的学习积极性,加深其理解。教学做之间形成良性互动、互相促进,整个项目设计的精髓是实践性和可操作性,项目设计环环相扣,紧紧围绕所需学习和掌握的内容,形成一个整体教学方案和授课模式。比如说利用Word创建一份个人简历。该项目涉及到以下几个主要知识点:表格的基本操作、编辑和排版文档、图片的处理。教师可以引导学生充分发挥自己的潜力,利用已学的知识设计一份精美独特的个人简历。首先进行构思,个人简历一般包括哪些部分,学生们可以借助网络等手段进行查阅资料,得到结论,一般可以分为封面,基本情况和自荐信三个方面。接着大家就可以开始查找素材,选择适合自己风格的封面图片,根据需要创建并填写表格,以这种简明扼要的表现方式展现自己的基本情况,最后写一封自荐信。一边制作思考,一边进行格式设置,最后同学们纷纷设计出一份别具心裁的个人简历,之后相互间再多比较比较,取长补短。这样的教学方式特别灵活,学生们的学习兴趣也被激发,转被动型学习为主动型学习,从而提高了教学效果和教学质量。
随着计算机技术的飞速发展与计算机应用领域的不断拓展,用人单位对高职计算机专业毕业生的要求不断提高,给高职计算机专业教学提出新的挑战。实验教学是高职计算机专业人才培养的规定动作和必要环节,是培养学生自学能力、实践能力和创新能力的重要途径。针对高职计算机专业实验教学现状,基于MOOC(Massive Open Online Course,大规模开放在线课程)理念进行高职计算机专业实验教学改革,创建多元实验教学内容,构建全新实验教学模式,创建立体化实验考核方法与构建新型实验教学师资队伍,是实现高职计算机专业“以就业为导向,以能力为本位”教育理念的有力保障。
1 高职计算机专业实验教学现状
1.1 实验教学内容更新滞后
实验教学内容是学生掌握技能的主要来源。目前,高职计算机专业的实验教学内容多依照教材知识点设计,参照教材实例“依葫芦画瓢”,缺乏启发性与创新性;实验内容相对孤立,各实验间不能形成技能体系,学生难以掌握实际应用能力;部分实验内容知识陈旧,不能体现技术热点,与用人单位要求联系不紧密。
1.2 实验教学模式不能满足教学发展需求
合理的实验教学模式是良好的教学效果的前提与保障。传统的实验教学模式主要包括教师演示讲解与操作指导,教师是课堂的中心,学生单一地依赖教师获取知识。教师和学生之间的信息传递为“单向”传递,学生难以在课堂上将所学知识“内化吸收”。随着网络的发展与智能终端的普及,传统的实验教学模式不能激发学生的学习热情,不能充分调动学生学习积极性。
1.3 实验考核方法不能实现多维度考核
考核方法是学习方向的指挥棒。目前高职计算机专业实验课程的考核方法主要包括实验报告、平时作业、阶段考核和期末考核等,由教师完成全部考核。实验报告和平时作业不易实现“一题多卷”,难以评价学生完成的独立性和学习的主动性;阶段考核和期末考核只对阶段学习作出总结,不能实时跟踪学生的学习状态;考核仅由教师完成,存在一定的主观因素。现有的考核方法不能很好地实现“以考促学”的目的。
1.4 师资队伍专业素质有待提高
教师的专业素质直接影响实验教学活动效果。高职计算机专业办学起步较晚,师资力量薄弱。受高职办学层次限制,教师参加培训和参与科研项目的机会较少。随着计算机技术的发展与应用领域的拓展,教师的知识结构与教学思想已不能满足培养“高技能”实用型人才的需要。
2 基于MOOC理念的高职计算机专业实验教学改革
2.1 创建多元实验教学内容
MOOC是一种新兴的网络化智慧教育,其利用网络获取世界范围优秀教学资源的模式给教师提供了一个良好的教学改革思路。基于MOOC理念,以实验教学大纲为基准,将教学内容分解为若干个关联的技能能力点,细化实验内容,突出实验重点;以市场需求为导向,融入ACM大学生竞赛与科研项目,优化实验内容,提高实验课程的实践性、启发性与创新性;以互联网为平台,引入网络优质资源与MOOC在线课程资源,丰富实验内容,增强实验课程的实时性与先进性。充分利用网络资源,优化实验课程知识结构,创建多元实验教学内容。
2.2 构建全新实验教学模式
根据高职计算机专业实验教学特点,构建传统实验课堂、MOOC翻转课堂、网络虚拟课堂相结合的“三个课堂”实验课堂体系;创建理论知识讲解与实践应用操作相结合、教学活动与竞赛/科研活动相结合、单一课程与相关专业课程相结合的“三个结合”的立体教学方法;创建教师引导学生主体模式、小组讨论个别辅导模式、理论分析操作演示模式相结合的“三个模式”辅导方法;构建教师与学生互动、学生与学生互动、师生与企业互动相结合的“三个互动”沟通方式。充分利用网络资源,有机整合教学视频、电子教案、板书讲解与实践操作,构建立体化实验教学模式。
2.3 创建立体化实验考核方法
针对高职计算机专业实践课程的特点,创建考核学生知识掌握情况、激发学生学习兴趣、促进学生全面发展相结合的考核目标;构建操作试为主、笔试为辅,课堂问答/答辩为主、课后作业为辅,实际课堂互动为主、虚拟课堂互动为辅,团队合作为主、创新性为辅的多角度考核指标;创建教师评价、生生互评、学生自评相结合的“师生共评”评价方法。在考核中,将成绩评定渗透到每个教学环节,做到公平公正公开,注重学生学习主观因素的考核,达到“以评促学”。
2.4 构建新型实验教师队伍
实验教学是理论教学的巩固与延展,是培养学生实践能力的重要环节。实验教师的教学活力与实践能力直接影响计算机专业课程的教学效果与学生实践能力的培养。基于MOOC开放、互动的理念,在“走出去、请进来、传下去、动起来”的培养思路基础上,鼓励实验教师积极学习交叉学科知识,积极参与MOOC团队建设,在优化自身知识结构与提高实践能力的同时,开拓教学思路,增强教学能力,从而更好地激发教学活力。
SNS网络是一种社区化网络平台,参与者可利用该平台进行聊天、交友、分享心情等活动,社区网络一经提出,吸引了很多青少年学生,在国内 ,特别以人人网、开心网等带有校园网络性质的校园网吸引了很多大学生,据调查表明,大学生参与这些网络主要目的是为了交友和娱乐,其中又以游戏为主,例如偷菜游戏就曾经风靡一时。计算机网络技术开发,虽然是以丰富人们的物质文化生活为目的,但是作为大学生而言,借助网络工具学习才是主要目的,因此很多学者就如何通过SNS网络进行教学教辅展开了研究,作者所在团队也展开了相应的研究,以江西省教育厅教学改革课题“SNS网络在计算机语言课教学中的应用”为依托,开展把SNS网络概念引入计算机语言课的教学实践。
计算机语言课教学有着和其他课程不同的特点,首先计算机语言课必须要求学生具备计算机,只有这样才能在学习过程中实践验证学到的理论,其次计算机语言课的学习对网络的依赖性较高,因为计算机语言是一种不断发展和创新的技术,要学好这门语言,就必须紧跟时代技术潮流,第三计算机语言课学习对团队要求较高,如今的软件工程已经不是小作坊式的概念,为了完成一项工程,必须集合数据库、界面、语言等多方面人力共同完成,而这些需求不能仅仅依靠项目组之间开会完成。因此根据以上计算机语言学习特点,总而言之一个小的开发团队就是一个小的社团,若干个团队组建一起就是一个大的网络社区,因此把SNS网络概念引入计算机语言课教学大有所为。
在把SNS网络引入计算机语言课程学习前,需要对学生进行一系列的调查研究,本文就调查过程中需要注意的一些问题,提出自己的观点,以供同行参考。
1、对学生计算机语言课程基础进行摸底:不同专业的学生,不同层次和年级的学生,其计算机语言基础不同,有些学生仅仅是学过基本的计算机语言,例如basic语言等,而有的学生则已经学习过高级面向对象语言,例如java语言,而有些学生则是第一次学习计算机语言,因此要摸清学生的语言基础,这对把SNS网络引入计算机课程教学教辅成功很重要。相关问卷可以设计为:之前学过什么编程语言?是否开发过应用软件?等等
2、对学生学习兴趣的摸底:即使是同样专业的学生,对计算机软件课程感兴趣的程度也不一样,有的学生甚至很厌恶学习计算机语言课,这些厌恶学习的学生调查问卷是调查问卷中的噪音数据,因此影响调查的真实性,保证调查问卷的数据真实性,就必须踢出这些学习的调查结果。
3、学习交流方式的摸底:有的学生学习喜欢一个人慢慢的摸索,有的喜欢在网上提问,而有的学生则很喜欢和同学进行交流沟通,因此在调查过程中,可以设计如学习过程中,你喜欢什么方式和老师沟通?利用网络进行语言课学习你认为是否有必要,你是否会参与等等问题。
4、对SNS网络的了解摸底:虽然SNS网络已经大行其道,但是对于SNS网络这一名词还是有很多人感到陌生,因此在调查之前要先讲明SNS网络的概念,并调查中要设计例如是否听说过人人网、开心网?是否进行过网上交友?如果您经常性进入某一网站,你最希望得到 ?如果有个学习论坛,你期待他能有什么功能?
5、对上网时间的调查:上网时间的调查目的是为了调查学生对网络的熟悉程度,对在网络上进行搜索能力的高低,同时也可以调查出学生利用网络进行自我学习的积极性和所占课余时间的比重。
当然进行调查问卷涉及方方面面,不可能仅仅是在以上五点,本文仅仅是从SNS网络引入计算机语言课教学调查问卷出发,就相关注意方面提出自己的观点,对于SNS网络在其他教学中的应用则应该根据实际情况而定。(作者单位:江西科技学院信息工程学院)
本文在江西省教育厅教学改革课题“SNS网络在计算机语言课中的应用”(编号为JXJG-11-19-15)和江西科技学院教学改革课题“SNS网络特性的教学辅助平台”(编号JY1303)资助下完成,特提出感谢。
参考文献
“C语言程序设计”是高等学校的公共基础课程,该课程要求学生了解程序设计的基础知识并通过基本的编程训练,培养大学生的计算机应用能力和软件设计的基本能力[1]。C语言程序设计概述(下简称“概述”)是课程的第一讲内容,一般包括计算机程序设计的基本概念、C语言的产生及发展过程和C语言程序设计的特点[2]。作为课程的导入课,“C语言程序设计概述”的课堂教学应该树立起学生对课程的宏观和整体认识,要解释和回答好以下几个问题[3]252:为什么要学这门课?这门课有什么用途?什么是计算机语言?计算机语言和人类自然语言有什么异同?什么是程序设计语言?程序设计语言是什么样的计算机语言?C语言又是什么样的程序设计语言?如何学好C语言?传统的课堂教学往往对上述问题没有完全回答或回答得不好。
2教学内容设计
笔者曾经做了这样一个调查,对正在学习C语言程序设计课程,而且学习已经接近尾声的学生进行问卷调查。75%的学生回答不出来课程有什么用?85%的人不能准确说出“计算机语言”的概念,80%的人不能说出到底什么是“C语言”?70%以上的学生认为没有十足的把握一次通过计算机二级考试。从这个调查问卷,发现笔者的“C语言程序设计”教学真的很失败――学生连最基本的概念都没有掌握,我们感到上好“概述”真的十分重要。教师在讲解“概述”时,一般就是从给学生演示“程序编辑调试”入手,进而讲解C语言的发展,接着讲解C语言程序设计中的数据类型、控制语句等。殊不知,这些学生都是从高中才进入大学,他们对程序设计可能一无所知,乍一接触这些知识,一下子可能无法接受,更有学生从此就失去了学习“C语言程序设计”的兴趣。
2.1设问解答式教学思路[4-6]
“概述”是C语言教学的敲门砖,上好这一节课,直接影响到后续章节的成败。讲述这个内容时,我们首先需要讲解这门课程的重要性,使学生认识到这门课必须要学好。在学生还不知道课程内容时,适当地通过课程提问,逐一分析解决,使学生认识到C语言的强大功能,产生学习的动力,希望学好C语言,了解C语言的学习方法。如图1所示。
2.2承上启下讲解课程的性质
对于学习,人总有一种想法,重要的东西才去学。对任何一门课程,教师必须要跟学生强调这门课程的重要性,从扩充知识体系方面去强调重要性,同时要用通俗的语言来提起学生的兴趣。对于C语言程序 设计,我们采用了如图2所示的讲解方法,使学生初步了解课程的重要性。
2.3层层递进提出问题
设问解答式在教学中已经成为一种流行的教学方法,但在问题设置和解答方面都要有技巧。很多人习惯提的问题是某一讲内容的重点、难点,殊不知,学生还没有开始内容的学习,如何能做到对提出问题有印象,从而做出解答。针对学生对程序设计的了解情况,我们设置以下问题,这些问题层层递进,如果学生了解了这几个问题,那么就对C语言有了一定的了解:
1) 有了丰富的人类语言,为什么还要有计算机语言?
2) 计算机语言有何特征?
3) 程序设计语言是一种什么样的计算机语言?
4) C语言是什么样的程序设计语言?有何特点和作用?
5) 如何学习C语言?
2.4教学方法和技巧――解决问题
2.4.1为什么要学习计算机语言
这是每个计算机初学者遇到的问题,我们利用图3所示的方法来使学生了解计算机语言与人类语言的区别:计算机语言是人与电脑交流的工具,计算机看得懂;而人类的自然语言是人与人交流的工具,计算机不认识。因此我们要指挥计算机做事,就必须要学习计算机的语言。
2.4.2计算机语言家族
有学生认为所有的语言学起来都枯燥无味,计算机语言也不例外。这个时候我们可以列举一下“图灵奖与计算机语言”,如图4为计算机语言的类别,通过讲解让学生了解到计算机语言的大师们对计算机语言的贡献,对计算机及信息技术发展的贡献,使他们感受到计算机语言的魅力,激发学习兴趣。
2.4.3以独特的视角展现“C语言”特色
学生在了解了计算机语言的概念后,肯定很想知道计算机语言的特征,我们抓住学生的心理特点,将C语言的特点总结如下:
1) 严格定义,有严谨的语法;
2) 语义上无二义性;
3) 比自然语言要精简;
4) 是机器可执行的。
在讲解这一部分时,我们一定要注意与人类的自然语言进行对比,使学生留下深刻的印象。
2.4.4层层细化,讲解C语言的发展
当学生了解了“语言”、“计算机语言”之后,接着即可引入“C语言”的相关知识。讲解过程中,我们始终把握联系实际,由浅入深的步骤[3]252-253,如图5展示了讲解思路,采用图示的方式讲解计算机语言的发展过程:
2.4.5图解“程序”的概念
我们一直强调,要计算机做事,要控制计算机,而其中重要的步骤是编写程序、解决问题。理论上说,计算机可以作任何事情,只要把实际问题抽象、制作为可求解的程序,本过程适宜采用如图6所示的图示方式讲解[3]252。
3结语
我们在全校“C语言程序设计”教学中普遍实施上述教学思路,教师和学生普遍感觉收获颇多,特别是加深了学生对C语言的了解,激发了他们学习的兴趣,课堂教学与实验教学效果都比过去有了明显改善。“C语言程序设计”课程在2010年度被评为湖南省精品课程。通过改革教学内容、改进教学方法使C语言教学更适应学生的需求,便于学生循序渐进地学习相关知识和技能[7]。同时在这个过程中,学生会不断地获得成就感,更大地激发起求知欲望,从而培养出独立探索、勇于开拓进取的自学能力。最终使我们的教学更适用于培养学生的创新能力、独立分析问题和解决问题的能力[8]。
注:本文所涉及内容的视频录像可在湖南工业大学“C语言程序设计”省级精品课程网站:218.75. 216.182/vc/850839观看。
参考文献:
[1] 张锦祥. 高级程序设计语言课程教学改革与实践[J]. 浙江教育学院学报,2007(4):71-76.
[2] 谭浩强. C程序设计[M]. 3版. 北京:清华大学出版社,2005:1-12.
[3] 赵娜. C语言程序设计课程教学研究[J]. 科技情报开发与经济,2007,17(8):252-253.
[4] 郭敏,刘会杰.“目标任务型”教学模式在程序设计课程教学中的应用[J]. 河北广播电视大学学报,2007(2):54-56.
[5] 刘小燕,申艳梅.“C语言程序设计”教学方法探析[J]. 计算机教育,2010(6):94-96.
[6] 杨素吟. 设问讲练教学法在教学中的运用[J]. 职业教育研究,2005(8):59-59.
[7] 温雅敏. 数学专业高级语言程序设计课程教学模式改革探讨[J]. 科技经济市场,2008(5):119-120.
[8] 楼蔚松. C语言教学新模式探索[J]. 现代企业文化:理论版,2009(22):191-192.
Based Question and Answer Style’s“C Programming Language Overview”Teaching Content Design
LIU Qiang, LI Changyun, RAO Juhua
中图分类号:H0-05 文献标识码:A
0引言
人类的语言是人类最重要的交际工具,是内心想法的真实外在表达,是思维的一种具体工具,也是人的重要的特征,在语言表达方面,这是区分动物与人的很重要的标志。当然,随着人类的进华,语言也是在进化的,语言的发展也是一个循序渐进的过程,不是固定的,是随着社会的发展,人类的需求变化而变化的。那么,计算机的语言也是这样的工具,是表达计算机的“思维”的工具,是计算机的交流工具,计算机语言让我们走进计算机的世界,计算机语言τ诩扑慊来说与人类的语言对于人类来说的重要性是有很大的相似之处的。但是,毕竟计算机的语言以及程序的设计等,是由人类的智慧所发明创造和设计的,所以计算机语言和人类语言还是存在一定程度的差异。可以说,计算机语言是在人类语言产生之后才出现的,在很多方面是借鉴人类的语言的,但是在逐渐发展的过程中,不可否认,计算机语言对于人类语言的发展也起到了一定的推动作用,整体来说,计算机语言和人类语言是相互促进的,是相互渗透的,不是完全独立的两种无关语言。
1计算机语言与人类语言的联系
计算机语言与人类语言都是在逐渐的发展变化的,二者在具体的使用方面有一定的差异,同时二者在多角度也有很多相似之处,毕竟二者都是语言的媒介,只是应用的领域和部分具体的内容有差别。每种语言都会在发展的过程中,出现一些约定俗成的规矩,从语言学的角度来分析,计算机语言是一种形式化的人工语言,而人类的语言是人与人之间沟通的感性化的语言,两种语言的定义概念不一样,使用的领域也不一样。
1.1计算机语言和人类语言的基本功能一致
计算机语言是计算机领域使用的语言,是计算机可以读懂的语言,在计算机的操作和程序的设计和执行过程中,都离不开计算机语言,可以说,只要是存在计算机的地方,只要你想利用计算机,那么就涉及到计算机的语言,计算机只有通过固有的语言交流,才可以正常的运行。当然,从这个角度看,人类语言也是如此,人类语言是人类沟通交流的媒介,在人与人交往的过程中,如果没有语言的沟通,那么结果想而知,是非常可怕的。从语言媒介的角度来看,二者的作用都是传播一定的信号和信息,用以达到交流互动的目的。二者的最基本的功能都是沟通和交流,目的是使彼此了解,达到双方的目的。从这个角度来看,计算机语言和人类语言是很一致的。
1.2计算机语言和人类语言的种类都很多
计算机语言的发展经历了一个变化的过程,每一个阶段都有着独特的主要使用语言的形式,最初的机器语言为主发展到现在的面向对象语言为主,期间还有很多种,在发展变化的过程中,逐渐完善的,而且,每一种语言适合的领域也有一定的区别,而且在使用的过程中还存在一定的缺陷和使用的优势,使用范围广、操作复杂等等。人类语言的种类更是繁多,每个领域有差异化的语言,每个民族有自己的语言特点,不同的场合使用的语言有着不同的表达方式等,这些都是人类语言的特点,汉语、英语等,也是语言种类之间的差异。计算机语言和人类的语言在语言种类方面,有很高的相似度,可以说都是非常繁多的,语种之间还是有一定的差异。
1.3语言存在主流和非主流之分
计算机语言虽然有很多种,但是还是有主流和非主流之间的区别的,计算机语言的Java和C++语言在日常的使用过程中出现的频率还是非常高的,但是其他的一些功能不是非常强大或者存在一定缺陷,在软件的设计中可能会被使用的频率就会偏低。人类语言也是如此,汉语、英语在整个语言的使用范围内,还是处于首要的地位的,一些相对较小国家的语言几乎是在一定的范围内使用,在国际场合中,一般不会出现。两种语言在主流使用方面也存在一定的相似联系。
2计算机语言与人类语言的差异
计算机语言和人类语言都是语言,理论上来说二者都是交流的没接,只不过交流的具体对象不同,二者因此有很多的相同之处,但是在其他一些方面,二者同时也存在很大的差别,毕竟二者从概念上来讲,不是一种同语言,任何事物的存在都有着自己的特性的,语言也正是这样。下文简单分析计算机语言和人类语言具体在哪些方面存在不同点。
2.1二者的发展方式不同
人类语言是一种常见的、存在于人与人之间的最普遍的事物,可以理解为是自然界中最基础的、也是最重要的事物,是最贴近生活的事物,可想而知,人类语言的发展是建立在人们的日常的沟通交流中的,而不是出于科学的研究,是一种自然而然的变化过程,就是日常的使用需要的产物,至于后期有关专家学者对语言的研究,都是建立在语言背后的变化基础之上的,而不是先研究后出现的发展变化。而计算机语言并不是与人类语言一样的发展的方式,计算机语言的发展是为了满足人们逐渐提高的要求而产生的,理论上来讲,人们对计算机的应用只是应用已有的功能,对于没有专门研究的功能是不可以直接使用的。那么,为了满足这样的需求,有关研究人员就会对此作出改进和完善,设计出更加符合当前实际需求的语言,当然,人们对之的利用是在科学研究成果之上的。二者在发展方式方面的差异还是非常明显的,毕竟人类语言趋于普遍化,而计算机语言是一种前沿的科学技术。
2.2二者感彩不同
计算机语言就是一种机器的语言,是在人类的设定好的语言程序基础上才可以实现的,所以,只会执行一些固定的语句,并不会按照自己的感情来表达自己的情绪和意愿,是机器的操作,没有任何的感彩,绝对的理性执行。但是,人类语言则不是这样的,我们在日常的交流和表达自己的感情过程中,除了拍剧,其他时刻表达的都是自己当时的感情,并没有任何事前的设置,一切都是感情的真实的感情表达,具有非常浓重的感彩,与计算机的语言存在很大的差异。
3计算机语言与人类语言的相互渗透关系
计算机语言是计算机用于执行程序和设计软件的语言,是一种机器的语言;人类语言是人与人之间沟通的语言,表达自己感情的语言,虽然二者看似很远,但是在二者的发展过程中,都会受到对方的影响,彼此还是会做出一定贡献的,二者之间对彼此产生的影响也是不容忽视的。下文具体说明计算机语言和人类语言在彼此的发展壮大过程中,二者是如何渗透、如何相互促进发展的。
3.1人类语言对计算机语言的影响
(1)人类语言使得计算机语言表达的具体化。人类语言非常博大精深,但是计算机语言相对匮乏,因此出现很多使用人类语言开理解计算机语言的情况。比如,run在人类语言中是“奔跑”的含义,被计算机语言多借用,还以为“运行”,body在人类语言中是身体的含义,但是爱计算机语言中可以理解为“主机”,类似这样的词语有很多,在此不一一列举。从以上例子中不难看出,计算机语言的具体表达依赖的是人类语言的存在。
(2)人类语言使得计算机语言的表达简化。计算机的语言中有很多是英文大写字母的缩写,这样的词语表达的完整含义是这些英文字母的连续拼写,但是计算机语言中,为了表达的更加简便,就会出现将完整表达的英文的首字母按照顺序表达出来。这样的计算机语言的表达,也是出自于人类语言的丰富和完整。
(3)人类语言为计算机语言的存在提供了多样的基础。人类语言的壮大和逐渐的发展,是计算机语言发展的基础,计算机语言出现的比较晚,那么,如果计算机语言刚出现就以一种新鲜的陌生的方式出现,那么必然很难被人民群众一时间完全接受,一般来说,人们是比较容易接受固有存在的事物,所以,计算机语言的出现以人类语言为基础是一个很好地选择。
从以上的人类语言对计算机语言的具体影响中,不难看出,计算机语言是在人类语言的发展基础上发展起来的,本来计算机语言的起步就会晚于人类的语言,那么,计算机语言的发展植根于人类语言,人类语言是计算机语言的根源和依托。
3.2计算机语言对人类语言的影响
人类的语言发展和壮大的来源是非常广泛的,当然,人类语言的发展有一部分是来自于计算机语言的,具体的渗透影响包括以下几个方面。
(1)计算机语言为人类语言的发展提供了丰富来源。计算机是一种机械的语言,有很多固定含义和固定应用的语言,那么在生活中就可以把这样的语言按照所想要表达的感情直接用计算机的语言表达出来,久而久之,这样的形象利用就会被广泛使用,逐渐成为人类语言的一部分,丰富了人类的语言,一定程度上促进了人类语言的发展壮大。
(2)计算机语言提高了自然语言的规范化。人类语言,我们都知道,是一种子日常中用于交流的语言,那么出现很多口语化、地方化的语言和文字,如果在其他范围使用这样的文字和语言,或许出现很大的语言的障碍。计算机语言的出现,由于设计程序的规范,计算机中出现的文字就会相对比较规范,人们长期使用计算机,就会潜移默化的影响自己的使用语言的习惯,这样规范化了人们的用于,提高了人类语言的正规化。
4总结
通过以上的分析可见,自然语言和计算机语言在很多方面存在一定的联系,同时区别也是很明显的。无论是否一致,二者在发展的过程中在逐渐渗透是一个不可否认的事实,彼此在发展壮大自己本身的同时,对另一者的发展也起到了很大的作用。再坚实的根基也需要上层建筑的壮大,人类语言的基础要做好,会加快计算机语言的发展;计算机语言在发展过程中,反过来会推动人类语言的规范化等。
参考文献
[1] 漆慧.计算机语言与人类语言的互相渗透[J].电脑知识与技术,2005,24:66-67.
[2] 克里斯托弗・曼宁,竹西.跟懂得人类语言的计算机聊天[J].博鳌观察,2016,02:76-79.
[3] 本报记者蒋波.让计算机听懂人类语言[N].人民日报海外版,2015-08-29008.
[4] 张爱香.计算机语言发展历程综述[J].中国科技信息,2013,24:120-121.
2、必须“尽快终止”程序设计的教学吗?
最后提出了作者的看法:“中学计算机课程要以基础性知识和技能性操作为主,程序设计是更高层次的学习内容” 。在时间和学生的接受水平允许的情况下应该并尽可能早地在计算机课中安排一些程序设计内容,但内容和深度要根据不同年龄的学生认知特点做精心的安排。
当前关于中小学计算机课程设置的一个争论焦点是计算机课程中要不要有“程序设计”的内容,如果有,应该要求到什么程度?下面我们专门来讨论这个问题。
一、澄清几个概念
1. 计算机语言≠程序设计语言
在一些教师的脑中和普及计算机知识的书中,常把这两个概念混为一谈。例如一本全国范围发行的计算机普及读物中写道:“为了和电脑交流信息,也要通过语言,……,由于电脑语言就是用来告诉电脑按次序干什么事情的,所以电脑语言又称为程序设计语言。”可见这个问题不是个别人的问题,而是带有普遍性的问题,必须加以澄清。
什么是计算机语言?“①狭义的指计算机可以执行的机器语言。②广义的指一切用于人与计算机通讯的语言。包括程序设计语言,各种专用的或通用的命令语言、查询语言、定义语言等。”[1]现在一般采用后一种说法。
什么是程序设计语言?“泛指一切用于书写计算机程序的语言,包括汇编语言、机器语言,以及一般称为高级语言的完全符号形式的独立于具体计算机的语言。”[1]
上面两段引言很清楚地说明了计算机语言与程序设计语言之间的区别和联系。计算机语言是外延较大的概念,程序设计语言只是计算机语言下的一个属概念。“我们和计算机打交道,就要用计算机语言”这句话是对的,但用计算机语言与计算机打交道,不一定要用程序设计语言。我们用DOS命令,就是在用计算机语言棗命令语言;我们用鼠标单击某一图标,让计算机执行某一操作也是一种计算机语言。但它们都不是程序设计语言。当然这些命令语言,最后都要翻译成机器语言去执行,但这是计算机内部运行机制的问题,绝不能以此为理由把这两个概念混为一谈(否则也不用区分机器语言、汇编语言和高级语言了,因为它们最终也都要翻译成机器语言)。
弄清了这两个概念的不同,一些说法的正确与否也就不言自明了。例如有人说:“人们交流要通过语言,人要和计算机打交道,也要通过语言,所以要使用计算机必须学习程序设计语言。”前半句话指的是计算机语言,而后半句话指的是程序设计语言,由于“偷换”了概念,推理不合逻辑,结论也就不可靠了。当然说这句话的人,我相信绝不是有意的诡辩,而是由于概念的混乱,自己欺骗了自己。 我们使用计算机,和计算机打交道,一定要学习计算机语言。我们学习DOS命令,学习Windows操作,就是学习管理计算机资源的语言。我们学习某种应用软件的操作,也是学习计算机语言。总之,我们在学习计算机知识的过程中一直在学习计算机语言,一直是通过计算机语言和计算机打交道,但这不是程序设计语言。也就是说,学习使用计算机,一定要学习计算机语言,但不一定要学习程序设计语言。
2. 学习程序设计≠学习程序设计语言
在讨论中另一个模糊的概念是把学习程序设计和学习程序设计语言混为一谈。
我国著名的科学家马希文教授写道:“用一串符号把一个计算机过程描述出来,就是一个程序。……要制定一些严格的规则,以确定什么样的符号表示什么样的程序。这些规则的总和就叫做一种语言。”[2]
马希文教授又接着写道:“一个完整的程序设计过程大体有以下几个步骤:(1)要把程序的功能描述清楚。……(2)用程序语言把预定的计算方案书写出来。这是程序设计中最有特色的部分。简单的计算可以直觉地进行程序设计。复杂的计算往往可以由简单的程序按照各种模式搭配而成。然而,却没有一种机械的办法可生成各种程序,换句话说,程序的设计是一件具有创造性的工作。(3)证明程序的正确性。……(4)在实际工作中,试算和修正是不可缺少的。” [2]
从上面两段引言中可以看出,语言是“严格的…规则总和”,我们学习一种程序设计语言,就是学习这种语言的规则,即学习语法、语义、程序及其他一些规定。这里涉及的是严格的定义,严格的书写方法,没有任何的创造性可言(一个字母一个标点都不能错)。而学习程序设计是学习“设计过程”,内容主要是描述功能、书写方案、证明正确性和试算和修正。程序设计“是一件具有创造性的工作”,两者有着根本性的区别。 当然学习程序设计一般应选用一种语言作为工具,学程序设计就必须学程序语言,学习时两者是不可能绝然分开的。但问题是各自的地位是什么?以哪个作为重点?我们中小学的教学目标是什么?是让学生掌握一种程序语言呢?还是把程序语言作为一种载体,一种学习程序设计的工具,而把教学目标和重点落在程序设计的思想方法上?这就是当前计算机教学中的带根本性的分歧点。目前很多计算机教师在进行程序设计教学时,往往把很大的精力,甚至是主要精力放在语法和语义上,他们不自觉地把程序设计的课上成了“程序语言”课,违背了我们的教学目标,原因就是没有真正区别清楚程序设计和程序语言这两者之间的不同。
二、程序设计是中学生计算机课程的基本内容吗?
1.一部分人明确地提出计算机课中必须有程序设计内容,理由是“它是计算机学科的核心内容”。这里涉及到两个问题,一是程序设计是否是核心内容;二是中学计算机课程是否应该按计算机学科专业要求来设置内容。
对于第一个问题,在大学计算机本科教学计划《计算机教学计划1993》中列出了计算机学科主科目有九项,而“程序设计”仅是其中一项[3]。为什么在9项中只选择了“程序设计”这一科目为核心科目?为什么不选其他科目?理论上和实践上的根据是什么?
对于第二个问题早有定论,中学是基础教育不是专业教育,课程应该主要根据社会的需要来设置,同时考虑学生的接受能力和学科本身的需要。提出上述看法的人,不自觉地受到了“学科中心论”的影响,其理论基础就是错误的,因此论点也就不能成立。
2.有人认为,选“程序设计”内容是因为它可以培养学生的“分析问题和解决问题的能力”。这个论点在一定条件下说是正确的。我国十几年来在国内外计算机程序设计竞赛中,涌现出大批的优秀人才,这些学生的分析问题和解决问题的能力,通过程序设计锻炼确实有不同程度的提高,他们进入大学后的表现也证明了这点。 但研究任何问题不能脱离实际抽象地论证。我们这里谈的不是竞赛,不是少数优秀学生的课外活动,而是全体学生都要学习的计算机课程,即素质教育。目前我国计算机课一般在高一开设,总共只有60-70学时。在这几十学时内要学习计算机基本知识、基本操作,还要学习应用软件的使用以及操作系统的初步知识。这样留给学习程序设计的时间至多只有30多学时。在这样少的课时内,能学多少程序设计的内容?全体学生能达到什么水平?分析问题和解决问题的能力能有多大提高?根据笔者十几年的教学实践,至少需要40以上学时大部分学生才能学会初步BASIC程序设计,80以上学时才能进行真正的程序设计(算法设计),这时候才能真正谈及能力的提高。
另外,我们这里讨论的不是一些小问题,而是涉及到国家政策的制定,关系到千百万学生的大问题。因此结论必须有比较可靠的理论和实践根据,只凭个人直觉和的经验是不够的。提出这一结论的人能拿出什么比较可靠的科学的依据证明这一点?目前我们还没有看到。而国外一些实验却对这一假设作出了否定性的结论。美国的玛霞·林和她的同事在1985年的一份报告中表明,“在普通学校,学生在学习程序设计语言时,一般能力是重要的。能力低的组,最后程序设计语言成绩评定也低。能力高的组,最后成绩也高。”[4]美国银行街的柯兰德等人的报告也指出:“要成为程序设计的专家,至少要有500小时以上的上机时间,而大部分只有10-12台微机用于程序设计课的学校,上机时间很少,即使一些学生家里有计算机,对他们最后程序设计能力的测量,效果并不显著。”[4]虽然我国与美国相比有很多特殊性,美国的结论不能照搬到我国来,但还是有很大参考价值的。 因此,在较短时间内的程序设计课,能否使大部分学生的分析问题和解决问题的能力有所提高,仍是需要研究的课题。
3.有人提出学生学习BASIC程序设计目的是为了使他们懂得“计算机能做什么,是怎样工作的?”
这句话如果是在70年代或80年代初讲的,有一定的道理,因为那时计算机软件还很不丰富,使用计算机解决问题,大多数情况下还必须使用者自己编程。并且在编程时必须了解计算机的软硬件结构和工作过程。但在计算机的软、硬件的功能、数量和质量极大发展的90年代,还拿来作为学习程序设计的主要理由,似乎有些过时了。目前在简单的BASIC程序设计和具有强大功能的应用软件之间已产生了一道鸿沟,两者之间差距非常大,要通过简单的BASIC程序设计学习来了解现代计算机系统的功能,犹如“瞎子摸象”。在应用软件中表现出来的一些计算机能力,在简单的BASIC程序设计中很难得到。例如文字处理软件中的块操作和排版功能,超文本链接功能,在简单的程序设计学习中就很难体会到。反之,通过应用软件学习所能了解的计算机功能却大大超过简单程序设计中的功能。例如应用软件中的打印功能已大大超过BASIC中PRINT(打印)语句所能了解到的功能;输入功能也大大超过INPUT语句所能提供的信息。
马希文教授也早就指出:“我们研究程序设计时,可以选用一种适当的语言。这样,我们就可以只研究用语言书写的程序,而不去过问这种程序在具体计算机上到底是怎样实现的。从这个意义上说,语言就是一种抽象的计算机。”[2]也就是说学习程序设计,特别是高级语言的程序设计,了解的是抽象的计算机。什么是“抽象”?抽象就是“从许多事物中,舍弃个别的、非本质的属性,抽出共同的、本质的属性。程序设计中的抽象,马希文教授在上面这段话中已说得很明白,即“只研究用语言书写的程序,而不去过问这种程序在具体计算机上到底是怎样实现的。”。既然舍弃了“在具体计算机上是怎样实现的”内容,怎么能通过程序设计来懂得“计算机能做什么,是怎样工作的”呢?
当然上述说法在一定意义上还是有可取之处。一个计算机系统可以被看作是由硬件和软件按层次方式构成的,每层表示一组功能和一个接口。每一层都在一定深度和范围反映计算机系统的功能和工作状况[5]。学生们学习应用软件的知识和操作只是从最高层面上了解计算机的功能和工作状况。而学习程序设计则是从更深一层面,即语言处理层面来了解计算机的功能和工作状况。因此我认为如果上述说法改为“学习程序设计是从更深的层面,从语言处理的层面上了解计算机能做什么,是怎样工作的。”就无可非议了。
三、必须“尽快终止”程序设计的教学吗?
1997年国家教委收到了两封信件,一是联合国(UNDP/CPR)首席技术顾问大卫·艾伦写的;另一封是纽约市立大学约克学院传播技术级电脑中心主任黄哲操写的。信中他们对我国的计算机教育事业提出了很多好的建议,但也以美国为例对我们发出了警告:“尽快终止中小学作为普遍的教学要求的计算机语言课”“如不彻底改变方向,一切证据表明中国中小学计算机教学将面临最大的灾难。”
对于这样严厉的警告,我们应如何看待?当然应当认真地研究他们的建议和批评,吸取其中有用之处。但我认为,最了解中国的是我们自己,中国和美国相比较,在经济发展上,在文化传统上有很大的差别。在美国是好的经验,在中国不一定是好的;在美国行不通的、失败的办法,在中国可能会成功。我们已经有了十几年的计算机教育经验,我们必须根据我国的国情,来决定我们的政策。
我国的一些教师也有以上类似的看法,他们认为:“计算机学科没有必要学习程序设计,只需要学习计算机操作方法和一些社会上流行的软件使用就可以了。”而且还提出了“一些学生在学校学习了程序设计,到社会上完全无用,仍需从头学起”的说法。 由于计算机信息技术的发展,大量的软件涌现,计算机处理各种信息的速度和功能大大提高,一般的应用都有现成的软件,不必要自己编程。因此上面看法有其正确的一面。过去的计算机课教学,由于各种原因以BASIC语言教学为主,忽视和根本没有实际操作和应用软件的使用。不论是中学还是小学,不论是普通中学还是职业高中,无一区别都是一个模式。因此在一定程度上造成了学非所用的结果,特别是对准备毕业后立即就业的那部分学生。
但上述说法从基本点上、从理论上说是不正确的。首先,这种说法指导思想是受了“社会中心”论的影响,即当前社会上需要什么就学什么,是一种急功近利、实用主义的做法。
我们不反对从社会需要出发来考虑课程的设置,不但不反对,而且要提倡。我们也不反对学习一些实用的应用软件,而且赞同在新教材中增加一些应用软件的内容(我个人认为,在初中的计算机教材中,实用部分可以占全部内容的 70%到 80%)。但在这里,我们和持这些观点的人有一个根本上和原则上的区别:我们不但考虑社会当前的需要,而且更注重社会长远的需要。我们不但着眼于学生当前学习和就业的需要,更注重学生将来的学习以及终生教育的需要。出发点不同,在内容的选择上,在教材的安排上,以及在教法上,就会有根本性的区别。 上述观点第二个错误是混淆了不同教育的性质。普通中小学教育是素质教育,它与职业教育不同。上述观点把素质教育与就业教育等同起来了。
就是职业教育,上述观点也是不完全正确的。我们教给学生的不仅仅是知识和技能,而更重要的应该是能力。这就不能是“知其然,而不知其所以然”。不懂得汽车的基本原理也能开车,但绝不可能成为一名优秀的驾驶员。同样道理,如果只会一些具体应用软件的使用,不懂得有关的基本原理和知识,就不可能很好地使用计算机,成为一名优秀的计算机应用人员。我很赞同下面一段很有哲理性的话:“必须坚持技术基础教育和实用技术教育兼顾,... 如果不进行技术基础教育,就缺乏后劲,难以掌握高技术;如果不学习当地的实用技术,就不易起步,难以把最基本的科学技术运用于生产,把可能的生产力转化为现实的生产力。……按照布鲁纳的知识迁移理论, 扎实的技术基础教育,有利于学生去掌握实用技术,起到举一反三作用;良好的实用技术教育,有利于扩展和提高技术基础教育,起到触类旁通的作用。”[6]而且将来的社会职业的变动将是很频繁的,一生中职业变动四五种是常事。这就更要求我们的教育从学生的长远着想,注意基础知识的教育,注意能力的培养。
四、程序设计方法尽可能早学习
我认为计算机课程还是应该安排一些初步的程序设计的内容,而且越早越好。为什么要安排一些初步的程序设计内容?我的理由与上述的几种不同。
第一个理由是,计算机学科有于其他学科很不同的特点。关于这一点,当代著名的计算机科学家唐·依·克努特(D.E.Knuth)在他的巨著《计算机程序设计技巧》中有很精辟的论述。他写道:“能把问题的解法表达成计算机能够‘理解’的一种明显形式(这些机器没有普通的感觉;它还不会‘思考’。但它能准确地不折不扣地去做让它做的事情。当一个人初次试图使用一台计算机时,这是最难以掌握的概念)。”[7]。但是这个“最难以掌握的概念”又是真正学会使用计算机所不可缺少的。怎样来掌握它呢?经验告诉我们,学会计算机的初步操作,学习一些应用软件的使用,能初步了解这个概念。但是要真正理解和掌握这个概念,学习程序设计是一个较好的途径。程序设计要建立数学模型,要进行算法设计,这些就是克努特所说的“把问题的解法表达成计算机能够‘理解’的一种明显形式”;在用计算机语言进行编程时,就要了解有哪些语句,它们的功能的什么。这些实际上就是了解计算机“能准确地不折不扣地去做让它做的事情”。
第二个理由前面已说及,即学生们学习应用软件知识和操作只是从最高层面上了解计算机的功能和工作状况。而学习程序设计则是从更深一层面,即语言处理层面来了解计算机的功能和工作状况。
第三个理由是程序设计虽然不是计算机科学核心课程,但它是一个基础课程。计算机学科的其它课程,如操作系统、数据结构等,除学习一些理论外,很重要一项就是在计算机上实验,这些实验大部分要编程序,也就是要会用一种计算机程序设计语言编制相应的程序。所以大学计算机专业都把学习一种程序设计语言作为基础课程之一。如果在中学就给学生打下这方面的基础,就有利于学生今后的继续学习。那些在中学已学会了程序设计的大学生回来的反映,很清楚地证明了这一点,我们的基础教育任务之一是为高一级学校培养后备力量,也为学生将来进一步深造打下良好的基础。在中小学打下程序设计的基础,有利于他们进入大学的深造和就业以后的继续教育。
为什么要“尽可能早学习”呢?在计算机普及工作中,很多教师都有这样一种体会,只要内容和教法适当,程序设计入门,初中学生比高中学生容易,甚至高年级小学生比初中学生容易,最困难的是成年人(这里不是针对个别人,而是大多数人来谈的,即从统计的角度来谈的)。这种“怪”现象如何解释呢?
根据现代认知心理学的理论,人的头脑中的知识,不是杂乱无章地或简单地存储着的,而是有一定的结构,即认知结构。学习就是科学的逻辑结构和人的头脑中的认知结构之间的矛盾和转化。“当儿童认识一种新事物时,总是先用原有的图式(即认知结构)去同化(即把新知识纳入原有的认知结构中),如获成功,便得到认识上的平衡,否则就进行异化,调整原有图式或创造新图式,直至取得新的平衡为止”[8]。
程序设计是一种新的知识结构,它与其他学科的结构,如数学知识结构、物理知识结构等,有很大的区别。唐·依·克努特的论述中提到“这是最难以掌握的概念”,为什么“最难以掌握”?就是因为这种知识结构与以往人们学习的知识结构有很大的不同。
因此当一个初学者学习程序设计时,在把这种新的知识结构纳入自己原有的认知体系中(同化)时,由于结构差别太大,就会遇到原有结构的“顽强抵抗”,必须创建新的认知结构。而在这种新的认知结构的创建过程中,如果原有的认知结构越牢固,创立就越困难。一般地说,年龄越大认知结构就越牢固,越不容易改变。这就造成新的结构建立成人比高中生困难,高中学生比初中学生困难的现象,而小学生头脑像一张白纸,最容易接受新的东西。
从上面的分析,可以得出这样一个结论:尽早地学习“程序设计”这种知识,就会减少进一步学习的障碍。当然这种“程序设计”知识结构对于不同年龄的学生,它的内容多少,它的复杂程度的高低应该是不同的,应该有层次、有区别的。
1994年,联合国教科文组织(UNESCO)委托国际信息处理学会(IFIP),编写了指导世界各国计算机课程设置的文件《中学信息学课程》。其中有一段话,对于我们每个从事计算机教育的人会很有启发。现摘录如下:
“这里所指的程序设计非技术性的程序设计,更确切地说应该是把‘你自己做的事情’转变成‘别人能做的事情’。这就要求能详尽地描述完成任务的过程,以便其他的人或其他的设备能准确地重复这一项工作。
这种完成任务的‘自动化’就被称作程序设计,有时也称作算法程序设计──信息学的一个重要特点。当使用复杂或先进的软件工具(如电子表格、数据库管理系统、操作系统,甚至文字处理系统)时,用算法的思想来思考或解决问题是必要的。
程序设计是帮助学生获得解决问题经验的一种快速、明确而适合的途径,教学的目标不是培养‘小型的程序员’,而是使得学生能用程序设计的方式进行思考。本着这个思想,在学习过程中只要掌握‘必须了解’的,至于程序语言中的独有的特点和假设就不是很重要了。教师必须强调解决问题的方法,程序设计只是实现这个目的的一种手段。”[9]
儿童心理学中有一个“关键年龄”的说法,即在儿童发展的过程中,某一种技能或能力在某一特定时期最易获得,最易形成,如果错过这个时期,效果就会差些。例如2-3岁是学习口头语言的关键年龄,4-5岁是开始学习书面言语的关键年龄等。[10]那么,儿童青少年学习“程序设计”的关键年龄是在哪个时期?这是值得心理学家和计算机教育专家研究的课题。
五、初步结论
在中小学计算机课程中究竟要不要安排“程序设计”的内容?我完全赞同《指导纲要》的提法:“中学计算机课程要以基础性知识和技能性操作为主,程序设计是更高层次的学习内容” [11]。在时间和学生的接受水平允许的情况下应该并尽可能早地在计算机课中安排一些程序设计内容,但内容和深度要根据不同年龄的学生认知特点做精心的安排。
我个人建议,在条件允许的情况下,小学高年级可以学一些LOGO语言的程序设计,其主要内容是“海龟绘图”,通过LOGO学习一些几何知识,而在程序设计上只起到“熏陶”的作用,即起一个潜移默化的作用。初中阶段可以安排一些介绍什么是程序、什么是程序设计的简单的内容,只要求学生能理解一些简单的程序就可以了,不必要求能编程。高中阶段可以较系统地学习一些程序设计知识,了解程序设计过程,能编简单的程序,但在算法设计上只要求了解就可以了。另一方面可以大力开展以算法设计为主的课外活动和选修课,给那些程序设计感兴趣的学生提供一个良好的发展环境。
【参考书目】
[1] 王攻本主编:《计算机科学技术百科辞典》1993年,405、404页。
[2] 马希文:《程序设计学》科学出版社,1985年,1页。
[3] 《计算机学科教学计划93》电子工业出版社,1995年,9页。
[4] 陈琦:《中学计算机教育文选》光明日报出版社,1987年,145页。
[5] 孙钟秀等:《操作系统教程》高等教育出版社,1990年2页。
[6] 郭福昌:《试办农村综合初中,势在必行》《课程研究》1994年4期,7页。
[7] 唐·克努特:《计算机程序设计技巧》第一卷前言,国防工业出版社,1986年。
[8] 布鲁纳:《教育过程》文化教育出版社,1982年,28,31页。
高职院校计算机专业开设的计算机入门语言课,是计算机专业学生学习的第一门计算机语言,入门语言重点讲授程序设计的基本概念与方法,通过入门语言的学习,要将学生引入程序设计的大门,为今后进一步深入学习程序设计打下良好的基础,如果第一门计算机语言学习不好,将直接影响学生后续课程的学习,使得学生很难在专业上有进一步的发展。当前,随着高职院校计算机专业学生就业新形势的出现和计算机软件新技术的出现,使得高职计算机专业入门语言应根据新形势的需要进行适当的改革,以适应新形势的发展需要。
一、入门语言种类的调整,由c语言转换为c++语言
c语言是最具代表性的面向过程的程序设计语言,其功能强大,语法灵活,一直深受程序员的喜爱。正因为如此,多少年来几乎各类高等院校都将C语言作为高校学生的入门语言,这也成就了谭浩强先生的经典教材《c语言程序设计》800万册销量的奇迹。然而,当前随着新形势的出现,应该用C++语言取代C语言作为学生的新的入门语言。由三点原因决定了对这种课程设置改革的必要性。
1 “2+1”人才培养模式要求我们在课程设置上要更加紧凑,在衔接上要更加紧密。
当前高职计算机专业为了提高学生的职业技能,采用以顶岗实习为突出特征的“2+1”人才培养模式,即前两年的理论学习加第三年的顶岗实习。因此学生在校实际学习理论课程的时间只有两年,在校学习时间的缩短,要求计算机语言课程衔接更加紧密。
2 C++是在c语言的基础上发展而来的,它完全兼容于C语言,传统的课程设置方式开设完C语言一年后再开设C++,就要花费20学时的时间来讲C的内容,讲授的内容完全相同,这其实是课程设置的一种重叠。
3 当前C++语言体现“面向对象”技术是软件行业的主流技术,与其先向学生灌输C语言的“面向过程”的编程思想,将来再让他们去转变这种已经深入内心的思想,不如一开始就把最先进的程序设计思想传授给学生。
二、授课时做到语言丰富,生动、通俗易懂,用一些经典的例子和恰当的比喻贯穿始终
C++作为一种高级计算机语言,有自身的特点,C++语言的设计者之一斯坦・利普曼先生曾在《C++Primer》一书中指出“C++是最为难学的高级程序设计语言之一”,因为C++牵涉概念繁多,语法比较复杂,体系结构的庞大,很多概念非常抽象,将其作为入门语言,学生学习的过程中,会遇到很多困难。在这种情况下如果再语言单一,枯燥地讲解各种晦涩的语法知识,会使课堂沉闷,大大降低学生的学习兴趣。所以讲授C++程序设计时要做到语言丰富、生动、通俗易懂,用一些经典的例子和恰当的比喻贯穿始终,营造出和谐愉快的课堂氛围,这样才能让学生体会到在轻松的环境中获取知识的乐趣。其中选择经典的例子和恰当的比喻非常重要,它们不但可以使抽象的知识容易理解,还可以提高学生的兴趣,提高学习效率。比如,多态性是面向对象思想中的重要特征,但其概念描述为不同的对象接受了相同的命令产生不同的行为却非常抽象,不易理解。为了理解这一概念,可以利用上课铃声响起这一同样命令被教师和学生两种不同对象接收后,产生了教师走上讲台准备授课,学生安静坐好准备听课这两种不同的行为,这就是现实世界中多态性的实例。利用这样的现实例子,会很容易地理解类似的抽象概念。
三、笔试与上机相结合的过程化考核方式的使用
考核是教学活动中十分重要的环节,通过考核可以检验学生的学习成果。传统的程序设计课程的考试都采用期末笔试答卷的方式进行。然而以期末笔试的考核方式有两点明显的不足:第一,学习程序设计的最终目的是使用计算机进行编写程序来解决实际问题,而笔试只能考察理论知识掌握的水平,无法衡量知识的运用能力,单靠笔试的方式衡量学生计算机语言的运用水平本身就不准确。第二,一学期的学习,单靠最后一次期末考试考核学生的成绩,导致平时相当数目的学生对学习投入不够,以考前突击的方式应对考试。因为各方面能力的培养都需要一个过程,短时间的突击不但导致所学知识不够扎实,更对学生的知识运用能力与素质能力的培养毫无帮助,这也是以期末考试考核学生的成绩的最大弊端。
过程化考核是一种新型的考核方式,它是在学习的过程中对学生进行多次的分阶段,多种形式的测验,得到最终的学习成绩,这种考察方式不但较为客观地衡量出学生对知识的掌握与运用水平,还通过多次的考核时时激励学生,在学习的过程中始终怀着严谨的态度和饱满的热情,获得最佳的学习效果。《C++程序设计》课程的过程化考核采用笔试与上机相结合的方式进行,两次笔试重点考察学生的理论的掌握水平,四次上机考核重点衡量学生的知识实际运用水平,六次考核都在理论课与实验课的课堂完成。这种多次的阶段性考核措施保证了学生的学习热情与投入程度,在实际使用中取得了很好的教学效果。
四、恰当学习情境支撑抽象的理论知识
关键词:
高职院校;C程序设计;分级教学目标
一、引言
现在,我们学校和许多高校一样,选择C语言作为电子信息类专业的高级语言程序设计的入门教学课程,C#语言和Java语言程序设计与开发作为计算机专业后续岗位能力延展课程。C语言程序设计是一门专业基础课,强调语法和基础,而C#语言和Java语言程序设计则着重于岗位应用能力。本人多年从事《C/C++语言程序设计》、《C#语言程序设计》、《数据库编程技术》和《ASP.NET》课程教学,发现我校高职电子信息类专业相当一部分学生语言不过关,给后续课程带来很大麻烦,造成教学被动。为此,很有必要对高职电子信息类专业C语言程序设计教学进行反思,提出相应对策。本文以C程序设计课程为例,分析目前高职电子信息类专业学生C语言教学上存在的主要问题,就如何确定并有效实现教学目标做一个切实的探讨。
二、高职电子信息类专业C语言教学的特点
1C语言的教学特点:具有逻辑性、理论性、创构性和理论性是计算机程序设计课程的四大主要特征。想要掌握计算机语言,需要学生有一定的主动创造力和罗辑思维力。而C语言更是计算机程序设计课程之中的难点,很多首次接触到C语言的同学很难入门。根据这一特性,对高职院校在C语言的教材编写上和教学上带来了很大的困难。计算机语言的学习不仅仅是看教材,听课更重要的是在于应用。学会使用C语言编写程序,最重要的环节是做习题和上机实训。如果学得不扎实,对后续专业课程影响很大。所以一定要强化实训教学。高职院校的学生普遍存在着文化水平较低,认知度不足,综合素质不高等特点。很多学生对学习没有热情,思维理解能力也较差。有的学生上课,仅仅是为了应付家长和学校,自己没有主动学习的欲望导致学习没有纪律。因此,高职院校的学生上课处于一个积极性不足,学习习惯不好,没有学习计划规划,不主动思考这一环境之中。他们往往是被动的接受学校的教育,仅仅是为了完成目标而学习,一版不会主动进行相关课程的深入思考和练习。由于这些不好的学习因素吗,导致相关的学习课程学习起来更加困难,也不知道如何求助如何进行解决。目前,相当大一部分学生对学习计算机课程存在两个误区:一方面是在现在软件领域这个大环境下,C语言基本无用,另一方面是学习这门课程如果今后不从事相关工作也无用武之地。还有相当一部分学生学习中产生畏难情绪,严重挫伤他们学习计算机语言的积极性,甚至影响他们学习本专业的信心。但同时也要看到,有一部分高职生来自于高职院校的学生,他们在学习C语言的过程中实践和动手能力都得到了很大的加强,逻辑思维能力和创新能力也有明显提升,还有一部分有自己兴趣十足的爱好。这应当充分肯定并予以高度重视,并加以正确的引导。在教学中注意扬长避短,充分发挥他们的优势。
三、高职C语言教学的思考与对策
(一)要遵循计算机语言学习的认知与教学规律计算机语言程序设计学习都有自身的认知与教学规律。计算机程序就是用某种计算机语言把计算机的执行过程描述出来。学习计算机语言,就是学习语法规则以及掌握这些语法规则的应用。众所周知,要学好一门语言,关键是不停地进行读写训练,活学活用。多看、多读、多写、多模仿练习是学好任何一门语言的诀窍,那么学习计算机语言也是如此。所以,C语言程序设计教学首先是引导学生多阅读C语言程序,然后是学会调试C语言程序,接着是模仿编写C语言程序,最后才是设计C语言程序。
(二)分级制定教学目标我们的教学对象是这样现状的高职学生,还存在计算机水平差异、思维发展差异。这就要求我们根据高职教育的根本要求和专业人才培养方案,结合本课程的内容特点,在教学大纲中应制定多级教学目标。多角度分层次分阶段从低到高设计的教学目标如下:1、掌握C语言程序设计的基本知识、基本方法和技巧2、具有程序设计初步应用能力3、理解结构化程序设计的基本思想4、培养程序设计逻辑思维方式,提高学生自主探索学习和分析解决实际问题的意识在教学实施过程中,要根据学生所表现出来的差异进行分层,设计不同层次的学生模型,分层次制定教学内容和教学目标。有条件分班教学的,可按不同层次的学生在教学活动中要达到不同的学习目标,分班级安排不同的学习内容。比如:把C语言程序设计课分为两个层次,一个基础层次,一个提高层次。
(三)选择或自编适合高职学生的C语言实训教材高职的培养目标,教学模式、教学内容有其鲜明特色,这就要求高职《C语言程序设计》教材也应当独具特点,不能照搬普通高校教材,更不能借用中职教材。但现有教材很多是介绍语句的格式和功能,不适合高职学生,因此必须调整教材结构和内容来应对现在高职教育。2008年我们曾编写《C++程序设计实训指导书》,可满足6个专业方向的学生使用。本书是在编写组各老师多年从事C++语言程序设计教学的基础上编写的,书中根据多年的教学经验,针对海南高职学生实训中遇到的问题,精心挑选训练题目,进行强化训练,以提高学生分析问题和解决问题的能力。力求将复杂的问题和概念用简洁的语言描述出来,力争让学生当时看得懂、学后用得上。
(四)围绕最大限度提高与保护学生对C语言的学习兴趣,优化教学方法,以求全面教学实效大量的调研证明,学生在如下情况下其学习效果才会是非常有效的:感觉到自己备受别人的关注;对他们现在学习的知识充满兴趣;自己是学习的主导和参与者;在任务完成后得到适当的反馈;看到了成功的机会;对正在学习的东西感兴趣并觉得富有挑战性;感觉到他们正在做有意义的事情。要促进学生的自主发展,就必须最大可能地创设让学生参与到自主学习中来的情境与氛围。因此,教师要因势利导,采取多种教学方法,最大限度提高与保护学生对C语言的学习兴趣,以求取得真正教学实效。1.做到每一堂上机课都能让学生通过自己上机程序练习获得成就感。2.提倡学生朗读程序。比如,语句intx;x=5;,可读成“声明一个整型变量x,然后将整型常量5赋值给整型变量x”。通过朗读程序,能够使一些原本很模糊的概念得到不断地巩固,逐渐地变得清晰。3.养成良好的编程习惯,将枯燥难记的语法融入范例程序的上机调试过程中。在整合课程内容的基础上,改变过去先给出定义和规则的讲授办法,而是从具体问题入手,精选范例,努力把枯燥的“语言”讲得生动、活泼。在程序范例中,将语法知识点同实际编程结合。讲授时避免纠缠于语法细节,应始终明确一点:计算机语言是用来描述需要解决的问题和问题的解决方法的,任何语法规定都是为这个目的服务的。4.点面结合,少讲多练,确保创造自主学习的情境与氛围学习计算机语言主要在于应用,仅仅通过听课和阅读教材是不可能掌握的。学会使用C语言编写程序,最重要的环节是做习题和上机实训。要区分学生层次,精选上机练习题,既要满足少数提高训练,又要满足大多数基础练习,做到点面结合,符合学生实际。5.及时帮助学生化解难点,共克难关应事先分析C语言学习的难点,做到胸中有数。在C中,变量与数据类型概念是第一个难点,它与内存概念紧密相关。这个难点,将影响全局。循环控制语句是第二个难点,它改变程序执行流程,难在如何构造,关键是抓住循环初值、终值和增值三要素。教学中要及时发现学生在学习C时的难点,厘清难点的根源,逐个击破,不留隐患。6.结合专业,学以致用根据教学不同阶段,教师应适时收集一些与其授课学生专业方向结合的程序案例,让学生能够切实体会到C程序设计在解决本专业中的问题中所发挥的作用。7.发挥计算机网络与多媒体的优势,增加教学互动及时开发C课程网站,提供学生在线多媒体学习与答疑平台。在C语言程序设计学习上,把复杂的计算机语言、专业化的技术变成了轻松自如、随心所欲的人机对话。因此,使学生不至于掉入C语言知识的细节里,避免出现既费时、又费力,而学习收效不理想现象,使枯燥无味的内容变得简单,从而有趣,激发了学生浓厚的学习兴趣。学生在课堂内外的学习中,遇到不能解决的问题时,既及时可上Internet网查询,又可与同学老师交流。这样,既增进了师生之间交流的机会,又达到共同提高的目的。
四、结束语
总之,对于高职电子信息类专业学生来说,学好C语言既是专业素质的需要,也是未来岗位能力的要求。对于教师来说,如何因材施教,因人而异,充分激发学生的内在积极性与潜能教学模式也成为迫在眉睫的重任。针对目前高职电子信息类专业学生在C语言程序设计教学上存在的主要问题,我们提出采用点面结合,分级教学目标,精选程序案例,突出高职认知规律,以提高学生的学习兴趣为基础,强化学生上机练习及指导为突破口,最终实现高职C语言程序设计的教学目标。
参考文献:
中图分类号:G640 文献标志码:A 文章编号:1673-291X(2014)19-0275-02
引言
汇编语言是最接近于机器语言的编程语言。如果说机器语言是计算机操作的本质,那么汇编语言就是最最接近本质的语言。汇编语言操作直接面向硬件,所以,我们在使用汇编语言的时候,能够感知计算机的运行过程和原理,从而能够对计算机硬件和应用程序之间的联系和交互形成一个清晰的认识。这也是最能够锻炼编程者编程思维逻辑的,只有这样,学习者才能形成一个软、硬兼备的编程知识体系,这是任何高级语言都无法给予的!相对于繁复的高级语言,汇编语言指令集合更简约,指令操作更直接,从汇编开始学习更符合循序渐进的学习原理。所以,对于计算机技术初学者或者自学者,汇编语言重要性无可替代。
一、汇编语言的特点
汇编语言(Assembly Language)是面向机器的程序设计语言。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。
汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
二、汇编语言的重要性
(一)汇编语言是学习高级语言的基础
从应用层面上来讲,我们不得不承认高级语言在软件开发市场上的重要地位。虽然这种现象很普遍,但是也对计算机语言初学者与教育者带来了一定的负面影响,造成了他们对高级语言学习的盲目推崇。在高校的计算机教学中,要求学生必须学习C语言,java以及C++等高级语言,虽然出发点是好的,但是由于学生的计算机基础普遍不高,导致课程结束后,学生甚至都不具备编写最简单程序的能力。这是值得我们反思的现象。
一般而言,人们都认为学习计算机最基础的是C语言,这种观念是错误的,真正的基础语言是汇编语言。作为一种基础语言,只有学好汇编语言,才能更好地理解C语言等高级语言。汇编语言与高级语言在对内存读取的操作上原理不一样,前者的操作简单地说是内存地址而进行的,而C语言的操作需要学会指针的概念。指针是抽象的专业性概念,能否学好C语言最关键的是如何建立这一概念与实际的内存两者之间的思维映射,这一点恰好就是汇编语言教学过程的重点。除此之外,通过汇编语言,我们也能把高级语言中的常用概念及基本操作形成特定的映像,而深入地剖析这些映像,恰好是我们学好C语言的基础。
由上可知,学习计算机语言,我们应该脚踏实地地从最基本的汇编语言开始,通过循序渐进的学习,更熟练地掌握那些面向对象的高级计算机语言。
(二)汇编语言是重要的应用技术
由于就业市场的错误导向,许多学习者放弃汇编语言等基础语言的学习,从学习初始就专攻高级计算机语言,以图谋取一份高薪酬的工作,这个出发点虽然无可厚非,但是这种好高骛远的学习方法确却是不明智的。
第一,任何一个学习过程都必须遵守循序渐进的原则,我们的知识结构是一个复杂的结构,是由众多单一的课程有机组成,如前文所述,如何挣取更多的报酬不能成为学习汇编语言的唯一目的。编程人员更应该注重通过对汇编语言的学习来完善自己的知识结构。
第二,计算机汇编语言同样是一项主流的应用技术。对于初学者来说,计算机语言的应用舞台不仅仅是形形的软件,很多硬件设施也包含了大量的嵌入式语言程序,如主板、电脑芯片等,这些程序的计算机语言就是高效、直接的汇编语言,由此可见,汇编语言在计算机领域仍扮演者非常重要的角色。
(三)汇编语言帮助我们更好的理解整个计算机系统
一般而言,汇编语言的应用的确实不如高级语言广泛,但对于计算机语言学习者来说,它的重要性是非常明显的。机器指令是人们利用机器逻辑功能的前提,也是各种程序能实现功能的必需条件。软件与硬件系统功能的实现都以机器的逻辑功能为基础。汇编语言可以对机器指令进行更加直接的描述。掌握汇编语言就能理解机器指令,理解机器指令就能掌握逻辑功能,从而理解软件系统与硬件系统的工作原理,实现软件系统与硬件系统的功能,为学习计算机语言打下牢固的理论基础与实践基础。
三、汇编语言的应用
1.破解密码软件的核心部分,还有杀毒软件的扫描部分,它们都要求有很高的执行速度,要用到汇编语言才行。
2.unix操作系统的启动部分,这些部分与硬件密切联系,而汇编语言是直接对硬件操作的,所以用汇编语言是最能胜任的。
3.据有关资料统计,用汇编语言编写的程序通常要比C语言程序的执行速度快10倍以上。有些游戏程序的部分一秒钟需要调用几千次,如果用其他语言来编写的话,可能你在玩游戏的时候,时间都花在了等待上。
4.用汇编语言来编写病毒最好不过了,那效率是非常快的,如果没有汇编语言,世界上的黑客要少掉一半。
5.只要高级语言能完成的工作,汇编语言都能完成,而且汇编语言能完成的工作有的高级语言就不能完成,所以汇编语言仍然有举足轻重的作用。
6.现在用纯汇编来编写程序的几乎没有了,而是通过在高级语言里插入汇编程序,所以汇编一般用来搞嵌入式开发。
结束语
总之,汇编语言在计算机语言发展过程中扮演了不可替代的角色。对于教师,要采用正确的教学方法,激发学生的学习兴趣;对于学习者,要正确认识汇编语言的重要性;对于编程人员,如果想在计算机编程之路走得更远,必须从汇编语言开始,才能完整完善的建立计算机编程知识体系。
参考文献:
[1] 宋胜女.浅谈汇编语言教学[J].信息化教学,2011,(7):84.
[2] 朱定华.微机原理、汇编与接口技术(第2版)[M].北京:清华大学出版社,2010.
[3] 李黎.《汇编语言程序设计》课程教学改革探索[J].产业与科技论坛,2013,(12):168-169.
[4] 陈燕俐,许建.“汇编语言程序设计”课程教学改革探索[J].中国电力教育,2012,(11):55-56.
[5] 彭虎,周佩玲,傅忠谦.微机原理与接口技术[M].北京:电子工业出版社,2011.
Talk About the Importance of Applied Undergraduate Colleges Assembly Language Learning
WEN Xue-wei