Saya telah belajar Lisp untuk memperluas wawasan saya karena saya telah mendengar bahwa itu digunakan dalam pemrograman AI. Setelah melakukan beberapa penjelajahan, saya belum menemukan contoh AI atau apa pun dalam bahasa yang akan membuatnya lebih cenderung ke sana.
Apakah Lisp digunakan di masa lalu karena itu tersedia, atau ada sesuatu yang saya lewatkan?
lisp
artificial-intelligence
Cristián Romo
sumber
sumber
Jawaban:
Lisp digunakan di AI sampai akhir 1980-an. Namun, pada tahun 80-an, Common Lisp dijual ke dunia bisnis sebagai "bahasa AI"; reaksi memaksa sebagian besar programmer AI ke C ++ selama beberapa tahun. Saat ini, prototipe biasanya ditulis dalam bahasa dinamis yang lebih muda (Perl, Python, Ruby, dll) dan implementasi penelitian yang sukses biasanya dalam C atau C ++ (kadang-kadang Java).
Jika Anda ingin tahu tentang 70-an ... well, saya tidak ada di sana. Tapi saya pikir Lisp berhasil dalam penelitian AI karena tiga alasan (dalam urutan kepentingan):
Saya tidak memiliki buku AI lama Peter Norvig , tetapi ini seharusnya menjadi cara yang baik untuk belajar memprogram algoritma AI dalam Lisp.
Penafian: Saya seorang mahasiswa pascasarjana di bidang linguistik komputasi. Saya tahu subbidang pengolahan bahasa alami jauh lebih baik daripada bidang lainnya. Mungkin Lisp lebih banyak digunakan di subbidang lain.
sumber
Artificial Intelligence by Patrick Henry Winston
. Pada edisi ke 2 bab pemrograman buku itu bercabang menjadi buku mereka sendiri, yang disinkronkan, -Lisp
. Seperti namanya, pemrograman sepenuhnya dalamLisp
. people.csail.mit.edu/phw/Books/LISPBACK.HTMLLisp digunakan untuk AI karena mendukung implementasi perangkat lunak yang menghitung dengan simbol dengan sangat baik. Simbol, ekspresi simbolis dan komputasi dengan mereka adalah inti dari Lisp.
Area AI khusus untuk komputasi dengan simbol adalah: aljabar komputer, pembuktian teorema, sistem perencanaan, diagnosis, sistem penulisan ulang, representasi dan penalaran pengetahuan, bahasa logika, terjemahan mesin, sistem pakar, dan banyak lagi.
Maka tidak mengherankan bahwa banyak aplikasi AI terkenal di domain ini ditulis dalam Lisp:
Ada ribuan aplikasi di area ini yang ditulis dalam Lisp. Sangat umum bagi mereka adalah bahwa mereka membutuhkan kemampuan khusus di bidang pemrosesan simbolik. Satu mengimplementasikan bahasa khusus yang memiliki juru bahasa / kompiler khusus dalam domain-domain ini di atas Lisp. Lisp memungkinkan seseorang untuk membuat representasi untuk data dan program simbolik dan dapat mengimplementasikan semua jenis mesin untuk memanipulasi ekspresi ini (rumus matematika, rumus logika, rencana, ...).
(Perhatikan bahwa banyak bahasa pemrograman tujuan umum lainnya digunakan dalam AI juga. Saya telah mencoba untuk menjawab mengapa khususnya Lisp digunakan dalam AI.)
sumber
Salah satu alasannya adalah ia memungkinkan Anda memperluas bahasa dengan konstruksi khusus untuk domain Anda, menjadikannya, secara efektif, bahasa khusus domain. Teknik ini sangat kuat karena memungkinkan Anda untuk berpikir tentang masalah yang Anda selesaikan, bukan tentang mengocok bit.
sumber
Dugaan saya adalah, sebagai bahasa fungsional, tidak membedakan antara kode dan data. Semuanya, termasuk definisi fungsi dan panggilan fungsi dapat diperlakukan sebagai daftar dan dimodifikasi seperti bagian data lainnya.
Jadi, kode yang dapat memodifikasi sendiri dan memodifikasi sendiri dapat ditulis dengan mudah.
sumber
Satu jawaban yang mungkin adalah bahwa AI adalah kumpulan masalah yang sangat sulit, dan Lisp adalah bahasa yang baik untuk memecahkan masalah yang sulit, bukan hanya AI.
Adapun alasannya adalah: makro, fungsi generik, dan introspeksi yang kaya memungkinkan kode ringkas dan pengenalan abstraksi domain yang mudah - ini adalah bahasa yang dapat Anda jadikan lebih kuat. Untuk banyak masalah yang tidak perlu, dan itu datang dengan biayanya sendiri, tetapi untuk masalah lain dibutuhkan kekuatan untuk membuat kemajuan.
sumber
Saya pikir itu salah untuk berpikir tentang hal ini dalam hal AI saja. Hal-hal seperti AI-musim dingin dan efek komersial pada lemak umum mengganggu jika Anda bertanya mengapa itu digunakan untuk AI, bukan mengapa itu tidak sering digunakan sekarang ...
Bagaimanapun, saya pikir itu karena sebagian besar kode AI pada dasarnya adalah kode penelitian. Lisp adalah bahasa yang bagus untuk pemrograman eksplorasi, untuk mengimplementasikan algoritma yang sulit, untuk memodifikasi sendiri dan sering memodifikasi kode. Dengan kata lain, untuk kode penelitian.
Saya menggunakan lisp hari ini untuk beberapa kode penelitian saya (matematika, pemrosesan sinyal) karena lebih fleksibel dan kuat daripada kebanyakan bahasa sementara masih menghasilkan kode yang lebih efisien daripada kebanyakan bahasa. Saya biasanya bisa mendapatkan kinerja dalam faktor +/- 2 dari katakanlah kecepatan c ++, tapi saya bisa mengimplementasikan banyak hal lebih cepat, dan menangani kompleksitas yang akan membawa saya jauh lebih banyak waktu daripada yang saya miliki jika saya menggunakan c ++, java, c #.
Itu mengembara dari topik sekalipun. Saya pikir kode AI terutama ditulis dalam bahasa umum untuk sementara waktu karena itu adalah pendekatan yang kuat untuk kode penelitian. Itu masih; tetapi karena algoritme `AI 'menjadi lebih dipahami dan dieksplorasi, sebagian dari mereka lebih mudah untuk diajarkan dan digunakan, sehingga mereka muncul dalam bahasa yang sesuai dengan selera dalam kursus tingkat sarjana. Dari sana, itu menjadi masalah tentang apa yang sudah diketahui orang, perpustakaan apa yang tersedia, dan apa yang berfungsi dengan baik untuk kelompok besar.
sumber
Saya kira alasan utama adalah fleksibilitas daftar sebagai struktur data dasar.
pada saat itu, mampu mengubahnya menjadi semua jenis objek komposit, dan hal-hal baru sebagai pesan dan polimorfisme, menjadikannya bahasa pilihan; tidak khusus untuk AI, tetapi untuk tugas besar, kompleks,. terutama ketika mereka bereksperimen dengan konsep.
sumber
Saya pikir Anda benar: Lisp adalah alat yang berguna untuk meretas segalanya. Ini karena tidak banyak membedakan antara program dan data. Ini memungkinkan peretas untuk memanipulasi fungsi dengan sangat mudah, seperti halnya data.
Tapi cisp cukup sulit bagi manusia untuk membaca, dengan kawat gigi dan perbedaan antara data dan program. Hari ini, saya tidak akan menggunakan lisp untuk kode AI produksi apa pun (atau mungkin bahkan prototipe) tetapi akan lebih suka python untuk skrip.
Hal lain yang perlu dipertimbangkan adalah perpustakaan / alat yang ada di / terkait dengan bahasa. Saya tidak dalam posisi untuk membandingkan lisp libraries dengan python libraries, tapi saya kira libraries dan open source lebih penting sekarang daripada sebelumnya.
Jawaban ini terinspirasi oleh perbandingan antara lisp dan python berikut: http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html
sumber
Saya ingat pernah mendengar itu, sebagai bahasa fungsional, Lisp adalah pilihan yang sangat baik untuk menerapkan algoritma rekursif. Mampu melacak pohon dan bekerja kembali sangat penting ketika mempertimbangkan proses pengambilan keputusan (traversal) dan hasil akhir (leaf leaf).
Ini diberitahukan kepada saya selama kursus AI di universitas tempat kami belajar Lisp.
sumber
Jawaban yang lebih sinis mungkin "karena kehilangan perang AI politik antara Jepang dan Amerika Serikat pada 1980-an". Ada posting blog yang menyenangkan yang berspekulasi tentang dampak dari Sistem Komputer Generasi Kelima pada Prolog .
sumber