Rabu, 11 September 2013

Pengertian Prolog

A. PENDAHULUAN
Prolog memiliki fasilitas untuk mengaktifkan input dan output baik dari istilah atau karakter.
Menggunakan istilah lebih sederhana dan akan dijelaskan terlebih dahulu. Awalnya, maka akan diasumsikan bahwa semua output ke layar pengguna dan semua input adalah dari pengguna keyboard. Masukan dan output menggunakan file eksternal, e.g. pada hard disk atau CD-ROM, akan dijelaskan dalam bagian 5,7 dan seterusnya. Perhatikan bahwa, seperti banyak lainnya predikat built-in, mereka untuk masukan dan output yang dijelaskan dalam bab ini adalah semua unresatisfiable, yaitu mereka selalu gagal ketika kemunduran.

B. SEJARAH
Prolog adalah bahasa pemrograman logika atau di sebut juga sebagai bahasa non-procedural. Namanya diambil dari bahasa Perancis programmation en logique (pemrograman logika). Bahasa ini diciptakan oleh Alain Colmerauer dan Robert Kowalski sekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman yang memungkinkan pernyataan logika alih-alih rangkaian perintah untuk dijalankan komputer.

Prolog merupakan singkatan dari Programming in Logic. Idenya berasal dari era 1970-an yang bertujuan untuk menggunakan logic (logika) sebagai bahasa pemrograman.
SWI-Prolog merupakan implementasi open source bahasa pemrograman Prolog, biasanya digunakan untuk mengajar dan aplikasi web semantik. Ini memiliki seperangkat kaya fitur, perpustakaan untuk pemrograman kendala logika, multithreading, unit testing, GUI, interfacing ke Jawa, ODBC dan lain-lain, server web, pengembang alat (termasuk sebuah IDE dengan GUI debugger dan profiler GUI), dan dokumentasi yang ekstensif.

Prolog dan LISP sangat lambat dalam eksekusi program dan memakan memori yang besar sehingga hanya kalangan tertentu yang menggunakannya. Dengan adanya Compileer Prolog, kecepatan eksekusi program dapat ditingkatkan, namun Prolog masih dipandang sebagai bahasa yang terbatas (hanya digunakan di kalangan perguruan tinggi dan riset.
Pandangan tersebut tiba-tiba berubah di tahun 1981 pada konverensi internasional I dalam system generasi kelima di Tokyo, Jepang. Jepang yang saat itu mengalami kesulitan bersaing dalam pemasaran komputer dengan Amerika Serikat, merencanakan pengembangan teknologi hardware dan software untuk tahun 1990-an. Dan bahasa yang dipilih adalah Prolog.
Sejak saat itu, banyak orang menaruh minat pada prolog dan saat itu telah dikembangkan versi prolog yang mempunyai kecepatan dan kemampuan yang lebih tinggi, lebih murah dan lebih mudah digunakan, baik untuk komputer mainframe maupun komputer pribadi sehingga Prolog menjadi alat yang penting dalam program aplikasi kecerdasan buatan (AI) dan pengembangan system pakar (expert system).
SWI-Prolog dapat berjalan dalam platform windows, linux dan macintosh, tapi setiap Platform berbeda cara dan tipe instalasinya. 

C. PEMBAHASAN
Perbedaan Prolog dengan Bahasa Lain
Hampir semua bahasa pemrograman yang ada pada saat ini seperti Pascal, C, Fortran, disebut procedural language untuk menggunakan bahasa tersebut diperlukan algoritma atau procedure yang dibuat untuk menyelesaikan masalah. Program dapat menjalankan procedure yang sama berulang-ulang dengan data masukkan yang berbeda-beda. Procedure serta pengendalian program sepenuhnya ditentukan oleh programmer dan perhitungan yang dilakukan sesuai dengan procedure yang telah dibuat. Dengan kata lain, Pemrograman harus memberi tahu komputer bagaimana komputer harus menyelesaikan masalah.
Prolog mempunyai sifat-sifat yang berbeda dengan bahasa yang disebutkan diatas, prolog disebut sebagai object oriented language atau declarative language. Dalam prolog tidak terdapat prosedur, tapi hanya tampilan data-data object (fakta) yang akan diolah dengan relasi antar object tersebut yang membentuk suatu aturan. Aturan-aturan ini disebut HEURISTIK dan diperlukan dalam mencari suatu jawaban, dengan kata lain, prolog dalam prolog adalah database.
Pemrogram menentukan tujuan (Goal) dan komputer akan menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya. Caranya dengan menggunakan “Formal Reasoning” yaitu membuktikan cocok tidaknya tujuan dengan data-data yang telah ada dan relasinya. Prolog memecahkan masalah seperti yang dilakukan oleh fikiran manusia.
Dengan demikian, Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang prosedur pemecahannya tidak diketahui, khusunya untuk memecahkan masalah non numeric.
Kemampuan Prolog
Terletak pada kemampuannya untuk mengambil kesimpulan (jawaban) dari data-data yang ada. Karena program dalam bahasa prolog tidak memerlukan prosedur (algoritma). Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non-numerik.
Misalnya, dalam pembuatan program catur dengan prolog untuk menentukkan gerakan catur anda tidak perlu menganalisa semua kemungkinan atau menentukkan suatu prosedur tertentu untuk untuk menentukan gerakan berikutnya. Tetapi anda cukup menuliskan aturan umum permainan catur dan lebih baik lagi jika ditambah dengan aturan yang diperoleh dari pengalaman. Prolog akan menentukan sendiri langkah yang akan diambil berdasarkan data-data yang ada saat itu dan aturan-aturan yang diberikan.
Contoh lain kemampuan prolog:
• Permasalahan


Perangkat audio hanya menghasilkan suara disatu sisi speaker
• Pemecahan
Memindahkan switch ke radio FM. Bila kedua speaker berbunyi, maka anda tahu bahwa masalah berasal dari input tape, coba dengan kaset bila hasilnya tetap, berarti masalah tersebut berasal dari tape dan bukan kaset. alternatif termudah adalah dengan membersihkan head tape dan sekarang kedua speakernya berbunyi.

Gambar Diagram Pencarian Jawaban Melalui Ruang Masalah
Dari diagram diatas, ruang masalah ditunjukan dalam simpul (node) dan penghubung (link). Tiap-tiap simpul merupakan subgoal (tujuan menengah) yang merupakan langkah menuju jawaban akhir. Dalam prolog anda hanya mendefinisikan ruang masalah yang ada sedangkan dalam bahasa procedural, anda harus menentukan jalan tertentu yang harus ditempuh melalui ruang masalah.
Prolog merupakan suatu bahasa pemrograman yang banyak digunakan dalam pengembangan Artificial Intelliegence. Prolog dalam perkembangannya telah dikombinasikan dengan berbagai bahasa pemrograman, terutama functional programming.

Bahasa prolog ini memiliki ciri-ciri :
• Bahasa pemrograman yang non sequential
• Bahasa pemrograman yang deklaratif
• Simbolik
• Berdasarkan first order logic

Kesederhanaan Prolog dibanding bahasa lain adalah :
• Sintaksnya sangat sedikit sekali,
• Secara teoritis tidak ada tipe data, tetapi bilangan bulat terpisah.
• Semantik sangat jelas dan terdefinisi secara matematis.

Karena prolog yang digunakan adalah swi-prolog maka untuk menjalankan program tersebut adalah dengan mengklik 2 kali pada shortcut swi-prolog.
Suatu program prolog tidak memiliki struktur seperti deklarasi, dan lain-lainnya. Seluruh atom ditangani secara sama, yang ada hanyalah clause. Untuk memulai penjelasan tersebut akan dijelaskan tentang bagian-bagian dalam program Prolog.

1. Term
Suatu data yang bukan merupakan variabel disebut dengan term.
Atomic term
• Ada dua jenis, atom dan integer
• Dimulai dengan huruf kecil atau angka numerik. Contoh made, psg, 123.

2. Functions
Simbol suatu fungsi disebut functor.
• Arity dari suatu fungsi adalah jumglah dari argumennya. Suatu atom adalah fungsi dengan arity sama dengan 0. Argumen dapat berupa term atau variabel,
• Bisa berstruktur rekursif
• Dimulai dengan huruf kecil. Contoh :
makan(nasi). makan adalah functor, dan nasi adalah argument.

3. Clause
Program prolog dapat dianggap sebagai suatu himpunan fungsi boolean, yang disebut dengan clause. Clause dapat memiliki argumen atau tidak memiliki.
Clause dapat memiliki body yang kosong, disebut dengan fact, sedang yang memiliki body disebut rule. Suatu query dapat dinyatakan sebagai suatu predicate, arity dari predicate adalah jumlah argumen yang dipakainya.


CONTOH PROLOGNYA

direktur(nasution,djp273).
direktur(agus,pkn105).
direktur(andi,dja301).
direktur(heri,pb112).
direktur(ani,a001).

vertical(hirata,djp273).
vertical(asep,pb112).
vertical(leana,pkn105).
vertical(leana,dja301).
vertical(indra,djp273).
vertical(andreas,apk090).

sub(arkha,a001).
sub(andreas,pb112).

Maka hasil runnya ::::


1 50 Kometar: