Expert Systems şirketinin yönetici- si Alex Goodall, Prolog programlama dilinin kullanım değeri üzerine şunları söylüyor: “Yapay Zeka alanında ye- ni olan bir kişi, Prolog'dan başka bir şey kullandığı takdirde hataya düşmüş olur, çünkü Prolog'u kullanmak LISP'i kullanmaktan daha keyijfli- dir.”” Bu bağlamda iki dil daha söz- konusu: VALID ve Occam. Tüm bu diller açısından, geleneksel program- lama yönteminden bir sapma gözleni- yor. Bu sapma özellikle Prolog'da çok belirgin. Geleneksel programlama dillerinin aksine, Prolog'da, program akışını yönetmesi gereken dil ögeleri (GOTO, FOR-NEXT vs.) hemen hemen hiç yok. Programcı bir algoritmayı kod- lamıyor, bunun yerine betimlenecek sorun alanında geçerli olan olguları, ilişkileri ve kuralları veriyor. Uzman sistemler bağlamında şu da söylene- bilir: Bilgi, tüm karşılıklı bağımlılık- larıyla ve ilişkileriyle biraraya getirilir. Turbo-Prolog'la yazılmış basit bir örnek: domains kişiler spor — simge predica oynuyor (kişiler, spor) clau: oynuyor (ahmet, futbol). oynuyor (Ayla, voleybol). oynuyor (Hasan, satranç). oynuyor (Aziz, tenis). oynuyor (Sacit, X) if oynuyor (Ha- san, Bu program, küçük bir grubun üye- leri olan insanların herbirinin hangi spor türlerini yaptıklarını veriyor. Programın birinci bölümünde (doma- ins), karşılaşılan sorunda rol oynayan objelerin adları ve hangi türde olduk- ları veriliyor. Örneğimizde hem kişi- ler hem de spor, simge türünde. Di- ğer olası türler, örneğin, real ve inte- ger. İkinci bölümde (predicates), iliş- kilerin adları sayılıyor ve bunlara bağlı objelerin adları veriliyor. Örneğimiz- de “oynuyor'”, kişiler ile spor arasın- da bir ilişki oluşturuyor. Böylece açık- lama öbeği kapanıyor. Bundan son- ra işlem kısmı geliyor İşlem kısmında (clauses), önce dört olgu belirtiliyor. Beşinci işlem ise ka- fa (vargı)dan ve gövde (öncüller)den oluşuyor ve hüküm olarak adlandırı- lıyor. Bunda, Hasan tarafından yapı- lan her sporun, Sacit tarafından da yapıldığı belirtiliyor. “İf”” yerine ço- ğunlukla :-da olabiliyor ve bu “eğer”' şeklinde okunabiliyor. Bir işlemin gövdesi çoğunlukla daha karmaşıktır ve mantıksal işlemcilerle birbirine bağ- lanan tekıl lıterallerden oluşur. Bura- da “, ” simgeleri, mantıksal VE ve mantıksal VEYA yerine kullanılır. Beşinci işlemde X değişkeni ortaya çı- kıyor. Değişkenler, sabitlerin aksine daima büyük harfle yazılır. Sabitler, tekil kişiler veya kavramlar için kul- lanılırken, değişkenler farklı zaman noktalarında farklı kişilerin veya kav- ramların adlandırılması gerektiğinde kullanılır. Derlenmiş ve başlatılmış programa sorular yöneltilebilir. . Turbo- Prolog'da bu talep, ““Goal:-” şeklin- de iletilir. Program, örneğin “oynu- yor (Hasan, satranç).” girişini “true”” (doğru) şeklinde cevaplar. “Oynuyor (Ahmet, tenis).” girişi ise ““no solution”” ifadesiyle cevaplanır, çün- kü programdan Ahmet'in tenis oyna- dığını veya oynamadığını belirten bir şey çıkmamaktadır. Sacit'in satranç oynayıp oynamadığı sorusu da kolay- ca cevaplanamaz. Fakat üçüncü olgu ve programın sonundaki hüküm, so- nuçta “TRUE”' ifadesini doğururlar. Sorular, değişkenler de içerebilir. Ör- MİKOM BİLGİSAYAR MERKEZİ D Bilgisayar alacaksanız D Program yazdıracaksanız L| Bilgisayar öğrenecekseniz EO|) Danışmanlığa ihtiyacınız varsa MİKOM BİLGİSAYAR MERKEZİ'NE UĞRAYINIZ!.. Kayışdağı Cad No: 232 Üst Göztepe/İst. (Benzinci yarıı) neğin “oynuyor (1, satranç) sorusu, Te n — Sacit 2 solutions”” şeklinde cevaplanır. “Grupta hangi spor türleri yapılı- yor?” şeklinde bir soru sormak da mümkündür. Bu durumda, soruyu so- ran açısından kimin hangi sporu yap- makta olduğu önem taşımamaktadır. Prolog programına yöneltilen soru, anonim değişken olarak adlandırılan - simgesini içerir. Soru, oynuyor (-,S) şeklinde sorulur ve “S — futbol voleybol satranç Bumu DT şeklinde cevaplanır. Basit programlarda sonuçlar doğal olarak önceden görülebilir, ama kar- maşık programlarda durum farklıdır. Prolog'un değerlendirme stratejisi ise hep aynı kalır. Her soru bir hipotez gibi kavranır. Tüm bilgi (olgular, ilişkiler, kurallar), Prolog tarafından, bu hipotezi kanıt- lamaya yönelik bir kurallar), Prolog tarafından, bu hipotezi kanıtlamaya yönelik bir deneme ve yanılma yön- temine göre taranır. Bu tarama sıra- sında, her defasında ikişer Prolog ya- pısının, serbest değişkenlerin uygun biçimde bağlanmasıyla özdeşleştiril- mesi denenir. Bu durum, “oynuyor (I, futbol)” ifadesinde gerçekleşir, çün- kü I değişkeni Ahmet sabitine bağla- nabilmektedir; fakat ““oynuyor (Sacit, voleybol)'”' ifadesinde gerçekleşmez. Arama, çok zaman harcanmasına neden olabilen Backtracking yönte- miyle gerçekleşir. Fakat işlemlerin içinde uygun yerlere, eğer daha fazla arama gereksiz olacaksa, ! simgesiy- le kesmeler konabilir. Prolog'un dü- şünme sistemi açısından belirleyici olan, programdaki işlemlerin sırasının önem taşımamasıdır. Bu sıra istendi- ği gibi değiştirilebilir ve programın ça- lışma tarzında hiçbir değişiklik olmaz. Prolog'da göndermelerin, giriş-, çı- kış- ve diğer rutinlerin bulunması ne- deniyle, bu dil, geleneksel dillerle ça- lışan programcılar tarafından başlan- gıçta çok özel bir dil olarak algılana- caktır. Prolog'da karşılaştıkları ve alı- şık olmadıkları düşünce tarzı, bu dil- “le örneğin oyun programlamalarının imkansız olduğu kanısına kapılmala- rına neden olacaktır. Halbuki piyasa- da giderek artan sayıda bulunan Pro- Ti eR 360033 log'la yazılmış oyun programları, bu kanının yersizliğini göstermektedir. | L c FK T ÇÖMT O0ÜONEC aa