Skip to main content
QUICK REVIEW

[论文解读] An Architecture for Making Object-Oriented Systems Available from Prolog

Jan Wielemaker, Anjo Anjewierden|ArXiv.org|Jul 12, 2002
Logic, programming, and type systems参考文献 1被引用 16
一句话总结

本文提出一种通用架构,可无缝将外部面向对象(OO)系统——尤其是GUI库——集成到Prolog中,通过将OO对象和方法作为Prolog中的头等实体暴露。该方法使用轻量级、类型安全的接口,将Prolog项映射到OO对象,支持跨边界的方法调用,并支持完整的调试和增量开发,实现低延迟通信(每次调用1–5.2 μs),同时支持纯Prolog开发应用逻辑和GUI组件。

ABSTRACT

It is next to impossible to develop real-life applications in just pure Prolog. With XPCE we realised a mechanism for integrating Prolog with an external object-oriented system that turns this OO system into a natural extension to Prolog. We describe the design and how it can be applied to other external OO systems.

研究动机与目标

  • 解决将功能强大的外部面向对象GUI系统集成到Prolog中的挑战,因为Prolog缺乏对高效GUI开发的原生支持。
  • 通过允许从Prolog直接、透明地访问OO系统,消除对单独维护的桥梁代码的需求,这些桥梁原本用于连接Prolog与外部GUI代码。
  • 允许Prolog程序员完全使用同一种语言和工具开发应用逻辑和GUI组件。
  • 支持运行时动态创建类和方法,实现快速原型设计,并从Prolog内无缝扩展OO系统。
  • 尽管存在外部代码和事件驱动的GUI交互,仍保持完整的调试和增量开发能力。

提出的方法

  • 该架构定义了四个核心Prolog谓词:`new/2`用于对象创建,`send/3`用于方法调用,`get/3`用于属性访问,以及`is_a/2`用于类型检查,全部抽象了底层OO系统。
  • 它将Prolog数据类型(原子、整数、复合项)映射到目标OO系统(如XPCE)中的对应类型,实现自动转换和类型安全。
  • 接口使用C作为通用语言桥接,利用C兼容的函数指针调用外部OO系统中的方法,确保性能和可移植性。
  • 该系统支持动态方法分派和运行时类创建,允许在不重新编译的情况下,直接在Prolog中定义和使用新类与方法。
  • 通过在Prolog与外部代码边界转换时保留堆栈上下文,并支持在Prolog和外部代码中设置断点,与Prolog原生调试器集成。
  • 该设计确保所有应用逻辑都在Prolog中运行,从而在整个开发生命周期中可使用Prolog的增量编译和调试工具。

实验结果

研究问题

  • RQ1如何扩展Prolog,使其能够原生且透明地访问外部面向对象系统(如GUI库),而无需低级C绑定或单独的GUI代码?
  • RQ2Prolog到OO系统接口引入的性能开销是多少?是否可以将其最小化以支持交互式GUI应用?
  • RQ3在混合使用Prolog代码与外部事件驱动OO系统时,能否保持完整的调试和增量开发能力?
  • RQ4面向对象编程概念(如继承、动态方法分派、运行时类创建)在多大程度上可被暴露并从Prolog中使用?
  • RQ5如何使集成支持统一的开发环境,使得应用逻辑和GUI组件均可完全在Prolog中编写和调试?

主要发现

  • Prolog到OO系统接口实现了低延迟方法调用,每次调用的执行时间在AMD 1600+处理器上为1.0至5.2微秒。
  • 调用由C定义的内置方法(如`normalise`)的性能开销仅为1.0 μs,表明其效率高,适用于交互式GUI。
  • 系统支持对Prolog和外部代码的完整调试,SWI-Prolog调试器能够显示跨Prolog-外部边界交错的堆栈跟踪。
  • 可在Prolog和外部代码中设置断点,调试器还能处理执行过程中的自发事件驱动调用(如鼠标拖动)。
  • 新类和方法可在运行时动态创建,允许无缝扩展外部OO系统,无需重新编译或生成源文件。
  • 该架构实现了GUI和应用逻辑在Prolog中的完整统一开发,消除了对单独GUI程序和Prolog程序之间复杂接口同步的需求。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。