2 puan yazan GN⁺ 2024-02-22 | 1 yorum | WhatsApp'ta paylaş

Picat Programlama Dili'nin Büyülü Özellikleri

  • Picat, mantıksal programlama, komut temelli programlama ve kısıt çözümlemeyi birleştirmeyi hedefleyen bir araştırma dilidir.
  • Picat'ın planner modülü, çok ilginç programlama modellerinden biridir.

Mantıksal Programlamaya Kısa Bir Bakış

  • Komut temelli ve işlevsel programlamada, girdiyi alıp çıktı üreten algoritmalar yazılır.
  • Mantıksal programlama ve kısıt çözümlemede ise bir dizi denklem verilir ve bu ilişkileri karşılayan atamalar bulunur.

Sorunun Tanımı

  • Izgara üzerinde bir işaretçi koyup, başlangıç noktasından (orijin) hedef koordinata hareket etmeyi çözer.
  • Her adımda dört yöne birer birim hareket edilir; ızgara sınırlarının dışına çıkılamaz.
  • İşaretçi hedef koordinatta olduğunda program başarılı olur.

İlk Uygulama

  • Başlangıç durumu olarak Start, durum geçişlerini temsil eden bir dizi action işlevi ve son durumu belirleyen final(S) işlevi sağlanmalıdır.
  • best_plan(Start, Plan) çağrılır; son duruma ulaşmak için gereken en kısa adım dizisi Plan değişkenine atanır.

Birden Fazla Hedef

  • Planlayıcı, tüm hedeflere sırayla ulaşmalıdır.
  • Bir hedefe ulaşıldığında, o hedefi kuyruktan kaldıran yeni bir action eklenir.

Maliyet Minimizasyonu

  • Hedefleri sırayla ziyaret etmek her zaman toplam en kısa yolu garanti etmez.
  • Hedeflerin sırası fark etmeksizin en kısa yolu bulmak istiyorsanız, action fonksiyonunu değiştirerek planlayıcının sonraki hedefi seçmesini ve toplam yol uzunluğunu minimize etmesini sağlayabilirsiniz.

Diğer Varyasyonlar

  • Picat, planlama için birçok varyasyon sağlar.
  • best_plan(S, Limit, Plan) üst maliyeti Limit ile sınırlar.
  • sequence(P, Action), mevcut kısmi plana göre mümkün eylemleri sınırlar.

Picat Kullanımı

  • Picat bir araştırma dili olduğu için güçlü belgeleme veya net hata mesajları gibi kolaylıklarda eksik kalır.
  • Picat, belirli hesaplama sorunlarını çözmeye yarayan bir "araç" dili olarak daha faydalıdır.

Ek: Diğer Planlama Dilleri

  • Planlama, robotik ve yapay zeka için geliştirilmiş olsa da, çoğunlukla video oyunu yapay zekasında "Goal-Oriented Action Planning" (GOAP) olarak kullanılır.
  • PDDL, bağımsız bir planlayıcının girdi olarak kullandığı bir planlama tanımlama dilidir.

GN⁺'ın Görüşü

  • Programlama Modelindeki Yenilik: Picat'ın planner modülü, programlamaya yeni bir boyut ekliyor. Özellikle karmaşık yol bulma gibi problemleri çözerken oldukça güçlüdür.
  • Eğitsel Değer: Picat, programlama dillerinin eğitimsel yönü açısından önemli bir araçtır. Bu, mantıksal programlama ve kısıt çözümleme kavramlarını öğrenmeye yardımcı olabilir.
  • Belirli Problem Çözümü: Picat, belirli hesaplama sorunlarını çözmek için bir araç dili olarak değerlidir. Bu da genel programlama dilleriyle çözümü zor olan sorunlara yeni bir bakış açısı sunar.

1 yorum

 
GN⁺ 2024-02-22
Hacker News yorumları
  • Picat'in planlama modunun gerçek işte nasıl kullanıldığına dair örnekler

    • Cihaz bakımı için bir sistem prototipinin geliştirilmesi
    • Sisteme 'nasıl' değil 'ne' istediğini söylemek
    • Picat ile en uygun planlar üretildi ancak geniş ölçekte ölçeklendirirken sorunlar çıktı
    • Planlama EXPTIME sınıfında olduğu için beklenen şekilde ölçeklenebilirlik sınırlıydı
    • Heuristik tanımları, Naive Bayes sınıflandırıcıları ve simetri kısıtları kullanılsa da yine de çok fazla manuel yönetim gerekiyordu
    • Klasik GOFAI problem alanlarında hâlâ bir AI kışı durumu var
  • Picat kaynağı ve örnek sağlayıcı bilgisi

    • Kısıt programlama topluluğunun aktif bir üyesi olan Hakan Kjellerstrand'ın sitesinde Picat materyalleri ve örnekler sunuluyor
  • Prolog ve MiniZinc önerisi

    • Prolog, anlaşılması kolay ve olgun bir dil olarak kısıt çözümleme yeteneği sunar
    • MiniZinc, farklı amaçlara özel çözücülere erişim sağlayan bir arayüzdür
    • Prolog'te yüksek performans almak için ciddi bir anlayış gerekir
    • Picat ile yazdıktan sonra başka dillerde de rahatça yazılıp yazılamayacağının değerlendirilmesi önerilir
  • Firebase teknik mülakatıyla ilgili yorumlar

    • Firebase teknik mülakatının Picat gibi bir araçla daha kolay geçileceği düşünülmüş
    • Predrag'ın inceleyen kişi olarak çıkmasına duyulan memnuniyet
  • Tip sistemi ve programlama dili karşılaştırması

    • TypeScript'teki tip sistemine benzer, ancak doğrudan kendiniz çözmek zorundasınız
    • TypeScript, kısıt koşullarını ifade etmek için yeterince güçlü değil
    • Planlayıcı tarzı programlamanın sadeliği ve kolaylığı vurgulanıyor
  • GOAP (Goal-Oriented Action Planning) ile ilgili bahsedilenler

    • F.E.A.R. oyunundaki düşman yapay zekâsında kullanılarak eğlenceyi artıran GOAP
    • Jeff Orkin'in GOAP hakkındaki makalesi okunabilir ve eğlenceli bulunmuş
  • Picat'in planlayıcı özelliğine dair değerlendirme

    • Prolog benzeri ancak planlayıcı özelliği eklenmiş bir Picat
    • Planlayıcı fonksiyon ile problemler kolayca çözülebilir, ancak performansın komutlu (imperative) programlamayla karşılaştırılması gerekir
  • Bilgisayara nihai durumu söyleyip çözüm buldurma hayali

    • Kod üretimi ve durum geçişi için A* algoritmasının kullanılması
    • Planlama topluluğu veya çözücü deneyimi az olsa da, ortools ile denemeler yapıldı
    • Programlamayı lojistiğe benzeterek ve 'sliding puzzle' ile karşılaştırarak anlatma
  • Prolog benzeri sözdizimi üzerine ek bir yorum

    • Prolog'e benzer sözdizimi kullanıldığına dair, 'comma first' yerine true. ile bitirmenin daha zarif bir çözüm olduğu belirtilmiş

Bu özet, farklı kişilerin görüşlerini yansıtır ve her bir bakış açısını tarafsız şekilde aktarır. Programlama diliyle ilgili teknik konular, yeni başlayan bir yazılım mühendisi de anlayabilsin diye kısa ve sade anlatılmıştır.