GOLOG adalah sebuah bahasa pemrograman logika tingkat tinggi yang dirancang untuk spesifikasi dan pelaksanaan tindakan-tindakan kompleks dalam lingkungan yang dinamis. Bahasa ini berbasis pada kalkulus situasi (situation calculus), suatu kerangka kerja dalam logika matematika yang digunakan untuk penalaran tentang tindakan dan perubahan dalam sistem formal.[1]

GOLOG menggunakan logika tingkat pertama (first-order logic) sebagai fondasinya, memungkinkan pengguna untuk merepresentasikan pengetahuan tentang dunia serta melakukan penalaran terhadap urutan tindakan yang dapat diambil oleh agen cerdas. Dengan pendekatan ini, GOLOG memungkinkan perencanaan dan pengambilan keputusan secara otomatis dalam berbagai skenario yang melibatkan dinamika dunia nyata.[1]

Bahasa ini dikembangkan di Universitas Toronto sebagai bagian dari penelitian dalam bidang kecerdasan buatan, khususnya dalam perencanaan otomatis dan agen kecerdasan.[2]

Sejarah

sunting

Konsep kalkulus situasi yang menjadi dasar pengembangan bahasa pemrograman GOLOG pertama kali diusulkan oleh John McCarthy pada tahun 1963.[3] Dalam makalahnya, McCarthy memperkenalkan situation calculus sebagai kerangka formal untuk merepresentasikan dinamika dunia, terutama bagaimana keadaan dunia berubah akibat tindakan-tindakan yang dilakukan oleh agen.

GOLOG sendiri dikembangkan pada pertengahan tahun 1990-an oleh sekelompok peneliti di Universitas Toronto, termasuk Hector Levesque, Raymond Reiter, Yves Lespérance, Fangzhen Lin, dan Richard B. Scherl. Tujuan utama pengembangannya adalah menciptakan bahasa pemrograman yang dapat menggabungkan penalaran logis dengan kemampuan agen untuk berinteraksi dengan dunia nyata secara otonom. Dengan menggunakan dasar kalkulus situasi, GOLOG memungkinkan deskripsi prosedural dari perilaku agen sambil tetap mempertahankan kemampuan untuk melakukan penalaran deklaratif.[3]

Bahasa

sunting

Penerjemahan GOLOG secara otomatis mempertahankan representasi eksplisit dari dunia dinamis yang dimodelkan, berdasarkan aksioma yang disediakan oleh pengguna. Aksioma ini mencakup prasyarat dan efek dari tindakan, serta keadaan awal dunia. Dengan pendekatan ini, program GOLOG mampu melakukan penalaran terhadap kondisi dunia dan mengevaluasi dampak dari berbagai tindakan potensial sebelum menentukan urutan tindakan yang akan dijalankan. Hal ini memungkinkan sistem untuk bersikap proaktif dan adaptif dalam merespons perubahan lingkungan.[4]

GOLOG merupakan bahasa pemrograman logika dan memiliki karakteristik yang sangat berbeda dari bahasa pemrograman konvensional. Dalam bahasa pemrograman prosedural seperti C, eksekusi program mengikuti urutan pernyataan yang telah ditentukan oleh pemrogram. Subrutin dibangun sebagai rangkaian perintah, yang kemudian dijalankan komputer secara linier.

Sebaliknya, GOLOG sebagai bahasa pemrograman generasi kelima bekerja berdasarkan model abstrak. Dalam paradigma ini, program mendefinisikan tujuan atau masalah, dan interpreter bertugas menghasilkan urutan tindakan yang memenuhi tujuan tersebut. Pendekatan deklaratif ini sangat berguna dalam penanganan masalah kompleks, terutama dalam bidang seperti robotika, di mana agen harus berinteraksi dengan dunia nyata yang tidak sepenuhnya terprediksi.[5]

Program GOLOG mendefinisikan ruang keadaan (state space) tempat agen diperbolehkan untuk beroperasi. Jalur atau solusi dalam domain simbolik dicari melalui proses pencarian dalam ruang keadaan. Untuk meningkatkan efisiensi, program GOLOG sering diwujudkan dalam bentuk jaringan tugas hierarkis, yang membantu membagi masalah besar menjadi sub-tugas yang lebih kecil dan lebih mudah dikelola.

Seiring perkembangannya, GOLOG telah mengalami berbagai perluasan. Salah satu varian penting adalah ConGolog, yang memperkenalkan kemampuan untuk menjalankan tugas secara konkuren serta menangani interupsi. Varian lainnya seperti IndiGolog dan ReadyLog dirancang untuk aplikasi waktu nyata, di mana sistem perlu menangani pembacaan sensor yang diperbarui secara terus-menerus dan meresponsnya secara langsung.[6]

Penggunaan

sunting

GOLOG telah diterapkan secara luas dalam pemodelan perilaku agen otonom, terutama dalam konteks sistem yang membutuhkan perencanaan dan pengambilan keputusan secara dinamis. Dengan memanfaatkan formalisme tindakan berbasis logika, GOLOG memungkinkan perwakilan eksplisit terhadap lingkungan serta efek dari tindakan dasar yang dilakukan oleh agen. Selain itu, bahasa ini mendukung konstruksi tindakan kompleks dengan memanfaatkan struktur dan kontrol alur yang umum dalam bahasa pemrograman, seperti pengulangan, kondisional, dan pemanggilan prosedur.

Salah satu bidang utama penggunaan GOLOG adalah dalam pengendalian tingkat tinggi robot dan proses industri, di mana sistem perlu mengelola urutan tindakan berdasarkan kondisi lingkungan yang terus berubah. GOLOG juga telah digunakan dalam pengembangan agen virtual, sistem simulasi kejadian diskrit, dan aplikasi berbasis pemodelan cerdas lainnya.[7]

Selain itu, GOLOG dapat digunakan sebagai kerangka kerja untuk mengembangkan sistem agen berbasis paradigma Belief Desire Intention (BDI), yaitu model arsitektur agen yang beroperasi berdasarkan keyakinan, keinginan, dan niat. Dengan kemampuannya untuk melakukan penalaran deklaratif dan prosedural secara bersamaan, GOLOG menawarkan fleksibilitas dalam membangun agen yang mampu membuat keputusan secara otonom di lingkungan yang kompleks.[8]

Perencanaan dan Penulisan Naskah

sunting

Berbeda dengan Planning Domain Definition Language (PDDL), GOLOG tidak hanya mendukung perencanaan otomatis, tetapi juga memungkinkan penulisan skrip perilaku agen secara eksplisit. Dalam konteks perencanaan, pengguna menentukan keadaan tujuan dalam model dunia, dan pemecah masalah (problem solver) bertugas menemukan urutan tindakan yang akan membawa sistem dari keadaan awal menuju keadaan tujuan tersebut.[9]

Kemampuan ini memungkinkan GOLOG digunakan untuk penulisan skenario dinamis, seperti menyusun jalan cerita atau alur naratif. Dalam pendekatan ini, pengguna cukup menentukan kondisi akhir yang diinginkan dari cerita. Selanjutnya, pemecah GOLOG akan menjelajahi kemungkinan tindakan yang dapat dilakukan dalam keadaan saat ini, dan menerapkannya secara berurutan hingga tujuan tercapai. Seluruh proses ini bergantung pada spesifikasi formal dari keadaan tujuan dan tindakan-tindakan yang dimungkinkan, yang direpresentasikan dalam model dunia logis.[10]

Selain mendukung perencanaan otomatis, GOLOG juga dapat digunakan untuk menulis skrip perilaku reaktif. Dalam pendekatan ini, tidak diperlukan pemecah masalah, karena urutan tindakan telah ditentukan sebelumnya oleh pemrogram dalam bentuk skrip. Interpreter GOLOG, yang umumnya diimplementasikan menggunakan bahasa Prolog, akan mengeksekusi skrip ini dan secara bertahap membawa sistem menuju keadaan yang diinginkan. Pendekatan skrip ini berguna untuk aplikasi yang membutuhkan respons cepat terhadap rangsangan lingkungan, tanpa memerlukan proses perencanaan ulang secara terus-menerus.[11]

Referensi

sunting
  1. ^ a b Levesque, Hector J.; Reiter, Raymond; Lespérance, Yves; Lin, Fangzhen; Scherl, Richard B. (1997-04-01). "GOLOG: A logic programming language for dynamic domains". The Journal of Logic Programming. Reasoning about Action and Change. 31 (1): 59–83. doi:10.1016/S0743-1066(96)00121-5. ISSN 0743-1066.
  2. ^ ""GOLOG: Bahasa pemrograman logika untuk domain dinamis"".
  3. ^ a b "Il Calcolo delle Situazioni dan il linguaggio Golog" (PDF).
  4. ^ "Software Search - zbMATH Open". zbmath.org. Diakses tanggal 2025-05-10.
  5. ^ Gabaldon, Alfredo (2002). "Programming Hierarchical Task Networks in the Situation Calculus" (PDF). ;
  6. ^ Claßen, Jens (2013). "Planning and Verification in the Agent Language Golog" (PDF). ;
  7. ^ G'omez, Sergio Alejandro. "Planning and Verification in the Agent Language Golog" (PDF). ;
  8. ^ Sardina, Sebastian; Lespérance, Yves (2010). Braubach, Lars; Briot, Jean-Pierre; Thangarajah, John (ed.). "Golog Speaks the BDI Language". Programming Multi-Agent Systems (dalam bahasa Inggris). Berlin, Heidelberg: Springer: 82–99. doi:10.1007/978-3-642-14843-9_6. ISBN 978-3-642-14843-9.
  9. ^ Hofmann, Till; Niemueller, Tim; Claßen, Jens; Lakemeyer, Gerhard (2016-03-05). "Continual Planning in Golog". Proceedings of the AAAI Conference on Artificial Intelligence (dalam bahasa Inggris). 30 (1). doi:10.1609/aaai.v30i1.10414. ISSN 2374-3468.
  10. ^ Frank Dylla, Alexander Ferrein. "Acting and Deliberating using Golog in Robotic Soccer — A Hybrid Architecture". AAAI (dalam bahasa American English). Diakses tanggal 2025-05-10.
  11. ^ Lespérance, Yves; Tam, Kenneth; Jenkin, Michael (2000). Jennings, Nicholas R.; Lespérance, Yves (ed.). "Reactivity in a Logic-Based Robot Programming Framework". Intelligent Agents VI. Agent Theories, Architectures, and Languages (dalam bahasa Inggris). Berlin, Heidelberg: Springer: 173–187. doi:10.1007/10719619_13. ISBN 978-3-540-46467-9.

📚 Artikel Terkait di Wikipedia

Penalaran abduktif

Murray (2000). "An abductive event calculus planner" (PDF). The Journal of Logic Programming (dalam bahasa Inggris). 44 (1–3): 230. doi:10.1016/S0743-1066(99)00077-1

NVIDIA

2020[update]), seorang Amerika Taiwan, sebelumnya direktur CoreWare di LSI Logic dan desainer mikroprosesor di Advanced Micro Devices (AMD), Chris Malachowsky

Logika pemrograman

The family of concurrent logic programming languages (Keluarga dari bahasa pemrograman logis konkuren) (PDF). International Summer School on Logic, Algebra

Association for Computing Machinery

komputer IBM Deep Blue. ACM menerbitkan lebih dari 50 jurnal termasuk Journal of the ACM yang dipandang bergengsi oleh komunitas penelitian ilmu komputer

Teori bahasa pemrograman

Transactions on Programming Languages and Systems (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming, dan Higher-Order

Oracle Corporation

Oracle had a series of acquisitions for building its retail suite: Profit Logic for store operations, 360 Commerce for point of sale (POS), TempoSoft

Algoritma

dll., 2002 Reflections on the foundations of mathematics: Essays in honor of Solomon Feferman, Association for Symbolic Logic, A. K Peters Ltd, Natick

Universitas Telkom

Komputer Lab. Programming Lab. Database Lab. Enterprise Resources Planning Lab. Hardware Lab. Multimedia Lab. Jaringan Lab. Programmable Logic Control Lab