Здається, існує давнє переконання (головним чином, що не стосується листів), що Lisp кращий, ніж більшість мов на AI.
Звідки виникла ця віра? І чи є в цьому насправді якась основа?
Здається, існує давнє переконання (головним чином, що не стосується листів), що Lisp кращий, ніж більшість мов на AI.
Звідки виникла ця віра? І чи є в цьому насправді якась основа?
Відповіді:
Однією з ключових відмінностей між LISP-подібними мовами та іншими мовами є те, що в LISP-кодах код і дані - те саме. Це дає можливість робити такі речі, як програма, змінювати деякі алгоритми під час виконання, оскільки вона «вивчає» нові речі, як рідну частину мови.
Інший аспект, який входить у цю проблему, хоча і не так багато, - це здатність LISP легко додавати нову мовну семантику за допомогою макросів. Це дає можливість реально зайти і визначити DSL, з яким працює ваш AI і може розвиватися, з можливістю розростання, самокорегування та еволюціонування цієї мови під час роботи AI.
Погоджуючись з Квадресценцією, історія використання LISP має великий шлях до образу LISP, що це добре для ШІ. Чому LISP використовується для AI, висвітлює історію набагато детальніше.
Деякі з найперших програм у Lisp були доказовими для теореми, символічної математики, класичної ELIZA тощо. Окрім таких книг, як PAIP Пітера Норвіга, а також того, що lisp бере свій початок у лабораторії MIT AI, він начебто отримав таке зображення цей ліс хороший для ШІ.
DARPA також фінансувала університети на дослідження в галузі AI, і придбала значну кількість апаратних засобів у Symbolics. Нестача коштів врешті-решт призвела до так званої «AI зими».
Нарешті, оригінальні мови, такі як Fortran (або "мови", такі як ASM), використовувались як основні для чисельних обчислень. Ви працювали з числами та масивами їх. У наші дні у нас є символи чи можливість створити майже будь-який об’єкт, який ми хотіли, на більшості сучасних мов.
Отже, причина того, що ліс був кращим для AI свого часу, це вже не так. Однак думка про те, що "lisp - це добре для ШІ", все ще затрималася.
Незалежно від того, чи ні ліпс є кращою мовою через свої особливості та структуру, це зовсім інший випадок (оскільки насправді така штука стосується багатьох інших областей, ніж просто AI, і, як правило, призведе до вогню старої полум'я).
Давайте розглянемо деякі з поточних програм AI: (1) Роботи, наприклад, автомобілі з самостійним керуванням. У великому виклику DARPA найвищим програмним забезпеченням для управління автомобілем був не Lisp. Скоріше це була процедурна мова, така як C ++ або Java. (2) Машинний переклад природної мови. Lisp не використовується для цієї мети широко використовуваними виробничими системами. (3) Ігрові ігри, наприклад, шахові програми. Лісп для цієї мети не використовується широко використовуваними, вищими шаховими програмами, такими як Фріц.
Лісп був винайдений і розроблений американськими лабораторіями AI в 1960-х роках, щоб швидко прототипувати символічні логічні програми, в яких рідні структури даних Lisp відповідають рівню необхідної символічної абстракції - наприклад, англійські слова можуть бути символами в списку, а логічні формули можуть бути легко представлені у вигляді списків операторів та операндів.
Але для виробничих програм переваги програмної інженерії статичних типових мов та широкого спектру сторонніх бібліотек означають, що Lisp навіть не вважається для великих сучасних систем, які виконують завдання AI.
@Stephen Reed це дуже добре сказав. Можу лише додати, що я був у лабораторії MIT AI у 70-х. Тоді я почув історію про походження Ліспа. Я не можу присягнути, що це правда, але це виглядає так:
Джон Маккарті був у MIT в 50-х роках, і він працював над доведенням властивостей програм, і для цього він використовував простий синтаксис, схожий на Lambda Calculus.
Історія полягала в тому, що один із студентів студенти хотів зробити проект (аналогія, доказ теореми, або символічна математика, я не пам'ятаю, яку) і запитав Маккарті, якою мовою користуватися. Відповідь - Фортран звичайно. (Іншого не було багато, і сама обробка списку була досить відома тоді, але тільки як пакети підпрограми, а не як мови.) Ну, якимось чином це призвело до програми, яка обробляла символи в вкладених структурах списку. Разом із способом їх читання та друку, а потім eval
функцією, а Voila '- мовою. LISt Мова обробки. Це злетіло звідти.
Для того, який алгоритм ми робили в ті часи (а це ще мало хто робить), потрібна була мова, яка могла б легко маніпулювати символічними виразами. У цьому Ліпп був добрий. В основному понятті було багато варіантів, ідучи за різними назвами, як-от Prolog, Scheme тощо.
Таким чином, AI означає багато речей для багатьох людей, і різні мови корисні для різних речей, але для проблем, які можна було б охарактеризувати як маніпуляції символами, важко знайти корисну мову, яка якось не походить від Lisp.
У Lisp є переваги для тих речей, які називали AI - принаймні, щодо логіки, пошуку та розбору пов'язаних речей, які були більшістю AI до приблизно 90-х.
Головною перевагою Lisp є підтримка макросів - коду як даних, метапрограмування.
Стандартний ML (SML) - інша мова, яка широко використовується в ШІ, наприклад, з 80-х років. Об'єктивний CAML і F # - це еволюція SML.
Основна перевага сімейства ML (і Haskell, тощо) - відповідність шаблонів. Можливо, це також доступно і в Lisp, але через бібліотеку метапрограмування, а не вбудовану в мову. Він також доступний у Haskell, але, принаймні, відповідність шаблонів не є звичайною поза функціональними мовами програмування.
Я бачив твердження, що LISP - це в основному розширене нетипізоване обчислення лямбда, а ML - це в основному розширене типізування лямбда. У мене немає знань набраного лямбдального числення, щоб сказати точно.
AI також став набагато більш широким предметом з роками - до того, що майже повністю зник. Видобуток даних можна вважати одним підполем ШІ. Багато речей AI (OCR, розпізнавання виступу) майже не перестали бути AI - вони просто додатки, як і будь-які інші. І AI набагато більше залежить від обробки сигналів та інших видів хрускоту чисел, ніж це було раніше.
Для розпізнавання OCR та розмовляння AI завжди залежав від обробки сигналу та кількості хрускоту. Так, в цьому є деякі суперечності ;-) Я не можу дати ваги для речей, як я насправді не знаю.
У будь-якому випадку, мабуть, не існує єдиної мови, яка підходить навіть для всього сучасного додатка AI - я б здогадався (немає знань з перших вуст), що в сучасному ШІ існує багатомовна розробка. І я майже можу гарантувати, що ви знайдете C і C ++ в деяких проектах, щоб отримати ефективність скорочення кількості. Я не був би здивований, якщо є багато Python з подібних причин - завдяки хорошій чисельній бібліотеці Python може легко впоратися із завданнями по стисненню чисел.
В одному з таких автомобілів, що керують самостійно, я уявляю, що система бачення написана іншою мовою (і працює на іншому обладнання) до системи планування маршруту.