一句话:提出 neighbours calculus 与“对邻居计算”概念,简化邻域交互的声明式表达,并以 Scala 实现 ScaFi。
面向 IoT 与大规模信息物理系统的聚合编程把设备集合视为整体,按时空全局行为编程,并借助 field calculus 等模型以“邻居场”刻画邻域交互。但邻居场需要专门机制才能与普通值顺畅组合,使聚合程序、库和领域特定语言变得复杂杂乱。本文提出“对邻居计算”(computation against a neighbour)的新概念:聚合程序中某些子表达式的求值会受到邻居中近期对应求值结果的影响。作者将该概念形式化为 neighbours calculus(NC),一种新的 field calculus 变体,并与经典 field calculus 进行细致比较。NC 能自然地支持邻域交互的声明式规范,也便于把场计算作为内部 DSL 嵌入通用编程语言,文中以 Scala 实现 ScaFi 为例,并通过一个边缘计算案例研究展示其表达力。
Recent works in contexts like the Internet of Things (IoT) and large-scale Cyber-Physical Systems (CPS) propose the idea of programming distributed systems by focussing on their global behaviour across space and time. In this view, a potentially vast and heterogeneous set of devices is considered as an "aggregate" to be programmed as a whole, while abstracting away the details of individual behaviour and exchange of messages, which are expressed declaratively. One such a paradigm, known as aggregate programming, builds on computational models inspired by field-based coordination. Existing models such as the field calculus capture interaction with neighbours by a so-called "neighbouring field" (a map from neighbours to values). This requires ad-hoc mechanisms to smoothly compose with standard values, thus complicating programming and introducing clutter in aggregate programs, libraries and domain-specific languages (DSLs). To address this key issue we introduce the novel notion of "computation against a neighbour", whereby the evaluation of certain subexpressions of the aggregate program are affected by recent corresponding evaluations in neighbours. We capture this notion in the neighbours calculus (NC), a new field calculus variant which is shown to smoothly support declarative specification of interaction with neighbours, and correspondingly facilitate the embedding of field computations as internal DSLs in common general-purpose programming languages -- as exemplified by a Scala implementation, called ScaFi. This paper formalises NC, thoroughly compares it with respect to the classic field calculus, and shows its expressiveness by means of a case study in edge computing, developed in ScaFi.
@article{paperbot2245,
title = {Computation Against a Neighbour: Addressing Large-Scale Distribution and Adaptivity with Functional Programming and Scala},
author = {Giorgio Audrito and Roberto Casadei and Ferruccio Damiani and Mirko Viroli},
journal = {Logical Methods in Computer Science},
volume = {Volume 19, Issue 1},
year = {2023},
doi = {10.46298/lmcs-19(1:6)2023}
}