论文部分内容阅读
随着互联网的高速发展,一些传统的计算机类考试已经可以在网络上进行,基于互联网的在线编程考试的方式更是受到人们的追捧。如今,一些计算机类的考试都可以在网络上进行,比如全国的计算机二级考试、蓝桥杯竞赛、高校的编程类期末考试等。在计算机类的在线评测系统中,一般包含有各种不同的考题类型,包括填空题、选择题这样简单题型,也包括需要编写程序代码的主观题,编程类的考试系统被称为在线评测系统,英文:Online Judge System,简称OJ系统。OJ系统大多是基于B/S架构的程序,它运行在服务器上,当学生或者评测者使用OJ时,用户或者被评测者通过浏览器就可以进行编程类题目的评测,直接通过网页提交程序源代码,并不需要在本地安装IDE,也不需要进行繁琐的安装和配置。在哈工大等一些高校中,编程类的期末考试已经开始使用OJ系统,可见在不久的将来会有更多的高校将会采用编程类考试进行在线考试。相对与传统的纸质试卷方式进行编程类程序考试,使用在线评测系统不仅方便快捷,而且省时省力,为阅卷老师节省了很多的时间和精力,对于学生的成绩来说也有很好的区分度。可见,当今时代,越来越多的考试形式转移到了网上考试,OJ系统在我们的日常生活中扮演着越来越重要的角色。将来OJ系统也一定能够发展得功能更多,使用上更加便捷。以前的OJ系统仅支持C、Java等少数几种编程类语言,如今的OJ系统不断增加各种新的功能,Python、Java Script等新型热门编程类语言的功能也被被集成到OJ系统中。随着网络的发展,OJ的功能将会越来越多。随着OJ系统被人们普遍使用,一些OJ系统上的新型问题也不断被发现,不断被改进。如今OJ系统面临着评分过于死板的问题,对于一道编程类题目,系统对源码进行编译,结果只有正确和错误,而编程类题目又往往比较难,所以如果高校采用OJ进行期末考试,学生的成绩很难区分好坏,难以拉开不同编程能力学生成绩之间梯度。针对此问题,本文对传统的OJ系统评分方式进行研究,并尝试新的探索。对提交到OJ系统的代码进行分析,与参考答案的源码进行相似度比对,然后得出分数,有利于区分开每个人的编程能力。目前,不同文本的相似度的研究主要应用于自然语言处理(Natural Language Processing,简称NLP)中,目前国内对于程序的静态评分方向的研究较少,与国外的差距较大,本文对目前的OJ系统的静态评分方式进行研究,并使用自然语言中对文本相似度研究思路,尝试对程序源码进行分析,并设计算法,实现对OJ系统评测方式的进一步改进和优化。目前国内对于程序的静态评分处于起步阶段,本文主要针对C语言源码的静态评分方式的研究,为以后的其它编程类语言的评分提供了研究思路。