Останні мови програмування для AI? [зачинено]


15

Протягом декількох десятиліть мовою програмування, яку вибирали AI, було або Prolog, або LISP , і ще кілька інших, які не так відомі . Більшість з них були розроблені до 70-х.

Зміни трапляються дуже багато в багатьох інших доменах, що відповідають певним мовам, але в домені AI вони не з'явилися так сильно, як у веб-мовах або сценаріях тощо.

Чи є останні мови мов програмування, які мали на меті змінити гру в AI та вивчити недостатність колишніх мов?


1
Octave - це гарна мова для машинного навчання, якщо ця галузь AI вас цікавить.
сетзамора

Розглянемо також метапрограмовий підхід (тобто генерування програм). Загляньте у блог Дж. Пітрата . Тоді мова, яку ви генеруєте, може не мати великої значущості, це може бути навіть C.
Базиль Старинкевич

Відповіді:


23

Курс AI, в якому я брав участь в Інтернеті, викладав у Стенфорді, рекомендував використовувати Python для домашніх завдань. Я вважаю, що Georgia Tech все ще використовує LISP.

Помилка тут "нова" - це "добре". Дослідження AI - одна з найдавніших обчислювальних дисциплін. Воно не дає відлякувати підполі, оскільки люди розуміють, що методи з нього можна використовувати в іншому місці. Обробка мови, машинне навчання та обмін даними - це приклади "практичних" додатків, які використовують величезну кількість мов.

Тож менше, що головне поле змінилося, ніж воно було перероблене на масивний масив суміжних дисциплін. Це так само, як сказати "Наукові обчислення" і очікувати, що це означає лише розв'язання лінійних рівнянь.

Мови, про які ви згадали, розвивалися досить багато за останні 20 чи 30 років. Ліс породив звичайного Ліса і Клуджура. Prolog породив Visual Prolog (у нього є предмети ...) і Меркурій (візьміть Haskell і Prolog, зафіксуйте їх у кімнаті разом ... стоять добре і готуйтеся до запуску).

Зважаючи на те, що дослідження ШІ є більш теоретичним, має сенс, що він зосередився б на теорії (математиці), а не на практиці (мовах).

Все, що говорилося, найбільшим новатором AI-технологій, на які я став би, став Google. Вони, як правило, надають перевагу Python (і Go and Dart, але це вже не в питанні). Таким чином, я б сказав, що Python є "останньою мовою вибору", але ви також можете використовувати Haskell, OCaml або F # або C # або навіть Java.


+1 Для згадки про Меркурій.
Гай Кодер

8

Ви можете знайти відповіді на свої запитання в нещодавньому спеціальному випуску "Sprachen der KI" ("Мови ШІ") німецького журналу AI KI - Künstliche Intelligenz , том 26, номер 1 / лютого 2012 року, опублікованому Springer. Я є співавтором однієї частини дискусійного документу, що входить до нього: «Яку мову ви використовуєте для створення своїх програм AI і для чого?» Ось передрук до неї: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

Підводячи підсумок, деякі дослідники ШІ все ще клянуться класичними мовами ШІ Lisp та Prolog. Інші використовують основні мови, такі як C ++, Java або Python. Інші ж люблять вивчати нові езотеричні мови програмування.

Я вважаю, що в AI немає нічого особливого, що вимагало б спеціальних мов програмування. Що в основному хочуть дослідники, - це мови програмування, які дозволяють швидко формувати прототипи. Це щось із старих мов AI (Lisp, Prolog) та новіших «скриптових» мов (Perl, Python, Ruby або останніх мов JVM, таких як Clojure).

Деякі дослідники хочуть вийти за межі прототипування, або вони мають особливі вимоги (наприклад, великі дані), і їм потрібно повторно реалізувати свої алгоритми в складених або сильно набраних мовах, таких як C, C ++ або Java, після закінчення фази дослідницького програмування, і вони мають краще вирішити проблему. Дехто сказав би, що в той момент (коли проблема добре зрозуміла), ти вже не маєш справу з ШІ.

Повертаючись до останнього запитання, усі значні розробки нових мов AI, які я знаю, натхненні програмуванням на основі обмежень. Деякі з них увійшли в реалізацію Prolog, такі як SICStus та SWI, інші породили подібні до Prolog мови, такі як Меркурій та Моцарт / Оз. Звичайно, мабуть, будуть значні нові події, про які я не знаю.


2

Хоча більшість цих відповідей зосереджені на слові "мова", оскільки ви його використовували у своєму питанні, я не вважаю, що ви повинні думати конкретну мову, думаючи про AI.

Я працюю з цією технологією протягом багатьох років, і зараз працюю з помічниками Proof і перетворюю деякий код з OCaml у F #. Це не мова, яка досягає ШІ, а конкретні алгоритми, реалізовані в мові. Для PROLOG це двигун висновку, заснований на уніфікації . Тепер, якщо ви почнете з об'єднання і подивитесь, як це було налаштовано та просунуте протягом багатьох років, я думаю, ви знайдете прогрес прогресу, якого ви прагнете. Не фокусуйтесь на мові, а на алгоритмах.

Як приклад, виведення типу у функціональних мовах використовує Хіндлі – Мілнер, що ґрунтується на уніфікації.

Інший приклад, специфічний для помічника доказу, тут , зверніть увагу на prolog.ml. Двигун виводу для prolog реалізований в OCaml і переводиться на F #. Тому, хоча OCaml і F # не відзначаються нормально як мови AI, вони цілком здатні реалізувати алгоритми AI.


Я мушу сказати, що саме це я вважаю з цього питання: алгоритми важливіші за мову, якою ви їх пишете, тому кожна AI книга, яку я прочитав, наполягала на наданні псевдокоду алгоритмів.
JJP

1

Я б сказав, що це залежить від того, що ви маєте на увазі під AI. Машинне навчання загалом зазнало певного стрімкого розвитку інструментарію, тому ряд алгоритмів класифікації, кластеризації та інших форм контрольованого та непідконтрольного навчання, особливо з імовірнісними графічними моделями, було реалізовано в Python, C #, Ruby, OCaml та Java, лише декілька.

Якщо ви робите широкомасштабні маніпуляції з даними для побудови таких рекомендацій, як механізми рекомендацій, спільна фільтрація чи інші типи непідконтрольних або контрольованих проблем навчання, ви можете поглянути на Mahout . Це насправді не "мова програмування" сама по собі, але це набір інструментів для подібних проблем. Ви можете написати модельний код на Java або інших мовах JVM, таких як groovy (динамічна, досить виразна мова) або clojure (lisp-like).

Я не впевнений, чому ви вважаєте Лісп датованим; саме звідси походить більшість "нових" мовних особливостей інших мов (закриття тощо).

Звичайно, методи машинного навчання, як правило, рухаються в бік імовірнісних моделей, ніж на бінарній логіці, підході до стилю дерева рішень, з якої почалися більшість ранніх зусиль AI, тому можна стверджувати, що машинне навчання - це галузь або відхилення від великого намету ШІ.


0

Мовою вибору для AI, яку я використовував років тому, був Prolog, який має версію Visual Prolog, яка постачається з IDE, як у Delphi.

Prolog (і її версія GUI Visual Prolog) - мова логічного програмування загального призначення, пов'язана зі штучним інтелектом та обчислювальною лінгвістикою.

Однак остання тенденція показує, що будь-яка мова OOP, наприклад C #, Java, Python, Haskell тощо, стає програмованою для програм AI.


3
З якого часу Haskell OOP?
Андреа

ви можете наслідувати OOP в Haskell, правда?
Юсубов

1
Ви можете імітувати його будь-якою мовою, не означає, що ви зазвичай вважаєте будь-яку мову OO
jk.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.