Алгоритмы опережающего поиска чрезвычайно эффективны для своих специфических задач, но не отличаются гибкостью. Например, AlphaGo «знает» правила го, но только в том смысле, что имеет две подпрограммы, написанные на традиционном языке программирования наподобие С++: одна подпрограмма генерирует все возможные допустимые шаги, другая кодирует цель, определяя, является ли данное состояние выигрышем или проигрышем. Чтобы AlphaGo сыграла в другую игру, кто-то должен переписать ее код на С++. Более того, если вы задаете новую цель, скажем, посетить экзопланету на орбите Проксимы Центавра, она станет исследовать миллиарды последовательностей ходов в го в бесплодной попытке найти ту последовательность, которая приведет к достижению цели. Она не может заглянуть внутрь кода на С++ и понять очевидное: никакая последовательность шагов го не доставит вас на Проксиму Центавра. Знание AlphaGo, в сущности, заперто внутри «черного ящика».
В 1958 г., через два года после летнего собрания в Дартмуте, на котором и появилась сфера разработки ИИ, Джон Маккарти предложил намного более универсальный подход, открывающий «черный ящик»: написание разумных программ общего назначения, способных усваивать знание по любой теме и мыслить на его основе, чтобы ответить на любой вопрос, имеющий ответ[61]. В особенности полезным здесь окажется практическое рассуждение того типа, что предложил Аристотель: «Выполнение действий А, Б, В… достигнет цели Г». Цель может быть какой угодно: убедиться, что в доме чисто, до того, как я там окажусь, выиграть в шахматы, не потеряв ни одного своего коня, снизить мои налоги на 50 %, посетить Проксиму Центавра и т. д. Новый класс программ, предложенный Маккарти, скоро получил название экспертной системы[62].
Чтобы создание экспертной системы стало возможным, нужно ответить на два вопроса. Во-первых, как хранить знание в компьютере? Во-вторых, как добиться, чтобы компьютер правильно мыслил на основе этого знания, делая новые выводы? К счастью, древнегреческие философы, особенно Аристотель, дали базовые ответы на эти вопросы задолго до появления компьютеров. В действительности кажется вполне вероятным, что если бы Аристотель получил доступ к компьютеру (и электроэнергии, разумеется), то стал бы исследователем ИИ. Ответ Аристотеля, заново данный Маккарти, состоял в использовании формальной логики>Б как основы знания и рассуждения.
Для компьютерной науки по-настоящему важны два типа логики. Первая, так называемая пропозиционная, или Булева логика, была известна грекам, а также древнекитайским и индийским философам. Это тот же язык, что использует логические соединения «и», «нет» и т. д., составляющие структуру компьютерных чипов. В самом буквальном смысле современный микропроцессор — это просто очень большое математическое выражение, в сотни миллионов страниц, написанное на языке пропозиционной логики. Второй тип логики, тот, что Маккарти предложил для ИИ, называется