精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-23
为何对于规则来说Java编码是不好的,而声明式编程是更好的选择 <o:p></o:p> 作者: Mark Proctor <o:p></o:p> Drools的卖点之一,也是我们能够超越其它竞争者的地方是,在规则的表达式和推论中允许使用Java编码。这带来了一个较低的学习曲线,因为Java开发者不需要额外的培训就可以开始编写规则的推论部分;不管是更新值,发送消息或从数据库返回信息。这种与Java或类Java语言一体的模式,对于市场来说也是一种对比竞争者的宣传措施。从表面上看来起来是很好的,并且对于管理者来说也可以带来——更少的培训,利用现有的技术,哪不好的一面是什么呢?<o:p></o:p> 使用Java语言,将编程环境从一个产生式规则系统(如Drools)中转移出来。当你允许在规则中使用Java编码时,你也就开始使用命令式的编程。规则引擎提供了一个图灵完整的系统以及一种声明式的语言,如果你阅读了Drools用户手册回留意到我们花了一些时间解释命题和一阶逻辑,以及它们怎样可以用一种声明式的风格来描述各种情况——这对于软件开发者来说是一种不可思议的方法。概要来说Java是命令式的,因为你描述如何去做事情,这通常占据了多行的代码并且意味着你必须读完所有这些代码才能理解它要做什么。当代码变得越复杂,也就意味着你要阅读更多的代码行,最终从这一点来说,当复杂性越来越大时,代码将变得难以理解和维护;这就会造成只有最初的开发者才能有效率的维护代码。声明式编程允许你用关键字来表达复杂的规则;每一个规则特定于一个特殊场景以及相关行为之间的细节。这些行为也应该使用声明的模式来指定,否则会降低我们定义和编制规则条件的价值。这正是业务规则方法学的灵魂所在。对于这点感兴趣的朋友我推荐下面三本书: 当前Drools并没有计划移除对Java的支持,并且我们不久将希望增加Groovy和JavaScript的支持——我们也希望推荐一种支持声明式方法的语言,而不是从Drools中移除什么。这种新的语言将变成我们推荐编制规则的标准语言。<o:p></o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p>
<o:p> </o:p> 我仍然犹豫是否要支持匿名类——当我们需要在对象上指定行为监听器或回调时需要使用。无论怎样,这显然增加了复杂度,我希望能够避免在推论中增加这个,可能使用一些其它方法建立在函数或方法之外。像if/switch/loop这样的控制结构可能也会被配置为可选的,或者设置一些使用障碍。这种语言应该能够同时工作在解释模式和编译模式。编译模式允许最大化的执行速度,对于小型或中型系统是理想情况——拥有数千条规则的大型系统将会遭受内存溢出问题,可能最好是使用解释模式。 注:在Drools4.0中作者已经使用MVEL作为这种新的语言。<o:p></o:p> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2532 次