跳轉到內容

計算機程式設計/面向代理程式設計

來自華夏公益教科書,為開放世界提供開放書籍

面向代理程式設計

[編輯 | 編輯原始碼]

面向代理程式設計是一種比較新的程式設計正規化,它支援計算的社會觀。在 AOP 中,被稱為代理的物件相互作用以實現各自的目標。代理可以存在於像全球網際網路一樣複雜的結構中,也可以存在於像普通程式模組一樣簡單的結構中。代理可以是自主實體,在沒有使用者干預的情況下決定下一步行動,也可以是可控的,作為使用者和另一個代理之間的中介。

根據 (Shoham, 1993) 的說法,代理是“一個實體,其狀態被視為由信念、能力、選擇和承諾等心理成分組成”。這個定義充其量是神秘的,最壞的情況是毫無用處。在他的論文中,Shoham 透過應用 Dennet 和 McCarthy 的標準縮小了這個定義。Dennet 認識到許多簡單的非生物物體可以被視為屬於這個框架(他稱之為意向立場)。麥卡錫建議,當這些屬性“有用”時,應該將心理屬性歸因於物體。

例如,考慮一下代理“重力”。重力可以被視為一個能夠對物體施加力的實體,並且選擇對它遇到的每個物體施加力。進一步舉個例子,我們可以說重力可以選擇在任何方向和任何強度上施加這個力;它只是選擇在“向下”方向以 9.8m/s2 的速度施加力(在地球上,當第二個物體的質量與第一個物體相比可以忽略不計時)。這與伽利略實驗之前許多人的信念並不相差太大。然而,如今,這種觀點對我們毫無用處;它並不實用。

現在,考慮一下木星衛星木衛二表面上的一個自主漫遊車。這個機器人可以被視為一個代理,它相信冰層最薄的地方是冰塊最粗糙的地方。它可能想要在這些地方進行鑽探。它可能無法在非常崎嶇的地形上導航,因此可能希望避免這種情況。這些是合理且可能有用的人工屬性。事實上,從這個角度出發編寫程式碼可能會有用。這就是面向代理程式設計背後的推理。

Shoham 建議一個 AOP 系統需要這三個元素中的每一個才能完整 

  • 一種具有明確語法來描述心理狀態的形式語言。這可能包括用於陳述信念(例如謂詞演算)、傳遞訊息等的結構。該領域的大部分研究都集中在這個部分,並強調與人工智慧相關的語義問題。
  • 一種用於定義代理的程式語言。這種語言的語義應該與形式語言的語義密切相關。在許多情況下,功能將難以或無法實現,並且將引入進一步的限制。我們將在多個案例中看到這一點。
  • 一種將中立應用程式轉換為代理的方法。這種工具將允許代理透過賦予意圖的方式與非代理進行通訊,就像我們上面對星際漫遊車所做的那樣。此規範部分與語言問題無關,這裡將不討論。
華夏公益教科書