首页 理论教育 特定领域特殊隐性知识的评价指标

特定领域特殊隐性知识的评价指标

时间:2022-10-23 理论教育 版权反馈
【摘要】:本研究拟以计算机C语言编程为具体领域,探讨计算机C语言编程领域中的特殊隐性知识,找出衡量计算机C语言编程特殊隐性知识的评价指标。第一阶段,采用与C语言相关的纸笔测试题考察被试C语言显性知识的情况,以考察经验丰富组和经验较少组被试在C语言显性知识

第二节 特定领域特殊隐性知识的评价指标

一、研究目的

一般来说,个体隐性知识包括技术要素、认知要素、经验要素和信仰要素等,并通过各种实践活动表现出来。个体隐性知识具有领域特殊性,不同实践活动需要不同的隐性知识。

瓦格纳认为,将隐性知识的结构视为一种一般能力或知识储备更为贴切,各类隐性知识是这个一般因素的不同侧面,而不是独立的心理因素。[2]因此,不同领域的隐性知识有一般广泛意义上的结构和内容,同时也有具体领域不同层次的结构和内容。针对具体领域而言,专业隐性知识也是一种结构性知识,因此衡量特定领域的专业隐性知识也可以采用结构性的指标进行评价。本研究拟以计算机C语言编程为具体领域,探讨计算机C语言编程领域中的特殊隐性知识,找出衡量计算机C语言编程特殊隐性知识的评价指标。

二、研究方法

(一)专家访谈与隐性知识评价指标的初步确立

计算机程编程具有很强的实践操作性,个体编程技能的提高不但需要一定的编程理论知识,同时也需要实践操作技能,是一项复杂的认知活动。心理学家以计算机编程为依托领域开展了许多研究工作,其主要以专家—新手编程行为的比较为切入点,来探讨人们在计算机编程过程中的差异。[3]计算机编程任务完成的情况与被试的编程经验紧密相关,要求被试掌握本领域相关显性知识,更要求被试的动手能力和经验。隐性知识与人的实践行为紧密相关联,是依附在人的行为之上的,因此,计算机编程作为一门知识性和技能型相结合的专业领域活动,包含了较多隐性知识。

本研究对计算机C语言编程活动中隐性知识的引发研究采用访谈法,即选取六名计算机专业人员作为访谈对象(其中三位计算机专业任课教师,三位计算机专业在读博士研究生)。访谈内容围绕编程高水平者和低水平者在编程过程中的差异主要体现在什么地方,什么指标与个体编程的实践经验密切相关,并记录采访内容。

被采访者认为,编程高水平者实践经验丰富,接触过各类编程样例,其编写的程序具有正确性高、可读性强、代码效率高、健壮性强以及可扩展性能好的优点。编程高水平者并不一定比低水平者拥有更多书本上的编程理论知识,他们只是在长期的实践过程中,拥有许多关于编程方面的实践经验,而且在编程的过程中积累了大量的知识。这些知识不需要他们花费很多时间去回忆,但是他们在具体的编程行为中会对这些知识很敏感。面临具体的编程任务时,他们似乎知道哪些知识对完成任务有帮助,而不太理会其他对编程任务没有太大帮助的知识。

所有采访者都认为,区别编程高水平者和编程低水平者的关键在于他们所编写的程序质量上的差异,个体所编写程序的质量反映了他们编程的实践经验和编程水平。衡量程序质量的客观指标主要有程序的正确性、程序的编程风格、程序的代码效率、程序的健壮性以及程序的可扩展性五个方面。其中程序的正确性是指程序语法的正确性和逻辑的正确性。程序的编程风格主要是指程序的命名、书写的格式、变量的定义和解释语句的使用等应参照统一的标准,具有统一的规范,要求程序设计结构清晰,容易理解并使他人也能够很容易地读懂。程序的代码效率是指程序代码运行性能良好,占用系统资源较少,资源配置优化等。程序的健壮性是指程序对于规范要求以外的输入情况的处理能力,当输入或运行出现数据错误时,程序能够作出适当的反应或进行处理,而不会产生莫名其妙的结果。程序的可扩展性是为了程序后续的开发留有扩充的接口,以便于程序将来的进一步修改和升级。

本研究采用访谈中抽取的衡量计算机程序质量的五个客观指标作为衡量计算机编程活动中隐性知识的客观指标,并通过实证研究来进一步验证这五个指标反映编程专业隐性知识水平高低的有效性,为后续研究该领域中隐性知识获得的有效途径进行铺垫。

(二)被试

本研究将具有软件开发或者是编程实践经验的被试看作经验丰富组,而将没有软件开发经验或是较少有编程实践经验的被试看作经验较少组。

根据被试从事软件开发或编程的实践经验,选取10名华中科技大学点团队成员作为经验丰富组。这10名被试分别为来自本科三年级至研究生二年级,具有编程实践或软件开发经历1~3年不等,他们均系统学习过C语言程序设计的相关知识。选取华中科技大学软件学院大四本科生10名作为经验较少组被试。他们都系统学习过C语言程序设计的相关知识以及参加过学校组织的一些编程培训,但没有软件开发经历或编程的实践经验。被试具体资料见表7-1。

表7-1 被试基本情况表

img31

(续表)

img32

(三)实验设计

本实验采用单因素实验设计,被试经验水平有:①经验丰富;②经验较少。实验任务为在60分钟内完成规定的程序编程任务。记录被试程序设计代码,根据正确性、编程风格、代码效率、健壮性和扩展性五个指标,采用专家评定法对被试程序代码进行成绩评定。自变量为被试经验水平,因变量为程序成绩评定的正确性、编程风格、代码效率、健壮性和扩展性五个指标。

(四)实验材料

本实验中实验材料主要由两个部分组成,包括C语言显性知识问卷和一道C语言编程题。

C语言显性知识问卷。该问卷由20道C语言基础知识测试题组成,主要考察被试对C语言基础知识的掌握情况,考察C语言设计的基本知识点,这些知识通过课本学习均可获得。每道选择题答对记1分,答错记0分,显性知识测试问卷满分为20分。

C语言编程题为:有15个人围成一圈,顺序从1到15编号。从第一个开始报数,凡报到n的人退出圈子。用C语言写出程序,输入n(n≥1)的值,输出最后留在圈子里的人的编号。选择该编程任务,主要是基于以下几点考虑:①程序大小、难度适中。过于大或困难的程序不利于考察单个被试的编程水平,可能会导致实验结果出现天花板效应;过于简单的程序则无法体现被试真实的编程水平,可能会导致实验结果出现地板效应。②可以通过设计该程序,考察被试的常规认知技能和解决问题的能力。③对被试来说,该程序能在60分钟之内完成。如果编程花费的时间过长,被试可能因为不愿意而放弃参加实验,或者会因为连续编程的时间过长导致疲劳而降低了编程效率,从而影响实验结果。

(五)实验程序

实验分为两个阶段。第一阶段,采用与C语言相关的纸笔测试题考察被试C语言显性知识的情况,以考察经验丰富组和经验较少组被试在C语言显性知识方面的水平差异。第二阶段,让被试按照实验任务,在60分钟内采用C语言完成指定的编程任务,并将所写代码以“学号.C”的格式保存在指定文件夹中。

三、实验结果

用SPSS10.0for Windows对实验数据进行统计分析。从程序的正确性、编程风格、代码效率、健壮性和可扩展性五个方面采用专家评定法对被试完成的程序代码的成绩进行百分制评定。

(一)专家评定成绩的信度检验

本研究中被试成绩的评价专家是武汉市某重点高校计算机学院(系)具有本科C语言程序设计课程教学经验的三名教师,均为博士或博士在读。在专家评定过程中有如下要求:首先,评价专家分别对被试所编代码进行独立评价;评价者必须先了解要评价的所有代码,然后根据代码的相对水平对这些代码的五个方面的成绩高低作出评价;评价者在评价代码时,以随机的顺序评价所有被试所编代码。

专家在对被试所编代码进行成绩评定时,其主观性比较大,因此,评价者一致性的高低反映了被试所编代码成绩的信度水平。从以往的研究来看,对专家评定成绩间的一致性检验通常有三种方法:

(1)威纳提出的通过分析内外部变异得到的信度系数,[4]其公式如下:

img33

(2)Spearman-Brown预测公式,[5]一致性系数为:

img34

其中n为评价者数目,r为评价者之间的相关系数

(3)使用SPSS软件计算Cronbachα系数。[6]

已有的研究结果表明,使用这三种方法得到的结果非常相似。由于SPSS软件的强大统计功能和使用的广泛性,使得用SPSS软件计算Cronbachα系数成了检验专家评价成绩间一致性系数最简单的方法。[7]因此,本研究采用SPSS软件计算Cronbachα系数的方法对专家评定成绩进行信度检验。

对专家评分一致性评价的信度进行检验,结果发现对程序代码从正确性、编程风格、代码效率、健壮性和可扩展性五个方面的评价,三位专家的评价结果非常一致,一致性系数(Cronbachα)分别为0.8044、0.7825、0.8119、0.6897、0.7975,见表7-2。

表7-2 专家评价成绩的一致性系数

img35

数据分析结果表明,三位专家对被试所编程序的正确性、编程风格、代码效率、健壮性和可扩展性五个方面成绩评价的一致性系数具有较高水平。因此,不同专家对被试在程序设计五个方面成绩的评价具有较高信度。

(二)两组被试显性知识的比较

在实验的第一阶段,本研究对被试在计算机C语言程序设计的显性知识水平进行了调查,并对两组被试在显性知识上的成绩进行了独立样本t检验。结果表明,经验丰富组被试和经验较少组被试这两组被试在计算机C语言程序设计方面的显性知识水平上不存在显著的差异(t=-1.326,p>0.201)。具体数据见表7-3。

表7-3 经验丰富组和经验较少组被试的显性知识差异

img36

(三)两组被试所编程序质量的比较

本研究中,被试在各个因变量指标上的成绩采用三位专家评定成绩的平均数,进一步对经验丰富组被试和经验较少组被试在正确性、编程风格、代码效率、健壮性和可扩展性五个方面的成绩进行差异比较分析。数据分析结果表明,两组被试在正确性、编程风格、代码效率、健壮性及可扩展性上均存在显著性差异,详细结果见表7-4。

表7-4 两组被试在程序各指标上的差异分析

img37

以显性知识为协变量,考察经验丰富组被试和经验较少组被试在程序的正确性、编程风格、代码效率、健壮性和可扩展性五个指标上的差异。结果表明,两组被试在这五个指标上均存在显著性差异,显著性水平均小于0.005,具体数据见表7-5。

表7-5 两组被试在程序各指标上的差异分析结果

img38

(续表)

img39

根据以上分析结果,我们可以看出,对于实验任务“有15个人围成一圈,顺序从1到15编号。从第一个开始报数,凡报到n的人退出圈子。用C语言写出程序,输入n(n≥1)的值,输出最后留在圈子里的人的编号”这道编程题,程序的正确性、编程风格、代码效率、健壮性和可扩展性这五个指标能较好地反映个体隐性知识水平的高低。

对两组被试在完成实验任务的时间进行分析,结果表明,经验丰富组和经验较少组被试在完成实验任务的时间上存在显著性差异,其中经验丰富组被试完成实验任务的平均成绩为26.3分钟,而经验较少组被试完成实验任务所需的平均成绩为44.0分钟(t=4.764,p<0.001),具体数据见表7-6。

表7-6 两组被试完成实验任务所需时间(分钟)的差异

img40

由表7-6中的数据我们可以看出,经验丰富组被试在完成实验任务的时间上要远远低于经验较少组被试。

四、讨论

(一)经验丰富组和经验较少组被试显性知识的差异

数据分析发现,经验丰富组被试在显性知识水平上的平均成绩为15.1分,而经验较少组被试在显性知识水平上的平均成绩为13.8分。通过进一步的检验发现,两组被试的显性知识水平不存在显著性差异。也就是说,经验丰富组被试和经验较少组被试在C语言程序设计上的显性知识水平相当,并不存在显著性差异。

显性知识是可以通过教科书、参考资料、期刊等方式获取的,容易被人们学习。显性知识主要是关于C语言程序设计的基础理论知识,是个体从事C语言程序设计的必备知识,具备陈述性知识的特征。以往研究发现,编程任务中,新手和专家在编程所需的五类陈述性知识方面并不存在显著性差异。[8]我们的研究结论和前人研究相一致。由此,我们可以推断,显性知识水平并不完全能反映个体在其专业领域中实践水平的高低,它只是个体从事某一领域活动的必备知识,特定领域的显性知识水平的高低不能完全解释新手和专家从事该领域任务的差异表现。

(二)经验丰富组和经验较少组被试程序质量上的差异

在C语言程序设计这一特殊领域内,个体的隐性知识水平和其经验是紧密相关的。程序设计是一项实践性非常强的复杂认知活动,它需要个体通过大量的练习和实践经验来积累本领域中的专业知识和技能。

在程序设计活动中,经验丰富个体与低水平个体之间的差异不仅仅体现在他们完成编程任务的时间上的差异,更重要的是他们所完成编程任务的质量上的差异。通过分析发现,经验丰富个体和经验较少个体在所完成程序的正确性、编程风格、代码效率、健壮性以及可扩展性方面均存在显著性差异。例如,在程序的设计方面,经验丰富组被试比经验较少组被试更能使用正确的方法编译程序,这可能是因为经验丰富组被试具有较多的实践经验,积累了较多的程序设计解决方法,而经验较少组被试则因为实践经验缺乏,因此他们在程序设计方面的正确性比经验丰富组被试要低。

在编程风格方面,经验丰富组被试在程序的命名、书写的格式、变量的定义和解释语句的使用等方面都有较为统一的标准,具有统一的规范,程序设计结构清晰、容易理解,他人也能够很容易地读懂其编写的程序。但是经验较少组被试在书写的格式以及变量的定义等方面没有统一的标准,所编程序不容易理解,也存在程序结构不太清晰的问题。这可能是因为经验丰富组被试在平时的实践活动中积累了大量的关于编程风格方面的隐性知识,因此他们的程序可读性很强,而经验较少组被试则很较少注意这方面的问题,就造成了他们在书写格式、变量定义等方面的统一标准要差于经验丰富组被试。

在程序的代码效率方面,经验丰富组被试在进行程序设计时,可能会考虑到程序的运行速度以及程序对系统资源的需求等问题,所以编译的代码具有较高效率。而经验较少组被试只是考虑到了能否实现当前程序的功能,对程序的运行速度以及系统资源的需求较少考虑,故在编译的时候代码效率不够高。

在程序的健壮性方面,经验丰富组被试一般都考虑到了程序对于规范要求以外的输入情况的处理能力。例如,在编译“有15个人围成一圈,顺序从1到15编号。从第一个开始报数,凡报到n的人退出圈子。用C语言写出程序,输入n(n≥1)的值,输出最后留在圈子里的人的编号”这个程序时,高水平组被试大多考虑到对于非法输入给予提示。而经验较少组被试则没有对输入变量做有效性判断,非法输入后程序停住不执行。

在程序的可扩展性上,经验丰富组被试在进行程序设计的编译工作时,由于职业的习惯,所编译的程序可扩展性较好。例如,编译“有15个人围成一圈,顺序从1到15编号。从第一个开始报数,凡报到n的人退出圈子。用C语言写出程序,输入n(n≥1)的值,输出最后留在圈子里的人的编号”这个程序时,高水平组被试考虑到了任意人数每隔n人报数的情况,但是经验较少组被试只考虑到了对15人做处理的情况,大多采用了限定大小为16的整数数组,只考虑到当前的程序设计任务,并未作其他考虑,所以程序的可扩展性要差很多。

(三)经验丰富组和经验较少组被试任务完成时间的差异

数据分析表明,经验丰富组被试和经验较少组被试在完成程序设计任务时间上存在显著性差异。

经验丰富组被试在完成编程任务时所花的时间远远少于经验较少组被试,我们由此可以推论,经验丰富组被试具有某种相应的自动化基本技能,他们在完成这些基本技能活动时基本属于无意识活动,因此,这些自动化基本技能大大缩短了他们完成编程任务的时间;而经验较少组被试由于对编程任务中的一些基本技能还没有达到自动化的程度,需要大量的意识参与领域活动,因而这会使他们花费更多的时间来从事这些基本技能活动。

经验丰富个体完成任务的速度为什么会比经验较少个体慢呢?这个可以从以下几个方面来进行解释:首先,经验丰富个体在完成任务的过程中执行某些简单任务时的专门技能已经趋向自动化,因此他们会将更多的时间或更多的心智容量执行其他任务。[9]例如,经验丰富个体在完成代码的录入方面速度非常快,因此他们就可以释放更多的心智资源来加工编程过程中应该注意的问题;相反,经验较少个体因为在很多领域技能上不能达到自动化的程度,他们需要将更多的心智资源分配到这些基本的专门技能的完成上,只有少量的心智资源来关注编程过程中应该注意的问题。此外,经验丰富个体的快在于其具有较强的模式识别能力,即他们不需要进行大量搜索,就能直接提取编程过程中需要的某些方法。[10]例如,经验丰富个体一旦觉察到程序设计题中的解题模式,就能直接预测各种可能解决问题的方法。这是因为,通过大量的编程实践活动,经验丰富个体已经存储了丰富的隐性知识。在这些隐性知识中,特定模式将激发某一固定系列的解决问题方法,他们会在编程的过程中,从头脑中提取已有的关于问题解决的隐性知识,从而达到选择最快能解决问题目的的方法。

具体说来,在计算机编程领域,从外在行为来看,经验丰富者和经验较少者的解题思路都是大致相同的,他们都是从阅读问题开始到选择用哪种方法能成功解决问题。但是,有研究者通过对解题过程中的报告进行分析发现,经验较少者要用四倍于经验丰富者的时间来解决问题,并出现了一些错误。[11]这一结果表明,经验丰富组被试已将外在的知识内化为自己的知识,因而大大减少了对外部材料或信息的依赖性,解题速度也就加快了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈