Bahasa Pemrograman Logic - Tinjauan Sekilas

Sama halnya dengan functional programming, logic programming merupakan alternatif/pendekatan lain dari metode pemrograman. Programs di dalam logic languages dituliskan dalam bentuk symbolic logic, dan menggunakan metode logical inferencing untuk memberikan suatu hasil. Logic programming bersifat declarative, konstras dengan procedural . Dengan kata lain, program fokus pada menyatakan spesifikasi dari yang akan dihasilkan, bukan langkah langkah detil untuk mencapai hasil. Pemrograman yang menggunakan suatu bentuk symbolic logic sebagai bahasa untuk memprogram biasa disebut logic programming, dan bahasa yang didasarkan pada symbolic logic biasa disebut logic programming languages atau declarative languages. Salah satu bahasa tersebut adalah Prolog. Symbolic logic yang digunakan di dalam Logic Programming dinamakan first order predicate calculus, atau ringkasnya predicate calculus. Berikut ini adalah beberapa terminologi yang 
digunakan di dalam predicate calculus.
  • Proposition
Proposistion dimaksudkan sebagai pernyataan benar/salah (logical statement) yang sesungguhnya bisa benar maupun tidak benar. Proposition terdiri dari sejumlah objects dan relationships antara suatu object dengan object lain. Diperlukan metode formal dalam menyatakan suatu proposition sehingga validitasnya mudah diperiksa, metode tersebut dikenal dengan sebutan formal logic.
  • Symbolic Logic
Ada tiga kebutuhan dasar dalam formal logic: mengekspresikan proposition, mengekspresikan keterkaitan (relationships) antar proposition, dan mendekskripsikan bagaimana proposistion baru dapat disimpulkan (inferred) dari proposition lain yang diasumsikan/inilai benar. Ketiga kebutuhan dasar tersebut dapat dipenuhi menggunakan symbolic logic. Bentuk symbolic logic tertentu yang digunakan untuk logic programming disebut predicate calculus.
  • Object Representation
    • Objects yang terkandung di dalam suatu proposition direpresentasikan melalui simple terms: yaitu berupa salah satu dari konstanta (constants) atau variables 
    • Konstanta (Constant) dimaksudkan sebagai suatu symbol untuk merepresentasikan object
    • Variable dimaksudkan sebagai suatu symbol untuk dapat merepresentasikan objects yang berbeda pada waktu yang berbeda. Pengertian variables dalam hal ini berbeda dengan pengertian variable di dalam bahasa imperative.
  • Compound Terms
Program dalam Prolog terdiri dari sekumpulan statements. Setiap stement, termasuk data, dibentuk dari elemen yang disebut term . Term dapat berupa constant, variable, atau suatu structure
  • Konstanta (Constant) dapat berupa atom (symbolic value) atau integer 
  • Variable dikaitkan (bound) pada tipe data dan nilai bukan pada saat deklarasi, tetapi pada saat resolution process
  • Structure adalah reprsentasi dari atomic propositions yang terdiri dari compound terms
Compound term merupakan suatu elemen dari suatu mathematical relation, dituliskan dalam bentuk yang menyerupai mathematical function. Mathematical function adalah suatu pemetaan (mapping) yang dapat dituliskan dalam bentuk expression, table, atau list of tuples.

Compound term terdiri dari dua bagian: functor dan ordered list of parameters
  • Functor adalah function symbol untuk menamakan suatu relation
  • Ordered list of parameters (tuple) dapat berbentuk 1 tuple, 2 tuple, dan seterusnya.
Contoh:
  • student(jon)
  • like(seth, OSX)
  • like(nick, windows)
  • like(jim, linux)
Contoh di atas menyatakan bahwa {jon} adalah 1-tuple di dalam relation yang diberi nama student; dan {jim,linux} adalah 2-tuple di dalam relation yang diberi nama like. Relation like mempunyai tiga elemen yang berbeda: {seth, OSX}, {nick, windows}, dan {jim, linux}.
  • Forms of a Proposition
Propositions dapat dinyatakan dalam dua bentuk (modes): fact atau query. Fact adalah proposition yang diasumsikan benar, sedangkan Query dimaksudkan sebagai proposition yang kebenarannya akan ditentukan. Compound proposition mempunyai dua atau lebih atomic propositions yang dihubungkan melalui logical connectors/operators. Penggunaan variable di dalam suatu proposition memungkinkan jika akan menggunakan simbol tertenu yang disebut quantifier.

  • Rangkuman Pemrograman Logic
Seperti telah disinggung sebelumnya, bahasa yang digunakan di dalam logic programming disebut juga declarative languages. Program dituliskan dalam bentuk deklarasi (declaration), bukan dalam bentuk pernyataan penugasan (assignment statement) dan control flow seperti pada bahasa imperatif. Deklarasi di maksud sesungguhnya adalah pernyataan (statements /propositions) dalam bentuk symbolic logic. Berikut ini adalah karakteristik penting dari logic programming, yaitu:
    • Declarative semantics, yaitu sederhana caranya dalam menentukan makna (meaning) dari setiap statement. Lebih sederhana (simpler than) dibanding semantics dari bahasa imperatif (imperative languages).
    • Programming bersifat non-procedural, yaitu program tidak perlu menyatakan bagaimana suatu hasil dihitung, melainkan cukup dengan mendeskripsikan bentuk dari hasil yang diinginkan.
Contoh berikut adalah pengurutan sederetan nilai Sorting suatu List. Cukup dengan mendeskripsikan karakeristik dari list yang urut (sorted), bukan dengan proses mengurutkan rearranging a list

No comments:

Post a Comment