Incremental computation aims to compute more efficiently on changed input by reusing previously computed results. We give a high-level overview of works on incremental computation, and highlight the essence underlying all of them, which we call incrementalization -- the discrete counterpart of differentiation in calculus. We present the gist of a systematic method for incrementalization, and a systematic method centered around it -- called Iterate-Incrementalize-Implement -- for program design and optimization, as well as algorithm design and optimization. We illustrate the methods with example applications in arithmetic computations, recursive functions, graph analysis, and distributed algorithms. At a meta-level, with historical contexts and for future directions, we stress the power of high-level data, control, and module abstractions in developing new and better algorithms and programs as well as their precise complexities.
翻译:增量计算旨在通过复用先前计算结果,更高效地处理变更后的输入。本文对增量计算的相关研究进行了高层概览,并揭示了其共同本质——我们称之为“增量化”,即微积分中微分运算的离散对应。我们阐述了系统化增量化方法的核心思想,以及围绕该方法构建的系统化方法论——称为“迭代-增量化-实现”,该方法适用于程序设计与优化,以及算法设计与优化。我们通过算术计算、递归函数、图分析和分布式算法中的实例应用来阐释这些方法。在元层面上,结合历史背景与未来方向,我们强调高层数据抽象、控制抽象和模块抽象在开发新型高效算法与程序及其精确复杂度分析中的重要作用。