Когда вы создаете программу, вы на самом деле описываете в коде свои знания о предметной области приложения.
1.
Модель данных – набор структур данных и связей между ними. Например, данные для хранения информации о страницах в текстовом редакторе MS Word. Или о таблицах в MS Excel, данные форматирования веб-страниц в браузере и т.п.
2.
Алгоритм поиска решения. Обычно жестко заданный. Как по запросу пользователя вернуть результат обработки данных.
3.
Визуальное представление модели данных. Как отображать на экране страницы MS Word или картинки Photoshop.
4.
Элементы управления: рычажки, рукоятки и кнопочки, посредством которых пользователь передает свои запросы алгоритму поиска решения.Подобные системы – чисто реактивные. Нажал кнопку – получил ответ. Это значит, что они не осознают окружающей действительности и поэтому у них практически отсутствуют возможности приспосабливаемости.
В агентах все совсем по-другому.
Не думай об объекте, думай о наблюдателе!
По пунктикам:1. Агент по определению способен воспринимать свою окружающую среду. Если в среду агента входите Вы, значит он может воспринимать Вас. Это автоматически приводит к тому, что у агента есть модель внешнего мира. Чем сложнее и изощреннее эта модель, тем больше информации агент может использовать в своей деятельности.
2. У агента (или группы агентов) есть цели – ожидаемые результаты, которых нужно достичь, решив стоящие перед ними задачи. Система целей агента также может быть весьма сложной. Цели могут быть заданы извне агента или порождаются в результате некой "умственной деятельности" агента.
3. Для достижения целей агент может совершать в среде определенные действия. Агент, конечно, может пытаться совершать действия наобум, методом "научного тыка". Авось, повезет и цель будет достигнута. Но это полный перебор и потому очень неэффективно. Поэтому агент должен обладать знаниями о наборе своих возможных действий, необходимых условиях для их совершения и возможных последствиях. При таком подходе Вы даете агенту только знания о целях, об окружающем мире и его возможностях, конкретная уникальная последовательность действий, приводящая к цели, ищется агентом каждый раз с учетом текущих внутренних и внешних условий. Алгоритм даже может меняться и корректироваться по ходу выполнения!
Основная проблема, связанная с разработкой агентных систем, состоит в том, что разработчик должен быть не только первоклассным инженером в области разработки ПО, но также и специалистом по искусственному интеллекту.
почему агенты?
читать дальшеАгенты как эволюция примитивного ПО
Сестра, скальпель! Сестра, зажимы! Кто-нибудь! Дайте же мне, наконец, этот чертов топор!!!
Примитивное ПО – это программные системы, с которыми сталкивается обычный рядовой пользователь в процессе своей тщетной жизни. Примеры: офисное ПО, ПО бытовых устройств, и т.д. и т.п. Вопрос о ПО, управляющем шаттлами и атомными реакторами, оставляю благодарному читателю в качестве упражнения. А мы же дальше рассмотрим эволюцию массовых программных систем в исторической перспективе.
Различные способы взаимодействия пользователя и программы.
1. До Windows – были линейные программы: куча мелких утилит и консоль. Пользователь – программист, должен знать API (параметры командной строки) + скриптовый язык (шелл-скрипт). Это было царство обработки информации – подаем на вход данные и через часы/дни/месяцы получаем результат их обработки.
2. В эпоху Windows – появились интерактивные программы: мелкие утилиты (или обрабатывающих процедур в коде), увязанных между собой единой моделью данных. Все это "богатство" привязано к красивому интерфейсу пользователя и реализует так называемые варианты использования – типичные сценарии взаимодействия пользователя с программой, или функциональные фичи. Например, открытие файла, отсылку электронной почты. Типичный пример таких программ – текстовый редактор. Или браузер. Или… практически все ПО, с которым Вы встречались до этого момента.
Пользователь подобных систем – не программист, но должен знать GUI (когда, куда и чем тыкать). Это есть царство Инструментов. Этап характеризуется огромными усилиями по повышению удобства использования и интеграции: кто из производителей сумеет в один продукт впихнуть больше функциональности, которой удобно пользоваться. Но эта гонка не бесконечна, так как существует естественный предел количества "фич" в программе, после которого ей уже становится просто неудобно пользоваться человеку.
3. После Windows – агенты и их интеллектуальные интерфейсы. Система через естественные интерфейсы (речь, видео) сама узнает или уточняет у пользователя, что ему, бедному, нужно и сама пытается выполнить задачу, используя при этом те самые огромные количества накопленных "фич" и взаимодействуя с другими агентами. Пользователь вообще ничего не должен знать: все что нужно – расскажут и покажут, сделают за него. Это будет Царство Помощников (синонимы: Золотой Век, Святой Грааль, Серебряная Пуля Программирования, Сингулярность, Апокалипсис,СудныйДень).
Выводы:
• агенты отличаются самым главным – способом взаимодействия с пользователем;
• агенты сами решают поставленные перед ними задачи.
В общем и целом, на уровне одного-единственного агента все обстоит именно так. Обо всех тех любопытных подробностях, когда агенты собираются толпой и начинают давить нас интеллектом, это уже мультиагентные системы.