Ana Sayfa

Prolog'a Yönelik Eleştiriler: Neden Favori Dilim Değil?

1 dk okuma

Hillel Wayne, "Logic for Programmers" kitabının bir sonraki sürümü için Answer Set Programming ve Logic Constraint Programming bölümlerini eklerken, Prolog ile ilgili geçmişte yaşadığı bazı zorlukları yeniden deneyimlediğini belirtiyor. Yazar, Prolog'un bazı temel eksikliklerini dile getiriyor. Bu eksiklikler arasında standartlaştırılmış string (dize) türlerinin olmaması öne çıkıyor. ISO standartlarına göre stringler sadece atomlar veya tek karakterli atom listeleri olarak kabul ediliyor. Çeşitli Prolog uygulamaları özel string operatörleri sunsa da, bunlar çapraz uyumlu değil; bu da SWI-Prolog'da yazılan string kodunun Scryer Prolog'da çalışmamasına neden oluyor.

İkinci olarak, dilde fonksiyonların bulunmaması, tüm kod mantığının true veya false döndüren kurallar (predicates) aracılığıyla ifade edilmesini gerektiriyor. Bu durum, listelerin uzunluğunu almak gibi basit işlemlerde bile birden fazla ifade yazmayı zorunlu kılıyor. Yazar, Prolog'un çift yönlülük (bidirectionality) özelliğinin harika olduğunu kabul etse de, Picat gibi dillerin fonksiyonları destekleyerek bu sorunu çözdüğünü ve çift yönlülüğü koruduğunu belirtiyor. Bu durum, Picat'ı mantık programlama ihtiyaçları için daha cazip kılıyor.

Son olarak, Prolog'da listeler dışında standartlaştırılmış koleksiyon türlerinin eksikliği dikkat çekiyor. Anahtar-değer eşlemeleri (key-value maps) veya yapı (struct) türleri gibi modern veri yapıları bulunmuyor; sadece bağlı listeler ve bileşik terimler (compound terms) mevcut. Ayrıca, true ve false değerlerinin kontrol akışı ifadeleri olarak kullanılması ve doğrudan depolanamaması, bazı durumlarda mantıksal ifadelerin karmaşıklaşmasına yol açıyor. Yazar, bu eksikliklerin görevleri imkansız hale getirmese de, programlamayı daha zahmetli hale getirdiğini ve Picat gibi alternatiflerin bu sorunların çoğunu giderdiğini vurguluyor.

İçgörü

Prolog'un bazı temel tasarım eksiklikleri, modern programlama dillerinde beklenen esnekliği ve kullanım kolaylığını sunmakta zorlanmasına neden oluyor.

Kaynak