Bahasa pemrograman terbaru untuk AI? [Tutup]

15

Selama beberapa dekade bahasa pemrograman pilihan untuk AI adalah Prolog atau LISP , dan beberapa lainnya yang tidak begitu terkenal . Sebagian besar dirancang sebelum 70-an.

Perubahan banyak terjadi pada banyak domain lain, bahasa tertentu, tetapi dalam domain AI itu tidak muncul terlalu banyak seperti di bahasa web tertentu atau skrip dll.

Apakah ada bahasa pemrograman terbaru yang dimaksudkan untuk mengubah permainan dalam AI dan belajar dari kekurangan bahasa sebelumnya?

Eduard Florinescu
sumber
1
Oktaf adalah bahasa yang baik untuk Pembelajaran Mesin jika cabang AI itu menarik minat Anda.
setzamora
Pertimbangkan juga pendekatan meta-pemrograman (yaitu menghasilkan program). Lihatlah blog J.Pitrat . Maka bahasa yang Anda hasilkan mungkin tidak memiliki banyak ketidakmampuan, bahkan mungkin C.
Basile Starynkevitch

Jawaban:

23

Kursus AI yang saya ikuti online, mengajar di Stanford, merekomendasikan agar Python digunakan untuk pekerjaan rumah. Saya percaya Georgia Tech masih menggunakan LISP.

Kekeliruan di sini adalah "baru" adalah "baik". Penelitian AI adalah salah satu disiplin riset komputasi tertua. Itu terus melahirkan dari subbidang karena orang menyadari bahwa teknik dari itu dapat digunakan di tempat lain. Pemrosesan Bahasa, Pembelajaran Mesin, dan Penambangan Data adalah semua contoh aplikasi "praktis" yang menggunakan sejumlah besar bahasa.

Jadi kurang bahwa bidang utama telah berubah daripada yang telah disempurnakan menjadi sejumlah besar disiplin ilmu terkait. Ini seperti mengatakan "Scientific Computing" dan mengharapkannya hanya berarti menyelesaikan Persamaan Linear.

Bahasa yang Anda sebutkan telah berkembang cukup banyak dalam 20 atau 30 tahun terakhir. Lisp melahirkan Common Lisp dan Clojure. Prolog melahirkan Prolog Visual (memiliki objek ...) dan Merkurius (ambil Haskell dan Prolog, kunci mereka di ruang bersama-sama ... berdiri jauh dan bersiaplah untuk berlari).

Mengingat bahwa penelitian AI lebih berteori, masuk akal bahwa ia akan fokus pada teori (matematika) daripada kepraktisan (bahasa).

Semua yang dikatakan, inovator terbesar teknologi AI yang saya bertaruh adalah Google. Mereka cenderung menyukai Python (dan Go dan Dart tapi itu intinya). Jadi saya akan mengatakan Python adalah "bahasa pilihan terakhir" tetapi Anda juga bisa menggunakan Haskell atau OCaml atau F # atau C # atau bahkan Java.

Insinyur Dunia
sumber
+1 Untuk menyebutkan Merkuri.
Guy Coder
8

Anda dapat menemukan jawaban untuk pertanyaan Anda dalam edisi khusus baru-baru ini "Sprachen der KI" ("Bahasa AI") dari jurnal AI Jerman KI - Künstliche Intelligenz , Volume 26, Nomor 1 / Februari 2012, diterbitkan oleh Springer. Saya adalah rekan penulis dari salah satu bagian dari makalah diskusi yang termasuk di dalamnya: “Bahasa apa yang Anda gunakan untuk membuat program AI dan mengapa?” ​​Berikut ini adalah pracetaknya: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

Singkatnya, beberapa peneliti AI masih bersumpah dengan bahasa AI klasik Lisp dan Prolog. Lainnya menggunakan bahasa umum seperti C ++, Java, atau Python. Yang lain lagi suka menjelajahi bahasa pemrograman esoterik baru.

Saya percaya tidak ada yang istimewa tentang AI yang membutuhkan bahasa pemrograman khusus. Apa yang diinginkan para peneliti secara umum adalah bahasa pemrograman yang memungkinkan pembuatan prototipe cepat. Ini adalah sesuatu bahasa AI lama (Lisp, Prolog) dan bahasa "scripting" yang lebih baru (Perl, Python, Ruby, atau bahasa JVM baru-baru ini seperti Clojure) sangat bagus untuk itu.

Beberapa peneliti ingin melampaui prototyping, atau mereka memiliki persyaratan khusus (misalnya data besar) dan perlu mengimplementasikan kembali algoritma mereka dalam bahasa yang dikompilasi atau diketik dengan kuat seperti C, C ++ atau Java setelah fase pemrograman eksplorasi selesai dan mereka memiliki pegangan masalah yang lebih baik. Beberapa orang akan mengatakan bahwa pada saat itu (ketika masalahnya dipahami dengan baik), Anda tidak lagi berurusan dengan AI.

Kembali ke pertanyaan terakhir Anda, semua perkembangan signifikan dalam bahasa AI baru yang saya tahu terinspirasi oleh pemrograman berbasis kendala. Beberapa telah memasukkan implementasi Prolog seperti SICStus dan SWI, yang lain telah melahirkan bahasa seperti Prolog seperti Mercury dan Mozart / Oz. Tentu saja ada kemungkinan perkembangan baru yang signifikan yang tidak saya sadari.

Christian Pietsch
sumber
2

Sementara sebagian besar jawaban ini fokus pada kata "bahasa" karena Anda menggunakannya dalam pertanyaan Anda, saya tidak percaya Anda harus berpikir bahasa tertentu ketika berpikir tentang AI.

Saya telah bekerja dengan teknologi ini selama bertahun-tahun dan saya saat ini bekerja dengan Asisten Bukti dan mengubah beberapa kode dari OCaml ke F #. Bukan bahasa yang mencapai AI tetapi algoritma spesifik yang diterapkan dalam bahasa. Untuk PROLOG ini adalah mesin inferensi berdasarkan penyatuan . Sekarang jika Anda mulai dengan penyatuan dan melihat bagaimana itu telah disesuaikan dan maju selama bertahun-tahun saya pikir Anda akan menemukan perkembangan kemajuan yang Anda cari. Jangan fokus pada bahasa, fokus pada algoritma.

Sebagai contoh, ketik inferensi dalam bahasa fungsional menggunakan Hindley-Milner yang didasarkan pada penyatuan.

Contoh lain khusus untuk asisten bukti ada di sini , perhatikan prolog.ml. Mesin inferensi untuk prolog diimplementasikan dalam OCaml dan diterjemahkan ke dalam F #. Jadi sementara OCaml dan F # tidak dicatat secara normal sebagai bahasa AI, mereka sepenuhnya mampu mengimplementasikan algoritma AI.

Guy Coder
sumber
Saya harus mengatakan ini persis apa yang saya pikirkan tentang pertanyaan ini: algoritme lebih penting daripada bahasa yang Anda gunakan untuk menulisnya, itu sebabnya setiap buku AI yang saya baca bersikeras memberikan pseudocode untuk algoritme.
JJP
1

Saya akan mengatakan itu tergantung pada apa yang Anda maksud dengan AI. Pembelajaran mesin secara umum telah melihat beberapa evolusi perkakas yang cepat, sehingga sejumlah algoritma untuk klasifikasi, pengelompokan, dan bentuk lain dari pembelajaran yang diawasi dan tidak terawasi, terutama dengan model grafis probabilistik, telah diimplementasikan dalam Python, C #, Ruby, OCaml, dan Java, hanya untuk beberapa nama.

Jika Anda melakukan manipulasi data skala besar untuk membangun hal-hal seperti mesin rekomendasi, pemfilteran kolaboratif, atau jenis lain dari masalah pembelajaran yang tidak diawasi atau diawasi, Anda mungkin ingin melihat Mahout . Sebenarnya ini bukan "bahasa pemrograman", tetapi seperangkat alat untuk masalah seperti ini. Anda dapat menulis kode model di Jawa, atau bahasa JVM lainnya seperti groovy (bahasa yang dinamis dan ekspresif) atau clojure (mirip-lisp).

Saya tidak yakin mengapa Anda menganggap Lisp berkencan; di situlah sebagian besar fitur bahasa "baru" berasal dari bahasa lain (penutup, dll.).

Tentu saja, teknik pembelajaran mesin secara umum telah bergerak ke arah model probabilistik daripada pada logika biner, pendekatan gaya pohon keputusan yang dimulai dengan sebagian besar upaya AI awal, sehingga mungkin untuk berpendapat bahwa pembelajaran mesin adalah cabang atau pengalihan dari tenda besar. dari AI.

Jason True
sumber
0

Bahasa pilihan untuk AI yang telah saya gunakan tahun lalu adalah Prolog, yang memiliki versi Visual Prolog yang datang dengan IDE seperti di Delphi.

Prolog (dan versi GUI Visual Prolog) adalah bahasa pemrograman logika tujuan umum yang terkait dengan kecerdasan buatan dan linguistik komputasi.

Namun, tren terbaru menunjukkan bahwa bahasa OOP seperti C #, Java, Python, Haskell, dll. Menjadi dapat diprogram untuk aplikasi AI.

Yusubov
sumber
3
Sejak kapan Haskell OOP?
Andrea
Anda dapat meniru OOP di Haskell, bukan?
Yusubov
1
Anda dapat meniru itu dalam bahasa apa pun, tidak berarti Anda biasanya menganggap bahasa apa pun sebagai OO
jk.