Content deleted Content added
Robyonrails (talk | contribs) m Improve incipit |
Fixed grammar Tags: canned edit summary Mobile edit Mobile app edit iOS app edit App section source |
||
(11 intermediate revisions by 8 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 |
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
Macroprogramming originated in the context of [[wireless sensor network]] programming<ref name="Newton Welsh 2004 p. ">{{cite conference |
and found renewed interest in the context of the [[Internet of Things]]<ref name="Júnior Santana Bulcão-Neto Porter 2022 pp. 54–65">{{cite journal |
Macroprogramming shares similar goals (related to programming a system by a global perspective) with [[multitier programming]], [[choreographic programming]], and [[aggregate computing]].
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
== Examples ==
Line 22 ⟶ 20:
=== ScaFi ===
The following program in the ScaFi aggregate programming language <ref name="Casadei Viroli Aguzzi Pianini 2022 p=101248">{{cite journal |
<syntaxhighlight lang="scala" line="1">
Line 83 ⟶ 81:
=== PyoT ===
The following program in PyoT <ref name="Azzara Alessandrelli Bocchino Petracca 2014 p. ">{{cite conference |
<syntaxhighlight lang="python" line="1">
Line 96 ⟶ 94:
=== TinyDB ===
In TinyDB,<ref name="Madden Franklin Hellerstein Hong 2005 pp. 122–173">{{cite journal |
<syntaxhighlight lang="sql" line="1">
Line 112 ⟶ 110:
{{reflist}}
▲{{Programming paradigms navbox}}
[[Category:Programming paradigms]]
|