Saya belajar Prolog bertahun-tahun lalu di Universitas. Selama kehidupan profesional saya, saya tidak pernah perlu menggunakan Prolog. Apakah saya melewatkan sesuatu yang istimewa?
Sejauh yang saya ingat Prolog membutuhkan pola pikir yang sangat berbeda dibandingkan dengan bahasa pemrograman terkemuka.
Apakah Prolog benar-benar pernah digunakan untuk mengimplementasikan sesuatu yang bermanfaat secara profesional?
programming-languages
prolog
Gursel Koca
sumber
sumber
Jawaban:
Dalam pandangan saya, mempelajari dasar-dasar Prolog sangat bermanfaat, terlepas dari apakah Anda akan pernah menggunakannya di dunia nyata. Ini juga sangat bermanfaat untuk memahami ide-ide dasar yang mendasari penyatuan, dan bagaimana implementasi (sepele dan tidak efisien) dapat ditangani.
Jika Anda memiliki masalah yang sebaiknya diselesaikan dengan menggunakan logika deklaratif, idealnya Anda harus mengenalinya dan tahu (jika Anda punya pilihan) untuk menggunakan alat yang tepat untuk pekerjaan itu.
Namun, saya setuju bahwa Prolog membutuhkan pola pikir yang sangat berbeda dari bahasa imperatif konvensional, dan juga pola pikir yang sangat berbeda dari bahasa fungsional. Di luar titik tertentu, tampaknya membutuhkan banyak pengalaman (seperti halnya dengan apa pun), dan bahkan ada banyak "buku teks" pengetahuan yang membuat otak saya menggiring bola keluar dari telinga saya.
Kesan saya adalah ... kita mungkin sama-sama kehilangan sesuatu yang istimewa untuk gelar, tetapi tidak praktis untuk mendedikasikan waktu untuk mempelajari bahkan pengetahuan tingkat buku yang cukup lengkap untuk Prolog, apalagi mencoba mengembangkan pengalaman dunia nyata , kecuali Anda sedang mempertimbangkan kemungkinan karier pemrograman logika.
Saya baru-baru ini membaca buku tentang AI dan sistem pakar yang diterbitkan pada tahun 1989 - penemuan yang beruntung di toko buku bekas. Secara signifikan, ini adalah tutorial khusus tentang Lisp dan Prolog. Benar, sebagian besar yang dibahas belum cukup mengesankan untuk sementara waktu (pencarian, heuristik dll), tetapi masih sangat menarik, dan IMO merupakan hal yang berharga untuk berinvestasi sedikit waktu.
Buku-buku yang lebih baru yang secara khusus menggambarkan Prolog akan lebih baik untuk mempelajari bahasa, tetapi risikonya adalah bahwa otak Anda akan menggiring keluar dari telinga Anda di suatu tempat dalam materi menengah ke lanjutan.
sumber
Ini bukan saya, tetapi dengan asumsi pertanyaannya adalah "apakah ada yang mengimplementasikan sesuatu yang serius dengan prolog?" ini mungkin diperhitungkan:
http://asmarterplanet.com/blog/2011/02/the-watson-research-team-answers-your-questions.html
sumber
Saya tahu pemrogram AI menggunakannya ..... karena saya melakukan kursus Prolog di kelas AI saya tetapi selain itu saya belum melihat banyak hal yang dikatakan tentang hal itu. di sini adalah pertanyaan serupa dengan jawaban lotsa! /programming/130097/real-world-prolog-usage
sumber
Prolog sangat bagus untuk pembuatan prototipe cepat. Misalnya, di http://www.cri.ensmp.fr/classement/doc/A-381.pdf SSA-transform untuk GCC pertama kali diterapkan di Prolog, dan kemudian di C.
Saya menggunakan Prolog di dalam kompiler untuk implementasi sistem tipe yang cepat dan kotor, optimisasi tertentu dan pemeriksaan semantik, dan saya menulis ulang bahwa kode Prolog menjadi sesuatu yang penting hanya jika kinerjanya tidak dapat diterima.
sumber
Anda menjawab dengan cukup cepat, tetapi saya menggunakan Prolog pada pertengahan tahun 90-an untuk merancang kalkulator tingkat asuransi yang akan menentukan bagi kita segmen pelanggan tertentu (risiko baca) yang sesuai dengan tingkat premi. Ini adalah sesuatu yang Anda tidak perlu melihat sehari-hari, tetapi pasti telah mempengaruhi premi P&C Anda selama bertahun-tahun.
sumber
Menurut (FAQ ini) 1 Bagian dari Watson, mesin IBM yang memainkan Jeopardy, ditulis dalam prolog. (lihat pertanyaan # 6)
sumber
Saya telah menggunakan Prolog secara profesional pada beberapa kesempatan (penting) sistem pakar diagnostik; Transformasi HTML; set keanggotaan). Saya memiliki kasih sayang yang mendalam terhadap bahasa, jadi, ya, ada bias di sini tapi mudah untuk bersikap objektif tentang kapan Prolog (lebih / sama) cocok - Anda benar-benar perlu memproses struktur rekursif ; contoh terbaik yang bisa saya berikan adalah tabel basis data relasional tetapi ada banyak contoh lain yang tak terhitung (mungkin lebih mudah untuk menyebutkan contoh-contoh balasan seperti input pengguna acak atau (sebagian besar) fungsi matematika (namun, banyak fungsi matematika memiliki struktur rekursif dan karenanya sangat tepat (transformasi fourier cepat diskrit, misalnya)).
Tetapi, tentu saja, sangat sedikit 'sistem end-to-end' dapat didefinisikan semata-mata dalam hal pemrosesan struktur rekursif, (pengecualian: pembuktian teorema - tetapi ini adalah latihan yang agak akademis *) sehingga sangat beruntung bahwa proses prolog dapat dicangkokkan ke 'proses imperatif yang lebih standar' menggunakan semua jenis teknik yang berbeda (hampir tidak masalah apa pun kecuali antarmuka layanan web yang umumnya cocok); sehingga Anda dapat berurusan dengan UI, dan pemrosesan peristiwa acak, dll, dan kemudian serahkan bila perlu (untuk melakukan kueri basis data yang kompleks atau sejumlah hal yang mungkin ingin Anda lakukan dengan struktur rekursif Anda). Saya menemukan ini bekerja dengan indah - lebih baik daripada, misalnya, LINQ.
Jadi, ambil struktur rekursif Anda dengan bit-bit sensitif dan tuliskan Prolog yang indah, bersih, elegan, dan dapat dirawat! :)
PS ketika saya tidak menggunakan Prolog, saya kembali ke C #
sumber
Cobalah menulis pemecah sudoku dalam bahasa favorit Anda, lalu periksa bagaimana hal itu dilakukan dalam Prolog. Secara umum setiap masalah CLP cocok dengan bahasa deklaratif seperti Prolog.
Ini juga digunakan secara luas dalam verifikasi formal perangkat keras dan perangkat lunak (secara akademis dan mungkin secara profesional tetapi saya tidak memiliki referensi ke perusahaan).
Akhirnya, Erlang sangat dipengaruhi oleh Prolog, dengan toleransi kesalahan dan konkurensi dalam pikiran.
sumber
Perangkat lunak yang membaca dan menyortir banyak surat di AS dan beberapa negara lain ditulis dalam Prolog, menggunakan kompiler yang sangat optimal. Sintaks alamat surat ditulis dalam tata bahasa klausa yang pasti, yang membuat perawatan mudah dan menyederhanakan mengadaptasi pembaca ke konvensi berbagai negara dan pengguna industri. Layanan pos seringkali memiliki serangkaian aturan rumit tentang hal-hal seperti alamat penerusan, kotak pos vs. alamat jalan, dll., Dan aturan ini juga dirumuskan dalam Prolog untuk perawatan yang mudah.
sumber