Apakah Prolog bermanfaat secara profesional?


15

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?


3
Prolog (dan poplog) sangat baik untuk pengkodean AI. Jika Anda tidak melakukan hal-hal terkait AI secara profesional / serius, Anda mungkin tidak menggunakannya sama sekali. Seperti bagaimana non-insinyur mungkin tidak pernah menggunakan MATLAB dengan serius.
glasnt

1
Pertanyaan bagus. Prolog adalah bahasa pemrograman pertama yang diajarkan dalam linguistik komputasional di Uni Potsdam, tetapi setelah itu kami tidak terlalu menggunakannya, bahkan jika kami cukup ahli dalam hal itu. Kasihannya. Setiap kali saya melihat pertanyaan seperti "Bagaimana cara saya menggunakan akumulator" atau "Bagaimana cara saya mendapatkan semua jawaban yang mungkin" di StackOverflow, itu membuat saya bertanya-tanya di mana pengguna profesional yang sebenarnya berada - sebagian besar barang tampak seperti pekerjaan rumah. Atau mungkin kemahiran Prolog mengubah Anda menjadi robot yang tidak pernah memiliki pertanyaan.
Felix Dombek

Saya pernah mendengar tentang sistem untuk deteksi kesalahan yang ditulis dalam Prolog dan diterapkan di suatu tempat di Austria (Klagenfurt?) Menurut apa yang dikatakan kepada saya, produknya cukup bagus dan dijual kepada pelanggan. Jika Anda menganggap ini "berguna secara profesional" maka jawabannya adalah "ya".
Giorgio

Jawaban:


12

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.


AI / pemula prolog di sini. Sumber daya online apa pun yang Anda rekomendasikan?
yati sagade

@yati - Cobalah amzi.com/AdventureInProlog/advtop.php - Saya pernah berlari melalui tutorial di situs Amzi yang tampak OK sejauh yang saya ingat, tapi itu sangat lama. Yang saya lihat baru-baru ini (mungkin 5 tahun terakhir) untuk Prolog adalah buku AI yang saya sebutkan dalam jawaban ini. Anda harus mencari / mengajukan pertanyaan di sini daripada mengirim komentar, terutama komentar yang ditambahkan ke jawaban yang ditulis oleh seseorang yang pada dasarnya adalah pemula jangka panjang. Sesuatu yang Prolog jarang saya temui dan sangat sedikit mendalam - atau saya akan berhenti menjadi seorang pemula satu dekade atau lebih yang lalu.
Steve314

10

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

Watson ditenagai oleh 10 rak server IBM Power 750 yang menjalankan Linux, dan menggunakan 15 terabyte RAM, 2.880 core prosesor dan mampu beroperasi pada 80 teraflops. Watson ditulis di sebagian besar Jawa tetapi juga potongan kode yang signifikan ditulis C ++ dan Prolog, semua komponen dikerahkan dan diintegrasikan menggunakan UIMA.



6

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.


2

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.


2

Menurut (FAQ ini) 1 Bagian dari Watson, mesin IBM yang memainkan Jeopardy, ditulis dalam prolog. (lihat pertanyaan # 6)


1

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 #

  • Meskipun, saya merindukan hari ketika, setidaknya beberapa aspek, program komersial terbukti benar sebagai praktik standar.

1

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.


0

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.