Tampaknya ada kepercayaan lama (terutama oleh non-lispers) bahwa cisp lebih baik daripada kebanyakan bahasa di AI.
Dari mana keyakinan ini berasal? Dan apakah ada dasar untuk itu?
Tampaknya ada kepercayaan lama (terutama oleh non-lispers) bahwa cisp lebih baik daripada kebanyakan bahasa di AI.
Dari mana keyakinan ini berasal? Dan apakah ada dasar untuk itu?
Jawaban:
Salah satu perbedaan utama antara bahasa seperti LISP dan bahasa lainnya adalah bahwa dalam LISP, kode dan data adalah hal yang sama. Ini memungkinkan untuk melakukan hal-hal seperti memiliki program memodifikasi beberapa algoritma itu selama runtime karena "belajar" hal-hal baru, sebagai bagian asli bahasa.
Aspek lain yang masuk ke dalam ini, meskipun tidak banyak, adalah kemampuan LISP untuk dengan mudah menambahkan semantik bahasa baru melalui makro. Ini memungkinkan untuk benar-benar masuk dan menentukan DSL yang bekerja dengan AI Anda dan dapat berkembang, dengan potensi bahasa itu tumbuh, mengoreksi diri, dan berkembang saat AI sedang berjalan.
Setuju dengan Quadrescence, sejarah penggunaan LISP jauh menuju citra LISP yang baik untuk AI. Mengapa LISP digunakan untuk AI mencakup sejarah secara lebih rinci.
Beberapa program pertama di lisp adalah pembuktian teorema, matematika simbolik, ELIZA klasik, dll. Selain buku-buku seperti PAIP Peter Norvig, dan juga fakta bahwa lisp berasal dari lab MIT AI, ia mendapatkan gambar tersebut. Cisp itu bagus untuk AI.
DARPA juga mendanai universitas untuk penelitian dalam AI, dan membeli sejumlah besar perangkat keras dari Symbolics. Kekurangan dana akhirnya menyebabkan apa yang disebut "AI musim dingin".
Akhirnya, bahasa asli seperti Fortran (atau "bahasa" seperti ASM) digunakan primer untuk komputasi numerik. Anda bekerja dengan angka dan array dari mereka. Saat ini kita memiliki simbol, atau kemampuan untuk membuat hampir semua objek yang kita inginkan, dalam sebagian besar bahasa modern.
Jadi, alasan cadel lebih baik untuk AI pada satu waktu tidak lagi terjadi. Namun, gagasan bahwa "lisp baik untuk AI" masih bertahan.
Apakah cadel adalah bahasa yang lebih baik karena fitur dan strukturnya adalah kasus yang sama sekali berbeda (karena benar-benar hal semacam ini berlaku untuk banyak bidang lain selain AI saja, dan biasanya akan mengarah pada perang api lama).
Mari kita lihat beberapa program AI saat ini: (1) Robot, mis. Mobil self-drive. Dalam tantangan besar DARPA, perangkat lunak mengemudi mobil yang unggul bukanlah Lisp. Alih-alih itu adalah bahasa prosedural seperti C ++ atau Java. (2) Terjemahan mesin dari bahasa alami. Lisp tidak digunakan untuk tujuan ini oleh sistem produksi yang banyak digunakan. (3) Bermain game, misalnya program catur. Lisp tidak digunakan untuk tujuan ini oleh program catur unggul yang banyak digunakan seperti Fritz.
Lisp diciptakan dan dikembangkan oleh laboratorium AI AS pada 1960-an untuk dengan cepat membuat prototipe program logika simbolik di mana struktur data Lisp asli sesuai dengan tingkat abstraksi simbolik yang diperlukan - misalnya kata-kata bahasa Inggris bisa menjadi simbol dalam daftar, rumus logika bisa dengan mudah direpresentasikan sebagai daftar operator dan operan.
Tetapi untuk program produksi, keunggulan rekayasa perangkat lunak dari bahasa yang diketik statis dan berbagai perpustakaan pihak ketiga, berarti bahwa Lisp bahkan tidak dipertimbangkan untuk sistem modern besar yang melakukan tugas AI.
@Stephen Reed mengatakannya dengan sangat baik. Saya hanya bisa menambahkan bahwa saya berada di MIT AI Lab di tahun 70-an. Saya mendengar sebuah cerita tentang asal usul Lisp. Saya tidak bisa bersumpah itu benar, tetapi seperti ini:
John McCarthy berada di MIT pada tahun 50-an, dan dia telah bekerja membuktikan sifat-sifat program, dan untuk ini dia telah menggunakan sintaksis sederhana yang mirip dengan Lambda Calculus.
Ceritanya adalah bahwa salah satu mahasiswa pascasarjana ingin melakukan proyek (analogi, atau pembuktian teorema, atau matematika simbolik, saya tidak ingat yang mana) dan bertanya kepada McCarthy bahasa apa yang digunakan. Jawabannya - Fortran tentu saja. (Tidak ada banyak hal lain, dan pemrosesan daftar itu sendiri cukup terkenal saat itu, tetapi hanya sebagai paket subrutin, bukan sebagai bahasa.) Nah, entah bagaimana itu mengarah ke sebuah program yang akan memproses simbol dalam struktur daftar bersarang. Bersama dengan cara untuk membaca dan mencetaknya, dan kemudian suatu eval
fungsi, dan Voila '- bahasa. Bahasa Pemrosesan LISt. Itu berangkat dari sana.
Untuk jenis algoritma yang kami lakukan pada masa itu (dan masih sangat sedikit orang yang melakukannya) diperlukan bahasa yang dapat dengan mudah memanipulasi ekspresi simbolik. Itulah yang dilakukan Lisp dengan baik. Ada banyak variasi pada konsep dasar, pergi dengan nama yang berbeda, seperti Prolog, Skema, dll.
Jadi AI berarti banyak hal bagi banyak orang, dan bahasa yang berbeda baik untuk hal yang berbeda, tetapi untuk masalah yang dapat digambarkan sebagai manipulasi simbol, sulit untuk menemukan bahasa yang bermanfaat yang entah bagaimana tidak diturunkan dari Lisp.
Lisp memiliki kelebihan untuk hal-hal yang disebut AI - setidaknya logika, pencarian dan penguraian hal-hal terkait yang sebagian besar AI sampai sekitar tahun 90-an.
Keuntungan utama Lisp adalah dukungannya untuk kode makro sebagai data, metaprogramming.
Standar ML (SML) adalah bahasa lain yang telah banyak digunakan dalam AI, misalnya, sejak tahun 80-an. CAML dan F # yang objektif adalah evolusi dari SML.
Keuntungan utama keluarga ML (dan Haskell, dll) adalah pencocokan pola. Ini mungkin tersedia di Lisp juga, tetapi melalui perpustakaan metaprogramming daripada dibangun ke dalam bahasa. Ini juga tersedia di Haskell, tapi setidaknya untuk saat ini, pencocokan pola tidak umum di luar bahasa pemrograman fungsional.
Saya telah melihat klaim bahwa LISP pada dasarnya merupakan kalkulus lambda yang tidak diketik, dan ML pada dasarnya adalah kalkulus lambda yang diketikkan. Saya tidak memiliki pengetahuan tentang kalkulus lambda yang diketik untuk mengatakan dengan pasti.
AI juga telah menjadi subjek yang jauh lebih luas selama bertahun-tahun - hingga hampir menghilang sepenuhnya. Penambangan data dapat dianggap sebagai satu subbidang AI. Banyak hal AI (OCR, pengenalan speach) hampir berhenti menjadi AI sama sekali - mereka hanya aplikasi, sama seperti yang lainnya. Dan AI jauh lebih tergantung pada pemrosesan sinyal dan jenis lain dari angka-angka daripada sebelumnya.
Untuk pengenalan OCR dan speach, AI selalu tergantung pada pemrosesan sinyal dan angka tentu saja. Ya, ada beberapa kontradiksi dalam hal ini ;-) Saya tidak bisa memberikan bobot untuk hal-hal yang tidak saya ketahui.
Bagaimanapun, sebagai hasilnya, mungkin tidak ada satu bahasa yang sesuai bahkan untuk seluruh satu aplikasi AI modern - saya kira (tidak ada pengetahuan tangan pertama) bahwa ada banyak pengembangan multi-bahasa di AI modern. Dan saya hampir dapat menjamin bahwa Anda akan menemukan C dan C ++ di beberapa proyek, untuk mendapatkan kinerja angka. Saya tidak akan terkejut jika ada banyak Python untuk alasan yang sama - dengan perpustakaan numerik yang baik, Python dapat dengan mudah menangani tugas angka-angka.
Di salah satu mobil self-driving, saya membayangkan sistem penglihatan ditulis dalam bahasa yang berbeda (dan berjalan pada perangkat keras yang berbeda) ke sistem perencanaan rute.