**البرمجة الموجهة للعميل** (بالإنجليزية: Agent-oriented programming)‏ (**AOP**) هي نموذج برمجي حيث يتمحور بناء البرنامج على مفهوم عملاء البرمجيات. على النقيض من البرمجة الموجهة للكائنات التي تحتوي على كائنات (توفير طرق بمعلمات متغيرة) في جوهرها، فإن **البرمجة الموجهة للعميل** لديها عوامل محددة خارجيًا (مع واجهات وقدرات رسائل) في جوهرها. يمكن اعتبارها تجريد للكائنات. يتم تفسير الرسائل المتبادلة عن طريق استقبال «الوكلاء» بطريقة محددة لصنف وكلائها.

التاريخ
-------

تاريخياً، قدم يوآف شوهام مفهوم البرمجة الموجهة للوكيل وفكرة تركيز البرمجيات حول مفهوم الوكيل في دراسات الذكاء الاصطناعي عام 1990. وكلائه محددون بنموذجه الخاص لأن لديهم طريقة واحدة فقط، مع معلمة واحدة. على حد تعبير يوآف شوهام من ورقته في عام 1990 عن فرق أساسي بين البرمجة الموجهة للعميل والبرمجة الموجهة للكائنات. البرمجة الموجهة للوكيل (AOP)، والتي يمكن اعتبارها تخصصًا للبرمجة الموجهة للكائنات.

|  | OOP | AOP |
| --- | --- | --- |
| الوحدة الأساسية | الكائن | وكيل |
| المعلمات التي تحدد حالة الوحدة الأساسية | غير مقيد | المعتقدات والالتزامات والقدرات والاختيارات.. . |
| عملية الحساب | طرق تمرير الرسالة والاستجابة | طرق تمرير الرسالة والاستجابة |
| أنواع الرسائل | غير مقيد | إعلام، طلب، عرض، وعد، رفض.. . |
| القيود على الطرق | لا شيء | الصدق والاتساق.. . |

أطر الأعمال
-----------

هناك العديد من «أطر عمل AOP»، وتسمى أيضًا منصات الوكيل، والتي تطبق نموذج برمجة شوهام Shoham. توضح الأمثلة التالية كيف تتم برمجة العامل الأساسي كبرنامج «مرحبا يا عالم!» (hello-world).

### جِيَدْ

بالنسبة لمنصة جافا، أحد الإطارات هو JAD E. فيما يلي مثال أساسي للغاية  لعامل يقوم بتشغيل التعليمات البرمجية 

```
package helloworld;
import jade.core.Agent;
 
public class Hello extends Agent {
 
 protected void setup() { 
 System.out.println("Hello World. ");
 System.out.println("My name is "+ getLocalName()); 
 }
 
 public Hello() {
 System.out.println("Constructor called");
 }

}

```
 في صميم نموذج AOP الخاص بـ JADE هو أن API الخاص به يدعم لغة اتصال وكيل FIPA القياسية

### Agent Speak (Jason)

للحصول على ترجمة حرفية للمفاهيم الموجهة إلى الوكيل إلى مخطط غير مبهم كما هو JADE، وراء جافا والتوجيه الكائن، يوفر Agent Speak (Jason) لغة «طبيعية» للوكلاء. 

```
 
 started.

 +started <- .print("Hello World. ").

```

### غول

غول GOAL هي لغة برمجة وكيل لبرمجة العوامل المعرفية. يستمد وكلاء غول اختيارهم للعمل من معتقداتهم وأهدافهم. توفر اللغة اللبنات الأساسية لتصميم وتنفيذ العوامل المعرفية من خلال تراكيب البرمجة التي تسمح وتيسر التلاعب بمعتقدات الوكيل وأهدافه وهيكلية صنع القرار. توفر اللغة إطار برمجة بديهي يعتمد على الحس السليم أو المنطق العملي.

### لغة سارل

يوفر سارل  (موقع SARL) الملخصات الأساسية لترميز الأنظمة متعددة الوكالات. يستخدم بناء جملة يشبه البرنامج النصي (مستوحى من سكالا وروبي). 

```
package helloworld
import io.sarl.core.Initialize
agent HelloWorldAgent {
 on Initialize { 
 println("Hello World.")
 }
}

```

البرامجيات الوسيطة
------------------

تتمثل إحدى طرق تنفيذ دعم AOP المعياري أو القابل للتوسيع في تحديد واجهات برمجة تطبيقات AOP القياسية لوظائف البرامج الوسيطة التي يتم تنفيذها هي نفسها كوكلاء برامج. على سبيل المثال، يمكن تنفيذ خدمة الدليل كمنسق دليل FIPA أو وكيل برنامج DF؛ يمكن تنفيذ إدارة دورة الحياة لبدء وكلاء ووقفهم وتعليقهم واستئنافهم كخدمة إدارة وكيل FIPA أو وكيل AMS. تتمثل فائدة منهج AOP في أنه يدعم أدوارًا أكثر ديناميكية بين مختلف المستخدمين وموفري التطبيقات والخدمات والشبكات. على سبيل المثال، عادةً ما تتم إدارة الشبكات والخدمات عادةً بواسطة الشبكة ومزود الخدمة بالنيابة عن العميل ويتم تقديمها كخدمة شبكة افتراضية واحدة ولكن العملاء أنفسهم أصبحوا أكثر تفويضًا لدمج وإدارة خدماتهم الخاصة. يمكن تحقيق ذلك عبر AOP و APIs لوكلاء البرامج الوسيطة الذين يمكنهم إدارة الاتصالات بمرونة وديناميكية.

انظر أيضا
---------

* وكيل البرمجيات

المراجع
-------

1. ↑  
Shoham، Y. (1990). *Agent-Oriented Programming* (Technical Report STAN-CS-90-1335). Stanford University: Computer Science Department.
2. ↑  
Shoham، Y. (1993). "Agent-Oriented Programming". *Artificial Intelligence*. ج. 60 ع. 1: 51–92. DOI:10.1016/0004-3702(93)90034-9.
3. ↑  "Wayback Machine". *web.archive.org*. مؤرشف من الأصل في 2020-06-14. اطلع عليه بتاريخ 2020-06-15.
4. ↑  "Redirecting..." *jade.tilab.com*. مؤرشف من الأصل في 2019-11-30. اطلع عليه بتاريخ 2020-06-15. `{{استشهاد ويب}}`: الاستشهاد يستخدم عنوان عام (مساعدة)
5. ↑  Anand S. Rao, 1996. AgentSpeak(L): BDI Agents Speak Out in a Logical Computable Language. Proceedings of Seventh European Workshop on Modelling Autonomous Agents in a Multi-Agent World (MAAMAW-96).
6. ↑  Rodriguez، Sebastian؛ Gaud، Nicolas؛ Galland، Stéphane (2014). "SARL: A General-Purpose Agent-Oriented Programming Language". *2014 IEEE/WIC/ACM International Joint Conferences on Web Intelligence (WI) and Intelligent Agent Technologies (IAT)*. ص. 103–110. DOI:10.1109/wi-iat.2014.156. ISBN:978-1-4799-4143-8.
7. ↑  Poslad، S (2007). "Specifying Protocols for Multi-agent System Interaction". *ACM Transactions on Autonomous and Adaptive Systems*. ج. 2 ع. 4: 15–es. DOI:10.1145/1293731.1293735.
8. ↑  Poslad، S؛ J. Pitt؛ A. Mamdani؛ R. Hadingham؛ P. Buckle (1999). *Agent-oriented middleware for integrating customer network services. In: Software Agents for Future Communication Systems, Hayzelden A, Bigham J Eds*. ص. 221–242. DOI:10.1007/978-3-642-58418-3\_9.

* أيقونة بوابةبوابة برمجيات
* أيقونة بوابةبوابة علم الحاسوب