Macroprogramming: Difference between revisions

Content deleted Content added
OAbot (talk | contribs)
m Open access bot: arxiv, doi, hdl updated in citation with #oabot.
Fixed grammar
Tags: canned edit summary Mobile edit Mobile app edit iOS app edit App section source
 
(8 intermediate revisions by 7 users not shown)
Line 1:
{{Short description|Programming paradigm to program distributed systems with a single program by a global perspective.}}
{{distinguish|Macro (programming)}}
 
{{Programming paradigms}}
 
In [[computer science]], '''macroprogramming''' is a [[programming paradigm]]
aimed at expressing the macroscopic, global behaviour of an entire system of agents or computing devices.<ref name="Casadei 2023">{{cite journal | last=Casadei | first=Roberto | title=Macroprogramming: Concepts, State of the Art, and Opportunities of Macroscopic Behaviour Modelling | journal=ACM Computing Surveys | publisher=Association for Computing Machinery (ACM) | date=2023-01-11 | volume=55 | issue=13s | pages=1–37 | issn=0360-0300 | doi=10.1145/3579353 | page=| s2cid=245837830 | arxiv=2201.03473 }}</ref>
In macroprogramming, the local programs for the individual components of a [[distributed system]] are compiled or interpreted from a ''macro-program'' typically expressed by a system-level perspective or in terms of the intended global goal.<ref name="Casadei 2023" />
The aim of macroprogramming approaches is to support expressing the macroscopic interactive behaviour of a whole distributed system of computing devices or [[software agent|agents]] in a single program, or, similarly, to promote their [[collective intelligence]].<ref name="CI 2023">{{cite journal | last=Casadei | first=Roberto | title=Artificial Collective Intelligence Engineering: A Survey of Concepts and Perspectives | journal=Artificial Life | publisher=MIT Press | date=2023-11-01 | volume=29 | issue=4 | pages=433–467 | issn=0360-0300 | doi=10.1162/artl_a_00408 | arxiv=2304.05147 }}</ref>
It hasis not to be confused with [[Macro (computer science)|macros]], the mechanism often found in programming languages (like [[C (programming language)|C]] or [[Scala (programming language)|Scala]]) to express substitution rules for program pieces.
 
Macroprogramming originated in the context of [[wireless sensor network]] programming<ref name="Newton Welsh 2004 p. ">{{cite conference | last1=Newton | first1=Ryan | last2=Welsh | first2=Matt | title=Proceeedings of the 1st international workshop on Data management for sensor networks in conjunction with VLDB 2004 - DMSN '04 | chapter=Region streams | publisher=ACM Press | publication-place=New York, New York, USA | year=2004 | doi=10.1145/1052199.1052213 | page=78}}</ref><ref name="Newton Morrisett Welsh 2007 p. ">{{cite conference | last1=Newton | first1=Ryan | last2=Morrisett | first2=Greg | last3=Welsh | first3=Matt | title=Proceedings of the 6th international conference on Information processing in sensor networks - IPSN '07 | chapter=The regiment macroprogramming system | publisher=ACM Press | publication-place=New York, New York, USA | year=2007 | doi=10.1145/1236360.1236422 | page=489| isbn=978-1-59593-638-7 }}</ref><ref name="Gummadi Gnawali Govindan 2005 pp. 126–140">{{cite book | last1=Gummadi | first1=Ramakrishna | last2=Gnawali | first2=Omprakash | last3=Govindan | first3=Ramesh | title=Distributed Computing in Sensor Systems | chapter=Macro-programming Wireless Sensor Networks Using Kairos | publisher=Springer Berlin Heidelberg | publication-place=Berlin, Heidelberg | year=2005 | isbn=978-3-540-26422-4 | issn=0302-9743 | doi=10.1007/11502593_12 | pages=126–140}}</ref>
Line 16 ⟶ 14:
== Context and motivation ==
 
Programming [[distributed systems]], [[multi-agent systems]], and [[collectives]] of software agents (e.g., [[swarm robotics|robotic swarms]]) is difficult, for many issues (like communication, concurrency, and failure) have to be properly considered. In particular, a general recurrent problem is how to induce the intended global behaviour by defining the behaviour of the individual components or agents involved. The problem can be addressed through learning approaches, such as [[multi-agent reinforcement learning]], or by manually defining the control program driving each component. However, addressing the problem by a fully individual (or (single-node) perspective may be error-prone, because it is generally difficult to foresee the overall behaviour emerging from complex networks of activities and interactions (cf. [[complex systems]] and [[emergence]]). Therefore, researchers have started investigated ways to raise the abstraction level, promoting programming of distributed systems by a more global perspective or in terms of the overall goal to be collectively attained.
 
== Examples ==
Line 112 ⟶ 110:
 
{{reflist}}
 
{{Programming paradigms navbox}}
 
[[Category:Programming paradigms]]