Pemrograman berorientasi agen

**Pemrograman berorientasi agen/''Agent-oriented programming'' (AOP)** merupakan sebuah paradigma pemrograman, di mana pembuatan perangkat lunak berpusat pada konsep agen perangkat lunak (*software agent*). Berkebalikan dengan pemrograman berorientasi objek yang memiliki objek (yang menyediakan *method* dengan variabel parameter) sebagai inti utamanya, AOP yang ditentukan secara eksternal (dengan antarmuka dan kemampuan pesan) sebagai inti utamanya. Agen-agen ini dapat dianggap sebagai abstraksi terhadap objek. Pesan yang ditukarkan diinterpretasikan oleh "agen" penerima, dengan cara yang spesifik untuk setiap kelas agennya  

## Sejarah
Secara historis, konsep pemrograman yang berorientasi agen dan gagasan untuk memusatkan perangkat lunak terhadap konsep Agen diperkenalkan oleh Yoav Shoham dalam studi kecerdasan buatannya pada tahun 1990. Agen-agennya spesifik hanya untuk paradigma miliknya, karena masing-masing hanya memiliki satu metode dengan satu parameter. Seperti yang dikutip dari artikel Yoav Shoham pada tahun 1990 mengenai perbedaan dasar antara AOP dan OOP:

## Kerangka kerja
Terdapat beberapa kerangka kerja AOP (pemrogaman berorientasi agen), yang juga disebut platform agen, yang mengimplementasikan paradigma pemrograman Shoham. Contoh-contoh berikut ini menunjukkan cara memprogram agen dasar sebagai program hello-world.

### JADE
Untuk platform Java, salah satu kerangka kerja yang digunakan adalah JADE.

Berikut adalah contoh dasar dari agen yang menjalankan kode.
```java
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");
	}

}
```
Inti dari model AOP JADE adalah bahwa antarmuka pemrogramannya (API) mendukung Bahasa Komunikasi Agen FIPA standar.

### Agent Speak (Jason)
AgentSpeak adalah bahasa pemrograman berorientasi agen yang didasarkan pada pemrograman logika dan arsitektur *belief-desire-entention* (BDI).

Untuk menterjemahkan secara harfiah konsep-konsep berorientasi agen ke dalam skema yang tidak disamarkan seperti JADE, di balik Java dan orientasi objek, Agent Speak (Jason) menyediakan “bahasa alami” untuk agen.
```jade
started.

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


### GOAL
GOAL adalah bahasa pemrograman agen untuk memprogram agen-agen kognitif. Agen-agen GOAL menentukan pilihan tindakan mereka berdasarkan keyakinan dan tujuan mereka. Bahasa ini menyediakan blok-blok dasar untuk merancang dan mengimplementasikan agen-agen kognitif melalui konstruksi pemrograman yang memungkinkan dan memudahkan manipulasi keyakinan dan tujuan agen, serta mengatur proses pengambilan keputusannya. Bahasa ini menyediakan kerangka kerja pemrograman yang intuitif berdasarkan akal sehat atau penalaran praktis.

### Bahasa SARL
SARL menyediakan abstraksi dasar untuk pemrograman sistem multi-agen. Ia menggunakan sintaksis mirip skrip (terinspirasi oleh Scala dan Ruby).
```sarl
package helloworld
import io.sarl.core.Initialize
agent HelloWorldAgent {
        on Initialize {	
             println("Hello World.")
        }
}
```


### PADE (Python Agent DEvelopment)
PADE adalah paket Python untuk mengembangkan agen cerdas dalam bahasa Python. Kerangka kerja ini mematuhi standar FIPA dan ACL.
```python
class AgenteHelloWorld(Agent):
    def __init__(self, aid):
        super(AgenteHelloWorld, self).__init__(aid=aid)
        display_message(self.aid.localname, "Hello World!")
```


## Middleware
Salah satu cara untuk mengimplementasikan dukungan AOP yang modular atau dapat dikembangkan adalah dengan mendefinisikan antarmuka pemrograman aplikasi (API) AOP standar untuk fungsi middleware yang diimplementasikan sebagai agen perangkat lunak. Misalnya, layanan direktori dapat diimplementasikan sebagai FIPA Directory Facilitator atau agen perangkat lunak DF; manajemen lifecyle untuk memulai, menghentikan, menangguhkan, dan melanjutkan agen dapat diimplementasikan sebagai FIPA Agent Management Service atau agen AMS. Keuntungan dari pendekatan AOP adalah bahwa ia mendukung peran yang lebih dinamis antara pengguna dan penyedia aplikasi, layanan, dan jaringan yang berbeda. Misalnya, secara tradisional, jaringan dan layanan biasanya dikelola oleh penyedia jaringan dan layanan atas nama pelanggan dan ditawarkan sebagai layanan jaringan virtual tunggal, tetapi pelanggan sendiri kini semakin berdaya untuk mengintegrasikan dan mengelola layanan mereka sendiri. Hal ini dapat dicapai melalui AOP dan antarmuka pemrograman aplikasi (API) untuk agen middleware yang dapat mengelola komunikasi secara fleksibel dan dinamis.

## Referensi