计算机编程/面向代理编程
外观
< 计算机编程
面向代理编程是一种比较新的编程范式,它支持计算的社会观。在 AOP 中,被称为代理的对象相互作用以实现各自的目标。代理可以存在于像全球互联网一样复杂的结构中,也可以存在于像普通程序模块一样简单的结构中。代理可以是自主实体,在没有用户干预的情况下决定下一步行动,也可以是可控的,作为用户和另一个代理之间的中介。
根据 (Shoham, 1993) 的说法,代理是“一个实体,其状态被视为由信念、能力、选择和承诺等心理成分组成”。这个定义充其量是神秘的,最坏的情况是毫无用处。在他的论文中,Shoham 通过应用 Dennet 和 McCarthy 的标准缩小了这个定义。Dennet 认识到许多简单的非生物物体可以被视为属于这个框架(他称之为意向立场)。麦卡锡建议,当这些属性“有用”时,应该将心理属性归因于物体。
例如,考虑一下代理“重力”。重力可以被视为一个能够对物体施加力的实体,并且选择对它遇到的每个物体施加力。进一步举个例子,我们可以说重力可以选择在任何方向和任何强度上施加这个力;它只是选择在“向下”方向以 9.8m/s2 的速度施加力(在地球上,当第二个物体的质量与第一个物体相比可以忽略不计时)。这与伽利略实验之前许多人的信念并不相差太大。然而,如今,这种观点对我们毫无用处;它并不实用。
现在,考虑一下木星卫星木卫二表面上的一个自主漫游车。这个机器人可以被视为一个代理,它相信冰层最薄的地方是冰块最粗糙的地方。它可能想要在这些地方进行钻探。它可能无法在非常崎岖的地形上导航,因此可能希望避免这种情况。这些是合理且可能有用的人工属性。事实上,从这个角度出发编写代码可能会有用。这就是面向代理编程背后的推理。
Shoham 建议一个 AOP 系统需要这三个元素中的每一个才能完整
- 一种具有明确语法来描述心理状态的形式语言。这可能包括用于陈述信念(例如谓词演算)、传递消息等的结构。该领域的大部分研究都集中在这个部分,并强调与人工智能相关的语义问题。
- 一种用于定义代理的编程语言。这种语言的语义应该与形式语言的语义密切相关。在许多情况下,功能将难以或无法实现,并且将引入进一步的限制。我们将在多个案例中看到这一点。
- 一种将中立应用程序转换为代理的方法。这种工具将允许代理通过赋予意图的方式与非代理进行通信,就像我们上面对星际漫游车所做的那样。此规范部分与语言问题无关,这里将不讨论。