~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 5C99FE0D714E335105326DE37404108B__1710986220 ✰
Заголовок документа оригинал.:
✰ Macroprogramming - Wikipedia ✰
Заголовок документа перевод.:
✰ Макропрограммирование — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Macroprogramming ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/5c/8b/5c99fe0d714e335105326de37404108b.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/5c/8b/5c99fe0d714e335105326de37404108b__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:27:29 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 21 March 2024, at 04:57 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Макропрограммирование — Википедия Jump to content

Макропрограммирование

Из Википедии, бесплатной энциклопедии

В информатике . макропрограммирование — это парадигма программирования направленный на выражение макроскопического, глобального поведения всей системы агентов или вычислительных устройств. [1] В макропрограммировании локальные программы для отдельных компонентов распределенной системы компилируются или интерпретируются из макропрограммы, обычно выражаемой с точки зрения системного уровня или с точки зрения намеченной глобальной цели. [1] Целью подходов макропрограммирования является поддержка выражения макроскопического интерактивного поведения целой распределенной системы вычислительных устройств или агентов в одной программе или, аналогичным образом, содействие их коллективному разуму . [2] Его не следует путать с макросами — механизмом, часто встречающимся в языках программирования (таких как C или Scala ) для выражения правил замены частей программы.

Макропрограммирование зародилось в контексте беспроводных сенсорных сетей. программирования [3] [4] [5] и обнаружил возобновление интереса к Интернету вещей. [6] и роевая робототехника . [7] [1]

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

и мотивация Контекст

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

Примеры [ править ]

СкаФи [ править ]

Следующая программа на совокупном языке программирования ScaFi. [8] [1] определяет логику управления циклом, необходимую для вычисления канала (логическое поле, в котором устройства, выдающие true это те, которые соединяют по шаговому пути исходное устройство с целевым устройством) через большой набор расположенных устройств, взаимодействующих с соседями.

класс   SelfContainedChannel   расширяет   AggregateProgram   с помощью   SensorDefinitions   { 
   def   isObstacle   =   sense  [  Boolean  ](  "препятствие"  ) 
   def   isSource   =   sense  [  Boolean  ](  "source"  ) 
   def   isDestination   =   sense  [  Boolean  ](  "target"  ) 
  
   override   def   main  ():   Boolean   =  
   ветвь  (  isObstacle  ) {   false   }   канал  (  isSource  ,   isDestination  ,   5  )   } 

   def   канал  (  src  :   Boolean  ,   dest  :   Boolean  ,   width  :   Double  ):   Boolean   = 
     dilate  (  distanceTo  (  src  )   +   distanceTo  (  dest  )   <=   distanceBetween  (  src  ,  dest  ),   ширина  ) 

   тип   OB  [  T  ]   =   Встроенные функции  .   Ограниченный  [  T  ] 
   def   G  [  V  :  OB  ](  src  :   Boolean  ,   поле  :   V  ,   Acc  :   V  =>  V  ,   метрика  :   =>  Double  ):   V   = 
     Rep  (   (  Double  .  MaxValue  ,   field  )   ) {   dv   => 
       mux  (  src  )   {   (  0,0  ,   поле  )   }   { 
         minHoodPlus   { 
           val   (  d  ,   v  )   =   nbr   {   (  dv  .  _1  ,   dv  .  _2  )   } 
           (  d   +   metric  ,   acc  (  v  )) 
         }   }   }.   _2 

   def   distanceTo  (  источник  :   Boolean  ):   Double   = 
     G  [  Double  ](  source  ,   0  ,   _   +   nbrRange  (),   nbrRange  ())) 

   def   Broadcast  [  V  :  OB  ](  source  :   Boolean  ,   поле  :   V  ):   V   = 
     G  [  V  ](  source  ,   field  ,   x  =>  x  ,   nbrRange  ()) 

   def   distanceBetween  (  source  :   Boolean  ,   target  :   Boolean  ):   Double   = 
     широковещательная передача  (  источник  ,   градиент  (  target  )) 

   def   dilate  (  регион  :   Boolean  ,   ширина  :   Double  ):   Boolean   = 
     градиент  (  регион  )   <   ширина 
 } 

Что интересно отметить, так это то, что channel функция, а также функции, которые используются для ее реализации, а именно distanceTo, distanceBetween, dilate, broadcastи т. д. можно интерпретировать не только с точки зрения индивидуального поведения устройства, но и с макроскопической точки зрения . В действительности, например, distanceTo(s) используется для вычисления поля минимальных расстояний от ближайшего устройства, для которого выражение s урожайность true: по сути, это распределенная структура данных , которая поддерживается за счет обработки и связи с соседями самоорганизующимся способом. Семантически такие функции определяют поведение макроуровня (или коллектива), которое создает структуру данных макроуровня (или коллектива). Такие функции/поведения макроуровня можно скомпоновать вместе, чтобы получить другую, более сложную функцию/поведения макроуровня.

полк [ править ]

Следующая программа на языке полка [4] может использоваться для расчета средней температуры, воспринимаемой всей системой:

% определение функции 
 doSum   ::   float   (  float  ,   int  )   ->   (  float  ,   int  ); 
  doSum  (  температура  ,   (  сумма  ,   счетчик  ))   {   (  сумма  +  температура  ,   счетчик  +  1  )   } 

 % функциональная реактивная программная логика 
 tempRegion   =   rmap  (  fun  (  node  ) {   смысл  (  "температура"  ,   node  )   },   world  ); 
  sumSignal   =   rfold  (  doSum  ,   (  0.0  ,   0  ),   tempRegion  ) 
 avgSignal   =   smap  (  fun  ((  sum  ,  count  )) {   sum   /   count   },   sumSignal  ) 

 BASE   <-   avgSignal   % переместить такую ​​информацию на базовую станцию 

ПЁТ [ править ]

Следующая программа в PyoT [9] может использоваться для включения вентилятора, если средняя температура, рассчитанная несколькими датчиками, превышает определенный порог.

температуры   =   Ресурс  .   объекты  .   фильтр  (  title  =  «temp»  ) 
 результаты   =   [  temp  .   GET  ()   для   температуры   в   температурах  ] 
 avg   =   sum  (  results  )   /   len  (  results  ) 
 TEMP_THRESHOLD   =   24 
 , если   avg   >   TEMP_THRESHOLD  : 
     Ресурс  .   объекты  .   получить  (  title  =  «фанат»  )  .   Надевать  "  ) 

TinyDB [ править ]

В TinyDB [10] используется подход макропрограммирования, ориентированный на данные, при котором программист пишет запрос, который превращается в одноузловые операции и маршрутизацию в беспроводной сенсорной сети.

ВЫБЕРИТЕ   nodeId   ,   температура   ГДЕ   температура   >   k   ОТ   датчиков   ПЕРИОД   ВЫБОРКИ   5   минут 

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б с Касадеи, Роберто (11 января 2023 г.). «Макропрограммирование: концепции, современное состояние и возможности макроскопического моделирования поведения». Обзоры вычислительной техники ACM . 55 (13с). Ассоциация вычислительной техники (ACM): 1–37. arXiv : 2201.03473 . дои : 10.1145/3579353 . ISSN   0360-0300 . S2CID   245837830 .
  2. ^ Касадеи, Роберто (01 ноября 2023 г.). «Инженерия искусственного коллективного разума: обзор концепций и перспектив». Искусственная жизнь . 29 (4). Массачусетский технологический институт Пресс: 433–467. arXiv : 2304.05147 . дои : 10.1162/artl_a_00408 . ISSN   0360-0300 .
  3. ^ Ньютон, Райан; Уэлш, Мэтт (2004). «Региональные потоки». Материалы 1-го международного семинара по управлению данными для сенсорных сетей совместно с VLDB 2004-DMSN '04 . Нью-Йорк, Нью-Йорк, США: ACM Press. п. 78. дои : 10.1145/1052199.1052213 .
  4. ^ Перейти обратно: а б Ньютон, Райан; Моррисетт, Грег; Уэлш, Мэтт (2007). «Система макропрограммирования полка». Материалы 6-й международной конференции «Обработка информации в сенсорных сетях» IPSN '07 . Нью-Йорк, Нью-Йорк, США: ACM Press. п. 489. дои : 10.1145/1236360.1236422 . ISBN  978-1-59593-638-7 .
  5. ^ Гуммади, Рамакришна; Гнавали, Омпракаш; Говиндан, Рамеш (2005). «Макропрограммирование беспроводных сенсорных сетей с использованием Kairos». Распределенные вычисления в сенсорных системах . Берлин, Гейдельберг: Springer Berlin Heidelberg. стр. 126–140. дои : 10.1007/11502593_12 . ISBN  978-3-540-26422-4 . ISSN   0302-9743 .
  6. ^ Джуниор, Ивенс Г.С.; Сантана, Талия С. де; Булькао-Нето, Ренато де Ф.; Портер, Барри Ф. (18 ноября 2022 г.). «Состояние макропрограммирования в IoT: обновление» . Журнал Интернет-услуг и приложений . 13 (1). Sociedade Brasileira de Computacao - SB: 54–65. дои : 10.5753/jisa.2022.2372 . ISSN   1869-0238 . S2CID   254365168 .
  7. ^ Моттола, Лука; Пикко, Джан Пьетро (2011). «Программирование беспроводных сенсорных сетей». Обзоры вычислительной техники ACM . 43 (3). Ассоциация вычислительной техники (ACM): 1–51. дои : 10.1145/1922649.1922656 . hdl : 11311/635123 . ISSN   0360-0300 . S2CID   1837434 .
  8. ^ Касадеи, Роберто; Вироли, Мирко; Агуцци, Джанлука; Пианини, Данило (2022). «ScaFi: Scala DSL и набор инструментов для совокупного программирования». Программное обеспечениеX . 20 . Elsevier BV: 101248. doi : 10.1016/j.softx.2022.101248 . hdl : 11585/903248 . ISSN   2352-7110 .
  9. ^ Аззара, Андреа; Алессандрелли, Даниэле; Боккино, Стефано; Петракка, Маттео; Пагано, Паоло (2014). «PyoT, среда макропрограммирования для Интернета вещей». Материалы 9-го Международного симпозиума IEEE по промышленным встраиваемым системам (SIES 2014) . IEEE. стр. 96–103. дои : 10.1109/sies.2014.6871193 . ISBN  978-1-4799-4023-3 .
  10. ^ Мэдден, Сэмюэл Р.; Франклин, Майкл Дж.; Хеллерштейн, Джозеф М.; Хун, Вэй (2005). «TinyDB: система обработки запросов для сенсорных сетей». Транзакции ACM в системах баз данных . 30 (1). Ассоциация вычислительной техники (ACM): 122–173. дои : 10.1145/1061318.1061322 . ISSN   0362-5915 . S2CID   2239670 .
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 5C99FE0D714E335105326DE37404108B__1710986220
URL1:https://en.wikipedia.org/wiki/Macroprogramming
Заголовок, (Title) документа по адресу, URL1:
Macroprogramming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)