it-swarm-id.com

Apakah Prolog bermanfaat secara profesional?

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 digunakan untuk mengimplementasikan sesuatu yang bermanfaat secara profesional?

15
Gursel Koca

Dalam pandangan saya, mempelajari dasar-dasar Prolog sangat bermanfaat, terlepas dari apakah Anda akan pernah menggunakannya di dunia nyata. 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 keduanya kehilangan sesuatu yang istimewa untuk gelar, tetapi tidak praktis untuk mendedikasikan waktu untuk belajar 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 spesifik 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.

12
Steve314

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 dalam sebagian besar Java tetapi juga potongan kode yang signifikan ditulis C++ dan Prolog, semua komponen dikerahkan dan diintegrasikan menggunakan UIMA.

10
Kate Gregory

Saya tahu A.I. programmer menggunakannya ..... karena saya melakukan kursus Prolog di A.I. kelas tapi selain itu saya belum melihat banyak yang mengatakan tentang hal itu. di sini adalah pertanyaan serupa dengan jawaban lotsa! https://stackoverflow.com/questions/130097/real-world-prolog-usage

7
user6791

Prolog sangat bagus untuk pembuatan prototipe cepat. Misalnya, dalam http://www.cri.ensmp.fr/classement/doc/A-381.pdf SSA-transform untuk GCC pertama kali diimplementasikan dalam 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.

6
SK-logic

Anda menjawab dengan cukup cepat, tetapi saya menggunakan Prolog pada pertengahan 90-an untuk merancang kalkulator tingkat asuransi yang akan menentukan bagi kita segmen pelanggan tertentu (risiko baca) yang akan 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
Jé Queue

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

2
GSto

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 tetapi mudah untuk bersikap objektif tentang kapan Prolog (lebih/sama) cocok - Anda benar-benar perlu memproses struktur rekursif; contoh terbaik yang dapat 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 (misalnya, transformasi fourier cepat diskrit)).

Tetapi, tentu saja, sangat sedikit 'sistem end-to-end' dapat didefinisikan hanya 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 Nice 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.

1
sakisk

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.

0