Content deleted Content added
Citation bot (talk | contribs) Alter: title, page. Add: pages, isbn, chapter, hdl, s2cid, authors 1-1. Removed parameters. Some additions/deletions were parameter name changes. | Use this bot. Report bugs. | Suggested by Abductive | #UCB_webform 2910/3850 |
Fixed grammar Tags: canned edit summary Mobile edit Mobile app edit iOS app edit App section source |
||
(10 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 | 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=
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 | last1=Júnior | first1=Iwens G. S. | last2=Santana | first2=Thalia S. de | last3=Bulcão-Neto | first3=Renato de F. | last4=Porter | first4=Barry F. | title=The state of the art of macroprogramming in IoT: An update | journal=Journal of Internet Services and Applications | publisher=Sociedade Brasileira de Computacao - SB | volume=13 | issue=1 | date=2022-11-18 | issn=1869-0238 | doi=10.5753/jisa.2022.2372 | pages=54–65| s2cid=254365168 | doi-access=free }}</ref> and [[swarm robotics]].<ref name="Mottola Picco 2011 pp. 1–51">{{cite journal | last1=Mottola | first1=Luca | last2=Picco | first2=Gian Pietro | title=Programming wireless sensor networks | journal=ACM Computing Surveys | publisher=Association for Computing Machinery (ACM) | volume=43 | issue=3 | year=2011 | issn=0360-0300 | doi=10.1145/1922649.1922656 | pages=1–51| hdl=11311/635123 | s2cid=1837434 | hdl-access=free }}</ref><ref name="Casadei 2023" />
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 | last1=Casadei | first1=Roberto | last2=Viroli | first2=Mirko | last3=Aguzzi | first3=Gianluca | last4=Pianini | first4=Danilo | title=ScaFi: A Scala DSL and Toolkit for Aggregate Programming | journal=SoftwareX | publisher=Elsevier BV | volume=20 | year=2022 | issn=2352-7110 | doi=10.1016/j.softx.2022.101248 | page=101248| hdl=11585/903248 | hdl-access=free }}</ref> [https://scafi.github.io/] defines the loop control logic needed to compute a channel (a Boolean field where the devices yielding <code>true</code> are those connecting, through a hop-by-hop path, a source device to a target device) across a large set of situated devices interacting with neighbours.
<syntaxhighlight lang="scala" line="1">
Line 112 ⟶ 110:
{{reflist}}
▲{{Programming paradigms navbox}}
[[Category:Programming paradigms]]
|