2 poin oleh GN⁺ 2024-02-22 | 1 komentar | Bagikan ke WhatsApp

Fitur seperti sihir pada bahasa pemrograman Picat

  • Picat adalah bahasa riset yang mencoba menggabungkan pemrograman logika, pemrograman imperatif, dan penyelesaian kendala.
  • Modul planner Picat adalah salah satu model pemrograman yang sangat menarik.

Penjelasan singkat tentang pemrograman logika

  • Dalam pemrograman imperatif dan fungsional, kita menulis algoritma yang menerima masukan lalu menghasilkan keluaran.
  • Dalam pemrograman logika dan penyelesaian kendala, kita memberikan deretan persamaan dan mencari penugasan yang memenuhi relasi-relasi tersebut.

Definisi masalah

  • Masalahnya adalah meletakkan penanda pada grid dan menggerakkan dari titik awal (titik asal) ke koordinat target.
  • Pada setiap langkah, kita dapat berpindah satu sel ke empat arah, tetapi tidak boleh keluar dari batas grid.
  • Program berhasil ketika penanda berada di koordinat target.

Implementasi pertama

  • Harus menyediakan state awal Start, deretan fungsi action yang menunjukkan transisi status, dan fungsi final(S) yang menentukan state akhir.
  • Memanggil best_plan(Start, Plan) menetapkan urutan langkah terpendek yang diperlukan untuk mencapai state akhir ke dalam Plan.

Menambahkan beberapa tujuan

  • Planner harus mencapai semua tujuan secara berurutan.
  • Tambahkan action baru untuk menghapus target tersebut dari antrean ketika targetnya telah tercapai.

Meminimalkan biaya

  • Mengunjungi target secara berurutan tidak selalu berarti jalur total terpendek.
  • Jika ingin menemukan jalur terpendek tanpa memperhatikan urutan target, kita dapat memodifikasi action agar planner memilih target berikutnya sehingga total panjang jalur diminimalkan.

Variasi lain

  • Picat mendukung banyak variasi untuk perencanaan.
  • best_plan(S, Limit, Plan) membatasi biaya maksimum ke Limit.
  • sequence(P, Action) membatasi aksi yang memungkinkan berdasarkan rencana parsial saat ini.

Penggunaan Picat

  • Picat adalah bahasa riset dan kurangnya beberapa kenyamanan seperti dokumentasi yang baik atau pesan kesalahan yang jelas.
  • Picat lebih berguna sebagai bahasa "alat" yang dipelajari untuk menyelesaikan masalah komputasi tertentu.

Lampiran: bahasa perencanaan lain

  • "Perencanaan" dikembangkan untuk robotika dan AI, tetapi lebih banyak digunakan dalam AI game sebagai "Goal-Oriented Action Planning" (GOAP).
  • PDDL adalah bahasa deskripsi perencanaan yang digunakan sebagai input oleh planner independen.

Opini GN⁺

  • Inovasi model pemrograman: Modul planner Picat menambahkan dimensi baru dalam pemrograman. Ini sangat kuat, terutama untuk menyelesaikan masalah seperti pencarian jalur kompleks.
  • Nilai pendidikan: Picat penting dari sisi edukasi bahasa pemrograman. Ini dapat membantu mempelajari konsep pemrograman logika dan penyelesaian kendala.
  • Penyelesaian masalah spesifik: Picat bernilai sebagai bahasa "alat" untuk menyelesaikan masalah komputasi tertentu. Ini memberi pendekatan baru untuk masalah yang sulit diselesaikan dengan bahasa pemrograman umum.

1 komentar

 
GN⁺ 2024-02-22
Komentar Hacker News
  • Kasus penggunaan mode perencanaan Picat secara nyata di lingkungan kerja

    • Pengembangan prototipe sistem untuk pemeliharaan perangkat
    • Sistem diberi instruksi apa yang diinginkan, bukan bagaimana melakukannya
    • Merancang rencana optimal dengan Picat, tetapi muncul masalah saat melakukan penskalaan ke skala besar
    • Karena perencanaan bersifat EXPTIME, keterbatasan skalabilitas memang terjadi seperti yang diharapkan
    • Menggunakan definisi heuristik, klasifier Naive Bayes, dan kendala simetri, namun tetap dibutuhkan banyak pengelolaan
    • Untuk ranah masalah klasik GOFAI, tetap berada dalam kondisi "musim dingin AI"
  • Informasi penyedia sumber daya dan contoh Picat

    • Materi dan contoh Picat disediakan di situs web Hakan Kjellerstrand, anggota aktif komunitas pemrograman kendala
  • Rekomendasi Prolog dan MiniZinc

    • Prolog menyediakan fitur penyelesaian kendala dengan bahasa yang matang dan mudah dipahami
    • MiniZinc menyediakan antarmuka untuk mengakses berbagai solver khusus tujuan
    • Prolog membutuhkan pemahaman yang cukup besar untuk meningkatkan performa
    • Disarankan untuk mempertimbangkan apakah solusi yang ditulis dalam Picat juga mudah ditulis dalam bahasa lain
  • Komentar terkait wawancara teknis Firebase

    • Wawancara teknis Firebase akan lebih mudah jika memakai alat seperti Picat
    • Senang melihat Predrag hadir sebagai reviewer
  • Perbandingan sistem tipe dan bahasa pemrograman

    • Mirip dengan sistem tipe di TypeScript, tetapi harus diselesaikan langsung
    • TypeScript tidak cukup kuat untuk mengekspresikan kendala
    • Menekankan kesederhanaan dan kemudahan gaya pemrograman berorientasi perencana
  • Penyebutan GOAP (Goal-Oriented Action Planning)

    • GOAP yang dipakai pada AI musuh game F.E.A.R., menambah keseruan permainan
    • Makalah Jeff Orkin tentang GOAP dianggap mudah dibaca dan seru
  • Penilaian fitur planner di Picat

    • Picat mirip Prolog, tetapi dengan fitur perencana tambahan
    • Fitur planner membuat beberapa masalah lebih sederhana untuk diselesaikan, tetapi performanya perlu dibandingkan dengan pemrograman imperatif
  • Mimpi memberi komputer status akhir dan membiarkannya menyelesaikannya

    • Menggunakan algoritme A* untuk membuat kode dan transisi status
    • Tidak punya banyak pengalaman dengan komunitas planner atau solver, namun bereksperimen dengan ortools
    • Mengenali pemrograman sebagai logistik, dengan analogi "sliding puzzle"
  • Komentar tambahan tentang sintaks mirip Prolog

    • Menggunakan sintaks yang mirip Prolog, dan mengakhiri dengan true. dibandingkan 'comma first' dianggap sebagai solusi yang lebih elegan

Ringkasan ini mencerminkan berbagai opini pribadi dan menyampaikan setiap sudut pandang secara netral. Bagian teknis terkait bahasa pemrograman dijelaskan secara singkat agar bisa dipahami oleh insinyur perangkat lunak tingkat pemula.