kpmy 10 سال پیش
والد
کامیت
3f73bc5967
1فایلهای تغییر یافته به همراه24 افزوده شده و 0 حذف شده
  1. 24 0
      _posts/2015-07-25-Концепции-LOMO.md

+ 24 - 0
_posts/2015-07-25-Концепции-LOMO.md

@@ -0,0 +1,24 @@
+---
+layout: post
+---
+
+Многие решения касаемо синтаксиса взяты из LEAF. Минимум разделителей, прямые заимствования из Оберона.
+
+Агентные системы тоже уже много где описаны. 
+В данном случае агенту соответствует одна программная единица - модуль. Модуль может содержать набор переменных и правила вычисления их значений (инструкции).
+
+Так как язык декларативный, инструкций существует ровно одна - присвоение. При этом присвоение каждой переменной может быть выполнено лишь один раз. Неважен и порядок следования присвоений, так как предполагается, что они будут выполнены по сути одновременно. 
+
+При этом, конечно, на реальных машинах будет задействована блокировка чтения значений из переменных до момента записи вычисленных значений, однако в работе с LOMO не стоит учитывать на этот факт, так как нарушается абстракция.
+
+При таком подходе иначе выглядит модульность. Модули всё так же представляют клиентам переменные для чтения и записи, но при этом все модули исполняются параллельно, а для клиентов модули представлены как экземпляры объектов, хранящиеся в переменных. Работа всех модулей начинается одновременно, и здесь действует то же правило доступа к переменным, что и внутри одного модуля, чтение значения возможно только после записи. 
+
+Таким образом реализуется принцип *передачи сообщений* между агентами. В явном виде описывать передачу сообщений нет смысла, присвоение значения конкретной переменной конкретного модуля и есть передача сообщения. Такой способ также способствует унификации инструкций - передача вовне и локальное присвоение становятся единой инструкцией.
+
+При этом существенно разделяют переменные только для чтения и переменные только для записи. 
+
+Таким образом реализуется *восприятие* и *активность* агента. Агент воспринимает входящие значения и порождает новых агентов и исходящие сообщения.
+
+Отдельным видом переменных является регистр. Если обычные переменные возникают при старте агента и пропадают при его исчезновении, то регистры способны запомнить информацию между циклами жизни агента. При этом принцип единственного присвоения распространяется и на регистры. А так же значение, присвоенное регистру станет доступно для чтения только в следующей жизненном цикле агента. 
+
+Таким образом реализуется внутреннее состояние агента/системы агентов.