使用数据流约束的响应式命令式编程
摘要:数据流语言提供了对动态应用程序中对象之间约束的自然支持,其中程序需要对环境的变化做出高效反应。研究人员长期以来一直探索如何将数据流约束嵌入过程性语言中以利用其优势。然而,先前的混合命令式/数据流系统需要语法扩展或特定的数据类型库来将命令式程序与数据流求解器绑定。在本文中,我们提出了一种新颖的方法,将这两种范式顺利地结合起来,不对程序员施加不必要的负担。在我们的框架中,程序员可以定义主机命令式语言的普通命令,用于对存储在“反应式”内存位置中的对象之间的约束进行强制。反应式对象可以是主机语言中的任何合法类型,包括原始数据类型、指针、数组和结构。每当输入内存位置发生变化时,约束会自动重新执行,使程序的行为类似于电子表格,其中某些变量的值取决于其他变量的值。约束求解机制通过修改读取和修改对象的主机语言的基本操作的语义来透明地处理。我们提供了一个形式化的语义,并描述了我们的技术在C/C++中的具体实现,展示了如何使用现成的编译器在常规平台上高效地实现它。我们讨论了与反应式情景相关的应用,包括增量计算、观察者设计模式和数据结构修复。我们将我们的实现的性能与特定问题的特定更改传播算法以及语言中心方法(如自适应计算和主题/观察者通信机制)进行了比较,结果显示所提出的方法在实践中是高效的。
作者:Camil Demetrescu, Irene Finocchi, Andrea Ribichini
论文ID:1104.2293
分类:Programming Languages
分类简称:cs.PL
提交时间:2011-04-13