Агент-ориентированный дизайн в реальном мире? - PullRequest
7 голосов
/ 07 марта 2011

Мы узнали о агентно-ориентированном программировании в моем классе разработки программного обеспечения, и мой профессор является его сторонником, работая с ним всю свою жизнь.

Мой вопрос касается истинных преимуществ / недостатков использования Агентов как с точки зрения дизайна, так и с точки зрения реализации. С точки зрения моего профессора, агенты могут воссоздать очень сложные операции гораздо проще, чем с помощью обычных методов ООП. Но мне кажется, что агенты одинаково громоздки для программирования в сложных средах. Они подвержены различным проблемам параллелизма, синхронизации и целостности данных. С точки зрения кодера, код агента довольно запутанный и его гораздо сложнее понять, чем обычный код ООП.

Может ли кто-нибудь дать мне представление о том, как программные агенты рассматриваются в реальной разработке и какие преимущества / недостатки находятся за пределами академических занятий?

Ответы [ 2 ]

10 голосов
/ 08 марта 2011

Использование термина «агенты» в ИИ (что, скорее всего, то, что вы имеете в виду, это наиболее распространенный академический справочник) на самом деле является синонимом «программы, действующей от имени пользователя».Агент считается более привлекательным, потому что это несколько персонифицированный термин, являющийся доверенным лицом для пользователя;также, как правило, это связано с функциональностью более высокого порядка (планирование для агентов, обучение для агентов, автономные агенты и т. д.).Подробнее о происхождении термина в Википедии:

http://en.wikipedia.org/wiki/Software_agent

Учитывая, что термин «агент» больше относится к цели и типу программного обеспечения, а не к тому, как он естьзапрограммировано.ООП больше связано с тем, как оно технически спроектировано / реализовано.

Так что нет ничего плохого в том, чтобы проектировать своих агентов, используя принципы ООП.Эти два предмета не являются взаимоисключающими.

Кроме того, имейте в виду (как некоторые из вышеупомянутых комментариев ссылаются, и я согласен с ними): использование «агентов» в академических кругах - более романтичный термин;большая часть программного обеспечения действует от имени какого-либо пользователя (-ей), и поэтому во многих вещах есть функциональность агента.В конце концов, это всего лишь программное обеспечение, и если вы удалите термин «агент» из нашего коллективного лексикона, вы не станете наказывать за простую разработку / реализацию программного обеспечения.Вы увидите элементы этой же дискуссии на форумах, посвященных агентно-ориентированному программированию, например:

http://ootips.org/agent-orientation.html

0 голосов
/ 15 августа 2018

Чего мне не хватает во всех ответах, и что я думаю, это самые важные различия между агентно-ориентированным программированием и «нормальным» ООП в том, что:

  • AOP - этоболее высокий уровень или «уровень» поверх ООП (часто реализуемый с использованием ООП).

  • AOP - это задача облегчения параллельного (многопоточного) программирования, наличия четко определенного стандартного способа его выполнения (для каждого языка или структуры) и, следовательно, для его более четкой структуры.Функциональность параллелизма реализована в платформе или языке AOP, в то время как многопоточность в ООП оставлена ​​на усмотрение разработчика и может быть реализована любым удобным для него способом (одним из которых может быть AOP: P).

Примеры языков, которые имеют некоторую реализацию, позволяющую использовать AOP «из коробки»: более новые версии NI Labview и Erlang.В вики есть еще примеры.

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

Хороший пример (случайной) актер-ориентированной архитектуры: Интернет.Потому что он состоит из «агентов» (узлов / серверов / клиентов), которые работают одновременно и могут терпеть сбой других серверов и каналов связи.

...