快速业务通道

冒号课堂§4.4:情景范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
主要采用数据驱动的(data-driven)正向推理(forward chaining)法,而Prolog引擎采用目标驱动的(goal-driven)逆向推理(backward chaining)法。正向推理自底向上,利用推理规则从已有的事实数据推出更多的数据,直到达成目标;逆向推理正相反,自顶向下,从目标出发寻找满足结论的事实[3]。相比而言,正向推理适合针对不同输入作出不同反应,而逆向推理适合回答查询。现在是服务员根据客人的喜好提建议,当然用正向推理更合适。再说这类引擎与Java的集成更加方便,因此我们没有选择Prolog。”

讲到此处,每个人都意识到,只剩下最后一个范式了。

冒号提出一个新问题:“假如餐馆经理接到顾客投诉,反映服务人员态度不好,卫生状况也不理想,应该怎么办?”

问号抢先说:“首先我的接待员在迎客(receive)时要笑容可掬地对顾客说:‘欢迎光临!’,在送客(send)时要对顾客鞠躬:‘请慢走,欢迎下次再来’”

逗号接着说:“我的服务员在上完菜后应对客人说:‘请慢用’,句号的收银员也应加些礼貌用语,让人家高高兴兴地掏钱。”

句号补充道:“服务员在上菜(serve)前、厨师在烹饪(cook)前应洗手,厨工在洗碗(washDishes)后应对餐具消毒。”

冒号紧接着问:“如果餐馆对礼貌规范或卫生标准做修改,必然要牵扯不同类中的不同的方法,维护起来很不方便,怎样才能有效地解决这个问题呢?”

答案已经昭然若揭了。

冒号干脆自问自答:“不错,正是用切面式编程。只要创立两个Aspect:Etiquette和Sanitation,分别负责礼貌规范和卫生标准方面的事务。一旦某一方面的要求发生变化,比如餐馆来了外宾,或者碰上非典或禽流感,只需在相应的Aspect模块中作调整:将礼貌用语换成英语或者提高卫生标准等等。如果采用runtime AOP,甚至还可在运行期选择激活或禁用这些Aspect。”

下面开始有些骚动,大伙早已脑中满满而腹中空空,有点头重脚轻了。

冒号见状,遂发出激动人心的号召:“今天的课到此结束,让我们从虚拟的餐馆中走出,到真实的餐馆中去吧!”

众人齐声欢呼。

冒号课堂§4.4:情景范式(7)

时间:2011-06-27 BlogJava xyz98

,插语

[1] 若输入数过大,则需要设定更小的dx。此外,还可能产生计算溢出。

[2] Rete算法是一种高效的模式匹配算法,用于实现规则生成系统(production rule system)。

[3] 用逻辑的语言来说,正向推理顺着从前件(即if语句)到后件(即then语句)的方向,逆向推理顺着从后件到前件的方向。

。总结

l    闭包是一种能保留当初创建时的环境变量的函数。它通常以匿名的方式存在,多用于函数式编程中,能使代码更加简洁清晰。Java中的匿名类可以看作OO化的闭包形式。

l    Jess、Drools、JLisa、JRules等规则引擎主要基于正向推理,能无缝地与Java平台集成。它们提供了逻辑式编程环境,能有效地将业务规则从应用程序中分离出来,提高了软件的灵活性和可维护性。

l    每种编程范式都能在生活中找到它的应用,它们本来就是人类思维方式的投影。

“”参考

[1] Wikipedia.Closure (computer science).http://en.wikipedia.org/wiki/Closure_(computer_science)

[2] Ernest Friedman-Hill.Jess 7.1p2 manual.http://www.jessrules.com/jess/docs/Jess71p2.pdf

[3] Mark Proctor等.Drools Documentation.http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html

课后思考

l   同样一个问题用不同的语言来编程,代码可能会有极大的差异。你认为这种差异的主要根源是语言还是范式?

l   认真研究本课中的编程范式汇

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号