当前位置:半城文秘网 >范文大全 > 主题教育 > 浅谈Prolog在教育教学中的运用

浅谈Prolog在教育教学中的运用

时间:2022-10-21 09:54:02 来源:网友投稿

摘 要:Prolog作为一种逻辑语言广泛被运用于人工智能和专家系统中。不同于其他编程语言,Prolog类似自然语言的语法使它更容易被读懂和理解,因此它被认为可能是一种出色的帮助学习逻辑知识的工具,一些科学家已经通过实验证明了Prolog甚至可以很好的被儿童运用和学习,本文将延续这个思路,回顾过往实验和结果,结合数学中几何证明问题的例子,提出将Prolog运用于教育,尤其是面向非计算机专业相关人员进行逻辑相关问题的学习上的可能性和优势。

关键词:Prolog;教育;几何证明

中图分类号:TP311.1 文献标识码:A

Abstract:As a famous logic programming language,Prolog is widely used as an AI language and a great tool to design expert systems.Different from other programming languages,Prolog is expressed as a natural language,which makes it much easier to read and understand.Therefore,it is a great tool for teaching logic.Results of scientific experiments have shown that Prolog can even be used and learned by children.Following this idea,the paper reviews some previous experiments and their results.Combined with some examples of using Prolog to handle geometric proof problems,the paper proposes the possibilities and advantages of using Prolog in education,especially in the field of helping nonprogrammers and laypersons to study logic.

Keywords:Prolog;education;geometric proof

1 引言(Introduction)

Prolog是“Programming in Logic”的縮写,这个名字的由来指明了这是一种逻辑编程语言。最初它经常被运用于自然语言处理等研究领域,而现如今,它更多的和AI或计算语言学联系在一起。尽管AI是目前最前沿的计算机技术之一,Prolog本身却并未深奥的令人望而却步,与此相反,它比人们想象中更容易理解。

第一个Prolog系统诞生于1972年,这也使它成为世界上最早的逻辑编程语言之一。之后Prolog在北美洲和欧洲被广泛运用,在日本,Prolog也被赋予重任,被运用构建第五代ICOT计算机系统。在智能系统研究领域,Prolog一直担任着重要开发工具的角色。

2 文献综述(Literature review)

1980年,Prolog首次被Kowalski建议可以为儿童所用[1]。从1981年开始,有多个将Prolog运用在教育上的实验项目陆续展开[2],1986年,一个命名为Prolog教育小组(PRG)建立,他们提供了多种工具组和系统供学校使用,以此进行了数个相关实验[3]。1987年,Prolog被PRG的组织者之一Jon Nichol明确指出可以作为杰出的教育工具。

除了儿童教育,Peter Gibbins系统地介绍了如何和为何将Prolog运用于解决普遍的逻辑问题[4],Richard Spencer-Smith为这一论点提供了更多的理论支持[5]。James L.Hein在2009年提出,Prolog是解决离散数学问题的最好的工具之一[6]。众所皆知,数学本身也是计算机科学的基础课程,因此,Prolog也是教授计算机和编程语言的杰出工具[7]。

Prolog并不仅仅被运用在计算机学科,它已经开始被拓展运用于其他工程类学科,中村教授也给出了多个运用Prolog展现化学过程和解决普通数学计算的例子[8]。1990年,一本名为《Prolog构建的数学世界》的教材展现了大量运用Prolog学习和解决数学问题的实例,包括集合运算、拓扑空间等问题[9]。2011年,丁盘苹通过基于本体的Prolog规则对几何定义、定理和公理进行描述,使之能通过知识库推理机来完成几何定理证明[10]。在新系统中,Prolog经常和专家系统一同被提起[11],专家系统可以提供和学生互动的脱离课堂式教学[12]。因为Prolog可以和基于知识的语义本体完美搭档,这也使运用网络教育系统收集知识,且在多个学术领域提供互动教学系统成为可能[13]。

3 Prolog与教育(Prolog and education)

3.1 教授Prolog的优势

教授学生Prolog有许多益处,而其中最突出的优势毫无疑问是可以提高学生们的逻辑思维。Prolog可以教授规范逻辑的概念,众多的Prolog课程也选择从教授规范逻辑开始。Prolog代表了编程语言的另一种形式:逻辑编程关注的是一个问题的逻辑定义或者描述[3]。所有的Prolog表达都被规定为一种叫做霍恩子句的形式,这是一种格式为“A if B and C”的子句。所有的事实和规则都被用这种形式的子句表达,这种形式的语句表达清晰,使用者非常容易理解其中的逻辑关系,此外简洁的子句形式使得低年龄的学生可以轻松地掌握和编写这些语句。

教授Prolog的另一个好处是它提供了一个良好的环境将知识点结构化,它可以通过知识之间的关联将许多知识点联系成一个整体的知识块,在掌握了基础的编写技巧之后,学生和老师都可以利用它将所教授学习或者感兴趣的学科知识点改写成子句。在这个过程中,学生可以更为透彻的了解这些知识点,并且理清这些学科知识点之间的关系。

最后,Prolog作为一种易于理解和起步学习的高级语言,教授Prolog有很大可能使刚开始接触计算机领域的学生因为Prolog的易懂和易编写而对该领域产生兴趣。实验显示Prolog的学习曲线普遍呈现一种非常陡峭的角度,尤其在前期,学习收益显著。此外,作为一种工具语言,Prolog也同样适合计算机相关专业进阶阶段的学生,作为一种不同于传统C语言、Java语言的语言进行拓展学习。

3.2 将Prolog运用于教学的优势

Prolog的一个特征就是它非常容易学习和被使用,它不需要任何编程或者语言基础就能开始使用它。如果将Prolog用于教学,在已经拥有完整的知识块的前提下,老师可以通过Prolog轻易地展示其中的逻辑和知识点间的关联。此外老师也可以选择自行添加子句来呈现希望教授的知识。作为一种高级语言,Prolog非常接近自然语言,这使它适合任何阶段的学校学习,同时它也适合任何学科的老师使用。它并不需要使用的老师擅长计算机,因此Prolog并不局限于计算机或者相关学科的课程教学使用,它也非常适合计算机技术或编程基础一般的老师使用。只需要给出简单易懂的软件界面,老师就能够通过非常基础的学习掌握录入条件或知识点的方式,在未来课程不断深入的过程中,也非常方便在任意时间由老师自行添加和更新知识点,它提供了一种开放简便的构建知识基础的结构。

及时反馈是Prolog的另一个优势。Prolog提供的互动性环境有助于提高学习效率,在学习过程中,如果能及时给出正确或者错误的反馈,将会激励学生不断尝试和发现正确答案的积极性。

4 相关实验(Relevant experiments)[3]

在1980年,Prolog第一次被認为可用作教学工具,Kowalski教授指出,将Prolog运用于课堂可以分为两个阶段,第一阶段是教授学生通过Prolog学习逻辑知识,而第二阶段是通过让学生自行编辑逻辑语言以提高他们的逻辑思维能力,并使其能在其他学术领域表现更为突出。

约1982年,Jon Nichol在Exeter大学建立了Prolog学习小组,关注Prolog在教育教学运用中的进展。他们在之后的几年内完成了大部分的实验,并在1988年发表了大部分研究结果。他们的实验在多所学校进行,其中部分实验历时长达五年,为这个小组的核心研究课题——如何将Prolog用于教育提供了大量可靠的数据和信息。

在实验开始前期,研究者们首先开始了一些小型实验比较了top-down和bottom-up两种教学方式哪种更加适合用于教授Prolog,top-down即首先给学生编写好的语句让学生从阅读理解并且使用这些语句编写的程序开始学习,而bottom-up方式即直接教授给学生编写Prolog语言的必要技能,让学生们自行从零开始进行学习和编写。这个实验持续了六个月,最终得出了top-down的教学方式更加利于学生学习和掌握编程技能,也为Kowalski教授提出的两个阶段的教学方式提供了一定的实验支持。

主体实验由Geoff和Elizabeth主持。他们一共选取了317名五六年级的学生和117名十年级的学生参与了这个持续三年的实验,以测试将Prolog作为课题学习媒介的可行性。他们完全参考了Kowalski教授的思路,首先使用Prolog作为辅助教学的媒介,同时也尝试让学生们掌握一定的Prolog编程技能。得益于本实验的长周期和足量样本,这一实验得出了多个有用且可靠的结论。

长期的实验结果证明了不同接收能力的孩子都能很好地接受Prolog课堂的知识输出。尽管他们发现一些接收能力较弱的孩子需要一些额外的帮助,但这也仅仅发生在起步阶段。即使将不同接收能力的孩子编入同一个小组也并不会在组里产生明显的差距,当接收能力强的孩子给接收能力弱的孩子提供帮助后,后者就很快上手并且很快追赶至平均水平。

实验结果明确显示了学生年龄和Prolog技能掌握程度之间的正相关。五六年级的学生都能掌握基本知识,而大部分六年级生已经能够理解其中的部分逻辑规律,并且利用部分规律,一部分六年级学生甚至已经能够自己创造规律语句,而十年级中的大部分学生都可以自己创造规律语句。简言之,大部分学生都能很好的使用Prolog程序进行互动学习,随着年龄的增长,更多的学生可以由使用程序进步为掌握编程技能。

5 Prolog在特定学科,如数学学科中的运用

(The application of Prolog in a particular

subject:Mathematics)

5.1 基础运算

虽然Prolog是一种逻辑工具,但是这并不代表它无法完成运算的工作。它和大部分编程软件一样,使用+、-、*、/表达加减乘除四种基础运算符,此外也有特定的函数完成简单运算,例如mad(a,b)表示取a/b后的余数。

Prolog也可以用来解决一些经典的数学问题,例如中国学生熟知的问题:有两个工人A和B在制造同一种玩具,每小时B制造的玩具数量是A的两倍多3个,问题:如果A一小时可以制造20个玩具,B一小时可以制造多少个玩具?

这时我们需要设定一个分句:B_DoubleA_Add_3并且设定如下

B_DoubleA_Add_3(X,Y) : -Y is 2*X+3.

设定完成后,问题可以轻易的用以下语句解决:

?- B_DoubleA_Add_3(20,X).

5.2 代数证明问题

中村教授曾经提出可以用Prolog教授一些自然数的基础运算和推理问题。例如,“如果X是一个自然整数,那么它的下一个整数必然是自然数。”这个基本定理,我们可以用s(X)来代表下一个整数,具体描述如下:

natural_number(s(X)):-natural_number(X).

如果我们添加一句natural_number(0).

那么这段Prolog语句可以用以表达出另一个定理:自然数是一个从0开始的整数。

当使用者输入:

-? natural_number(X).时,Prolog将首先回答,X=0。

但是之后的回答将依次为s(X)、s(s(X))而不是1、2、3。因为并没有向Prolog提供s(X)=X+1这一规律,通过继续向Prolog提供更多的规律,Prolog可以表达出更多的定理。

5.3 几何证明问题

与处理代数问题相比,几何问题显得更为复杂一些,首先需要通過描述让Prolog来判断输入的是哪一种几何图形。这时我们需要语义来帮助我们建立一个完整的数据库。

首先,几何问题需要被分为几个大类,比如说,三角、线、点、角。这几个大类中还能被分出多个分支,例如三角中有直角三角形、钝角三角形等。

其次,我们需要定义一些特性,如表1所示就是对“长度”这一特性的定义。

当完成了所有信息的输入后,程序将会分别对比每一个特征来做出自己的“判断”。

以下是一个运用Prolog,将简单的数学中三角形边长问题转换为Prolog程序的例子:

定理:三角形的两边之和大于第三边。

三角形的三条边长可以自由赋值,这里设定为小于10,方便学生计算,设定如下:

A is random(9)+1,% generates a random number between 1 and 10

B is random(9)+1,

C is random(9)+1,

当程序开始时,学生会看到如下的问题:

1 ?- go.

三角形三条边长分别为:a:1cm b:6cm c:4cm

它们可以组成一个三角形吗?(请回答Yes或No)

可见在这组随机产生的三条边长中,a边和c边之和为5cm,并不大于第三边6cm,因此B>=A+C,此时程序将会调用相对应的判断语句如下:

triangleAnswer(A,B,C,"no",",因为边长AC之和不大于第三边B"):-

B>=A+C.

而当随机产生的ABC的长度可以构成一个三角形时,程序将会调用如下语句:

triangleAnswer(A,B,C,"yes",",因为任意两边之和都大于第三边"):-

A

B

C

当用于教学时,学生可以和Prolog进行问答形式的互动,可以通过让程序分别读取学生给出的答案UserAnswer和程序本身判断出的答案Answer进行比对,当学生给出Yes或者No的回答后,程序可以直接对学生做出的回答判断对错,并且附带相应的解释,这样可以轻易地为不同学生提供不同的试题,并且反复进行具有即时反馈的作业批改。

例如上文中,当学生键入No,程序可以给出反馈:你的答案是正确的。答案是No,因为边长AC之和不大于第三边B。

通过这个方式,在老师教授了定理之后,可以让学生运用Prolog进行多次练习,且提供的随机数使每个学生接收到的题目都和其他同学不同,利于学生自主判断解答。

Prolog还可以广泛和非常简单的运用于类似的定理练习中,除了进行判断练习还可以完成一些简单的计算练习,以下是一个三角形角度定理转化为简单的Prolog练习程序的例子:

定理:如果ABC是一个三角形,那么∠A+∠B+∠C=180。

每个角的角度需要设定一定的限制,在这里选择设定为随机数,设定如下:

A is random(90)+1;B is random(80)+1,

X is random(2);Y is random(10)+1,

C is 180-(A+B)+(X*Y)

当程序开始时,Prolog会随机给ABC三个角赋值,学生将会看到如下的问题:

1 ?- go.

角ABC分别为: a:8 b:23 c:157

它们可以组成一个三角形吗? (请回答 Yes或No)

和边长问题类似,这时学生可以通过自己的计算给出Yes或者No的答案,Prolog会对学生给出的答案进行判断并给出解释。

除了可以进行判断,因为三角形之和为固定值180度,Prolog还可以针对该定理让学生进行运算练习。

我们可以使用A is random(88)+1,B is random(88)+1使AB都设定为1至89间的随机数,然后设定S is A+B,Answer is 180-S。这样可以轻易在之前进行判断的程序中添加一个已知ABC是三角形且知道A与B的角度,让学生计算C的角度的功能。

这是一个仅需要进行一步计算就能完成的程序,只要给出A和B的值,答案就已经呼之欲出,并且也非常方便给出简单易懂的解释。

例子如下

3?- go.

ABC是一个三角形,A角和B角的度数分别为:a:14;b:46。

请问角C的度数是?

这时学生可以自行在运算后输入答案,程序将同样给出是否正确的回应。当面对更低年龄的学生时,可以在题干中给予提示,例如给出AB之和,直接让学生进行减法运算。

同样因为解释的语句可以自由编写,老师也可以通过编辑语句给予学生鼓励,例如在回答正确后添加一些褒奖的语句,在回答错误后出现一些鼓励的语句。

6 结论(Conclusion)

研究可知,Prolog是一种适合用于教育且同时适合被教授的语言,尤其在培养较低年龄学生的逻辑思维方面有着得天独厚的优势,同时因为Prolog并非传统编程语言,所以对学习者和使用者没有编程基础的要求。而在基础较弱的学生学习过程中,根据Prolog学习小组的实验结论,随着使用者年龄的增长,年龄较大的使用者可以自行发掘逻辑关系,创造规律语句,在此基础上,让处于起步阶段的学生首先使用Prolog已经编译好的程序进行计算练习,学习例如几何定理等知识,在之后的学习中让学生逐渐向编辑语句、构建逻辑关系的方向转化,则有可能构成一个较为完整的Prolog的学习过程,正如前文所说,出色的逻辑思维能为学习众多科學学科和知识打下良好的基础,现如今,越来越多的儿童、低年级学生已经加入了学习编程的行列,Prolog作为一种易于理解的编程语言,同样是一个很好的选择。同时,在高层次领域,基于专家系统的智能教学系统,和基于语义的几何知识库[14]的搭建等都是可以深入研究的方向。

参考文献(References)

[1] J. R Ennals.Beginning micro-PROLOG[M].New York:Harper & Row,1983.

[2] Cumming,G.,Abbott,E.Prolog as a medium for learning in the classroom[C].Proceedings of the IFIP TC 3.1st European Conference on Computers in Education―ECCE 88,Lausanne,Switzerland,24-29. July,1988,North-Holland:IFIP Technical Committee 3,1988:317-321.

[3] Nichol J.,Briggs J.,Dean,J..PROLOG,Children and Students[M].London:Kogan Page,1988.

[4] Gibbins,P..Logic with PROLOG[M].Oxford:Oxford University Press,Inc.,1988.

[5] Richard Spencer-Smith.Logic and PROLOG[M].New Jersey: Prentice-Hall,1991.

[6] Hein J L..Prolog Experiments in Discrete Mathematics,Logic,and Computability[R].Portland:Portland State University,2009.

[7] Christiansen H..Prolog as description and implementation language in computer science teaching[C].Ducassé,Mirelle.Proceedings of The First International Workshop on Teaching Logic Programming-TeachLP.Saint Malo:Linköping electronic conference proceedings,2004:43-54.

[8] 中村 治.Prolog プログラミング[R].横滨:高知大学,2011.

[9] 飯高 茂.Prologで作る数学の世界―Prologそして集合-位相-群[M].新宿:朝倉書店,1990.

[10] 丁盘苹.基于本体和Prolog规则的几何定理证明的研究[D].电子科技大学,2012.

[11] Mcfarland T D,Parker R.Expert systems in education and training[M].Englewood Cliffs:Educational Technology Publications,1990.

[12] Colbourn C J,Light P H.Social interaction and learning using micro‐PROLOG[J].Journal of Computer Assisted Learning,1987,3(3):11.

[13] Peylo C,Teiken W,Rollinger C R,et al.An Ontology as Domain Model in a Web-Based Educational System for Prolog[C].Thirteenth International Florida Artificial Intelligence Research Society Conference.Palo Alto:AAAI Press,2000:55-59.

[14] 佘莉.基于语义的几何学科知识平台[D].中国科学院成都计算机应用研究所,2006.

作者简介:

王佳楠(1991-),女,硕士,助理实验员.研究领域:数据库技术,管理信息系统.

推荐访问: 浅谈 教育 教学中 Prolog