• açılış konuşması, tava getirme haykırışı, "öndeyiş", anlatıma giriş, başlangıç veya bitiş...
  • bunun interpreterı yazdığım onca koddan sonra bana 'no' diyor ya kalbim kırılıyor arkadaş. birine o kadar dil dökersin hayır der ya işte öyle bir his benimkisi de.
  • bu dili öğrenirken yapılan en büyük yanlışlardan biri, "yea bunda ne var, başlıyorum şimdi kodlamaya" diye atılmak. teorisini bilmeyeni direk harcar, akıllı olmak lazım. teorisini bilince interpreter'ini yazmak bile çok zor değil.

    prolog'un olayı resolution. bu yüzden "ulaşmak istediğimi nasıl ifade etmeliyim ki, bildiğim kurallara bağlı olarak ifade edilsin, doğru olsun ve (tanımladığım) en temel kurallardan çıkarılabilsin" düşüncesine uyarak yazmak gerekiyor. bu da insana kısıtlılık hissi veriyor, bir de dil/platform reflection gibi modern özellikler desteklemeyince, kuraları listeye atıp list processing yapma işi can sıkıcı olabiliyor. bu kısıtlamaya karşın, yazdığınız kurallara uyan tüm olasılıkları listeleyebilmek gibi bir güzelliğe kavuşuyorsunuz.

    kısıtlama demişken, standart prolog'da

    a veya b doğrudur.

    diye bir kural yazılamaz. sebebi de dilde kısıtlamaya giderek eksponansiyel çözümleme sürecini lineer zamana indirebilmek. bunun yerine, a doğru nokta. b doğru nokta. diye iki farklı kural yazılabilir ama bu aynı şey demek değil tabii. dildeki kısıtlama proposition'ların horn clause şeklinde yazılabilmesine olanak sağlıyor, horn clause üzerinde inference da hızlıca yapılabiliyor.

    query verildiğinde cevaplamak için ise search tekniği, depth-first backward-chaining. bunu yaparken de sorulan sorunun aksinin yanlış olduğunu göstermeye çalışır. sonsuz döngüye soktunuz mu sokmadınız mı diye de kontrol edilmez. ayrıca dil yapısı yüzünden "bak şimdi bir şey anlatıyorm dinliyor msn" derken sonsuz döngüye sokmak da zor değildir. prolog bu yüzden her soruya cevap veremez ama cevap verebilen logic programming dalı da vardır (bkz: answer set programming)

    en güzeli de tam bir şeyler yazdım, kuş mu çıkacak, ne çıkacak derken (hata olduğunda) nazlı gibi cevap vermesi:

    -dunyayi_yoket(x).
    -no.
    -no ne mına koyim, ne no?

    prolog sentaksı ile bir çok başka dilde de karşılaşılabilir, örneğin erlang veya bir multi-agent programming dili olan agentspeak. bu dil paradigmasının bir üst sınıfı ise (bkz: constraint logic programming)
  • super dil. soyle bir fonksiyon yaziyorsunuz ornegin, listenin uzunlugunu versin diye:

    len([], 0).
    len([_|t], n) :-
    len(t, m),
    n is m+1.

    sonra gidip komut satirinda diyorsunuz ki prolog'a
    len(x, y).
    (x ve y buyuk olmali, degisken olduklari icin)

    o da size artik ne tutarsa hesabi, al sana liste, al sana uzunlugu diye sallaya sallaya yanit veriyor.

    x = []
    y = 0 ? ;

    x = [_]
    y = 1 ? ;

    x = [_,_]
    y = 2 ? ;

    x = [_,_,_]
    y = 3 ? ;

    x = [_,_,_,_]
    y = 4 ? ;

    x = [_,_,_,_,_]
    y = 5 ?

    valla yok boyle bir dil.
    (bkz: kendi calip kendi oynamak)
  • profesyonel işler için pek bir işe yaramayan; bulmaca çözmek, zihin egzersizi yapmak için kullanılanılması caiz bir programlama dili. borland'ın turbo prolog'u sayesinde bayağı popüler olmuştu. her bir şey recursion, backtracking gibi metotlar ile yapılır, çok düşünüp az kod yazılır. lisp'e benzer bir dildir, geleneksel programlama dillerini bilenler buna hiç bilmeyenden daha zor intibak ederler; öyle acayip bir şeydir. aşağıdaki kod bir sonsuz döngü yaratır, sonsuz dediysek stack şişip patlayana kadar tabii:

    repeat.
    repeat:-repeat.
  • prologos kelimesinden gelmektedir. aristotelesin tragedyanın bölümlerinden birincisi diye adlandırdığı bölümdür.. bu bölümde bir ya da iki kişi tarafından tragedyaya konu olan olayın öncesi anlatılır..
  • rekürsif mantık en zor anlanabilen yazılım mantığı olduğu için tamamen bu mantığa dayalı bu prolog adlı şeyi kavramak bir çin işkencesidir. yıllarca iteratif algoritmalar gerçekleyen bir insan evladının bu zımbırtıyı anlaması doğal olarak kastırır.

    bununla yazılmış şeyler "bir program yazıldığından çok okunur" gerçeğine ters tepki yapar.
  • bunu anlatırlarken ilk örnek hep anne baba çocuk örneğidir.yani o onun annesi ise su bunun babasıdır, diğeri onun kardeşi olur falan filan. ailevi ilişkileri temsil etmek için birebir olmalı bu hede.

    father(x,y) :- parent(x,y), male(x).
    mother(x,y) :- parent(x,y), female(x).
    parent(x,y) :- father(x,y).
    parent(x,y) :- mother(x,y). *

    gibi.
  • turing-complete naçizane bir dildir kendisi, yani ne diyor bu cümle, diyor ki, ey yolcu, c'de ne yapabiliyorsan, aynısını prologda da yapabilirsin haberin olsun.

    bu arada genel kanı üzerine yorum, prolog sadece yes/no cevabı vermeye yetkin bir dil değildir. örneğin prime diye bir fonksiyonumuz olsun ve sayımız asal mı onu söylesin, prime(19). diyince yes alacağımız ortada, ama asıl güzellik şuradan gelir:

    ?-prime(p).

    p = 2;
    p = 3;
    p = 5;
    p = 7;
    p = 11;
    p = 13

    yes.
    ?-
  • peyami safa'nın yalnızız adlı romanının müthiş giriş bölümü.
    ancak, yazar ilk baskının ardından bu bölümün kaldırılmasını istemiştir.
    milli eğitim bakanlığı yayınları bu isteği iplememiş... sanırım ötüken yayınları prologu romandan çıkarmıştır.
    ilk baskısını ise nebioğlu yayınevi yapmıştır.
hesabın var mı? giriş yap