Почему Lisp используется для AI? [закрытый]

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

183
задан Cristián Romo 28 May 2010 в 18:04
поделиться

9 ответов

Lisp WAS, используемая в AI до конца 1980-х. В 80-х, тем не менее, язык Common LISP был перепродан к деловому миру как "язык AI"; обратная реакция вынудила большинство программистов AI к C++ в течение нескольких лет. В эти дни прототипы обычно пишутся на младшем динамическом языке (Perl, Python, Ruby, и т.д.) и реализации успешного исследования обычно находится в C или C++ (иногда Java).

, Если Вам любопытно на предмет 70-х... хорошо, я не был там. Но я думаю, что Lisp был успешен в исследовании AI по трем причинам (в порядке важности):

  1. Lisp является превосходным инструментом разработки прототипа. Это было лучшее в течение очень долгого времени. Lisp все еще силен в занятии проблемой, которую Вы не знаете, как решить все же. То описание характеризует AI отлично.
  2. Lisp поддерживает программирование на символическом языке хорошо. Старый AI был также символьным. Это было также уникально в этом отношении в течение долгого времени.
  3. Lisp очень мощен. Различие кода/данных более слабо так это чувства более расширяемый, чем другие языки, потому что Ваши функции и макросы похожи на встроенный материал.

я не имею старая книга AI Peter Norvig, но она, как предполагается, хороший способ учиться программировать алгоритмы AI в Lisp.

Правовая оговорка: Я - студент градиента в компьютерной лингвистике. Я знаю подполе обработки естественного языка намного лучше, чем другие поля. Возможно, Lisp используется больше в других подполях.

122
ответ дан Nathan Shively-Sanders 23 November 2019 в 06:01
поделиться

Одна причина состоит в том, что это позволяет Вам расширять язык с помощью конструкций, специфичных для Вашего домена, делая его, эффективно, предметно-ориентированного языка. Эта техника невероятно мощна, поскольку она позволяет Вам рассуждать о проблема , Вы решаете, а не о перестановке битов.

22
ответ дан dsm 23 November 2019 в 06:01
поделиться

Мое предположение всегда было то, что, будучи функциональным языком, это не дифференцируется между кодом и данными. Все, включая функциональные определения и вызовы функции можно рассматривать как списки и изменить как любая другая часть данных.

Настолько самоосматривающий, самоизменяющий код мог быть записан легко.

12
ответ дан aib 23 November 2019 в 06:01
поделиться

Один возможный ответ - то, что AI является набором очень тяжелых проблем, и Lisp является хорошим языком для решения тяжелых проблем, не просто AI.

относительно того, почему это: макросы, родовые функции и богатый самоанализ допускают краткий код и легкое введение доменных абстракций —, это - язык, который можно сделать более мощным. Для большого количества проблем это является ненужным, и это идет со своими собственными затратами, но для других проблем, что питание необходимо для создания любого прогресса.

8
ответ дан Rich 23 November 2019 в 06:01
поделиться

Я думаю, что неправильно думать об этом с точки зрения AI только. Вещи как зимние AI и коммерческие эффекты на язык Common LISP недовольны, если Вы спрашиваете, почему он использовался для AI, не, почему он не часто используется теперь...

Так или иначе, я думаю, что это - потому что большая часть кода AI была по существу кодом исследования. Lisp является большим языком для исследовательского программирования, для реализации трудных алгоритмов, для самоизменения и часто изменяемого кода. Другими словами, для кода исследования.

я использую шепелявость сегодня для части моего кода исследования (математика, обработка сигналов), потому что это более гибко и мощно, чем большинство языков при тихой генерации более эффективного кода, чем большинство языков. Я могу обычно получать производительность в факторе +,/-2 говорит скорость C++, но я могу реализовать вещи намного быстрее и иметь дело со сложностью, которая взяла бы меня намного больше времени, чем я имею, если я использовал C++, Java, c#.

Это блуждает вне темы все же. Я думаю, что код AI был, прежде всего, записан в языке Common LISP некоторое время, потому что это - мощный подход к коду исследования. Это все еще; но поскольку алгоритмы 'AI' стали лучше понятый и исследуемый, части их было намного легче преподавать и использовать, таким образом, они обнаружились на flavor-of-the-year языках в курсах старшекурсника. Оттуда, это становится проблемой того, что уже знают люди, какие библиотеки доступны, и что работы хорошо для больших групп.

7
ответ дан simon 23 November 2019 в 06:01
поделиться

Я предположил бы, что большой причиной была гибкость списков как структура основных данных.

в то время, способность превратить их в весь вид составных объектов и новые вещи как передачи сообщений и полиморфизм, сделала его предпочтительным языком; не специально для AI, а для большого, сложного, задач. особенно, когда они экспериментировали с понятиями.

6
ответ дан Javier 23 November 2019 в 06:01
поделиться

Я думаю, что Вы правы: Lisp был удобным инструментом для того, чтобы изрубить вещи. Это вызвано тем, что это не различало очень программу и данные. Это позволило хакерам управлять функциями очень легко, точно так же, как данные.

, Но шепелявость является довольно трудным для людей читать, с ее фигурными скобками и неразличием между данными и программой. Сегодня, я не буду использовать шепелявость ни для какого производственного кода AI (или возможно даже моделирующий), но очень предпочел бы Python для сценариев.

Другой вещью рассмотреть являются существующие библиотеки/инструменты, in/related на язык. Я не имею возможности сравнивать библиотеки шепелявости с библиотеками Python, но я предполагаю, что библиотеки и открытый исходный код имеют большое значение больше теперь, чем прежде.

Этот ответ был вдохновлен следующим сравнением между шепелявостью и Python: http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html

4
ответ дан amit 23 November 2019 в 06:01
поделиться

Я не забываю слышать, что, будучи функциональным языком, Lisp был очень хорошим выбором для реализации рекурсивных алгоритмов. Способность разыскать дерево и работу Ваш путь назад важна при рассмотрении процессов принятия решений (обход) и конечный результат (вершина).

Это было сказано мне во время курса AI в университете, где мы изучили Lisp.

4
ответ дан mlambie 23 November 2019 в 06:01
поделиться

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

Типичные области AI для вычислений с символами были: компьютерная алгебра, доказательство теорем, планируя системы, диагноз, переписывают системы, представление знаний и обоснование, логические языки, машинный перевод, экспертные системы, и т.д.

Затем не удивительно, что много известных приложений AI в этих доменах были записаны в Lisp:

  • Macsyma как первая большая компьютерная система алгебры.
  • ACL2 как широко используемая программа автоматического доказательства теоремы, например, используемая AMD.
  • DART как планировщик логистики используется во время первой войны в Персидском заливе американскими вооруженными силами. Одно только это приложение Lisp, как говорят, заплатило для всех американских инвестиций в исследование AI в то время.
  • СКАЧОК, планирование и планирование приложения для Космического телескопа Хабблa. Также используемый несколькими другими большими телескопами.
  • CYC, одна из самых больших записанных программных систем. Представление и обоснование в домене человеческого разумного знания.
  • МЕТАЛЛ, одна из первых коммерчески используемых систем перевода естественного языка.
  • Помощник Authorizer American Express, который проверяет транзакции оплаты по кредитной карте.

Существуют тысячи приложений в этих областях, которые записаны в Lisp. Очень характерный для тех то, что им нужны специальные возможности в области обработки символьной информации. Каждый реализует специальные языки, которые имеют специальные интерпретаторы/компиляторы в этих доменах сверху Lisp. Lisp позволяет создавать представления для символьных данных и программ и может реализовать все виды оборудования для управления этими выражениями (математические формулы, логические формулы, планы...).

(Обратите внимание, что много других языков программирования общего назначения используется в AI, также. Я попытался ответить, почему особенно Lisp используется в AI.)

60
ответ дан Rainer Joswig 23 November 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: