BlooP-FlooP-GlooP
Gödel, Escher, Bach kitabında yer alan üç hayali programlama dilidir. Kısaca şu özelliklere sahiptirler:
Bloop: Değer atama, toplama, çarpma, eşit mi?, büyük veya küçük mü? Kısaca =, +, *, ==, < veya > işlemlerini yapabilir. Döngüler sınırlıdır ve kendi içerisinde yinelemeye izin vermez. (Bounded Loop)
Örneğin:
2^3 ün değerini bulmak isterseniz Bloop programında şu pirimitif (temel) fonksiyonu tanımlayabilirsiniz:
function İKİ-ÜSSÜ-ÜÇ sum = 0 for (i=1 iken i < 3 ise i++) toplam = toplam + 2*2 endend
Floop ise Bloop’a ek olarak unbounded(bağsız) (yani Free loop = Floop) döngülere sahip olabilir. Bu durumda dil Turing-complete olacaktır. Floop’un unbounded loop’lara sahip olması onu hem daha güçlü hem de eksik yapar. (Gödel’in Eksiklik Teoremi) Kitapta şöyle der: “Bir Floop programının sonsuz bir döngüye girmesi durumunda onun bir sonucunun olmadığının değil sonucun erişilmez olduğunun anlaşılması garip bir ironidir.”
Şöyle bir kod bloğu olduğunu düşünelim:
while true if(deger == en büyük asal sayıya) return "Asla dönmeyecek olan sonuç" //Çünkü en büyük asal sayıyı bulmak bizi sonsuz bir döngünün içine sokacaktır break else ++deger;end
Günümüzde kullandığımız diller bu sınıfa girer.
Gloop ise tamamen hayal ürünü bir Floop-üstü programlama dilidir. Floop’un eksikliğinin giderildiği, örneğin halting problemi olmayan bir dil olarak düşünülebilir. Tüm eksikliklere karşı önlemleri alınmış bir meta dil.
Bkz: Gödel Escher Bach