Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Continuous execution: the VisiProg environment
ICSE '85 Proceedings of the 8th international conference on Software engineering
Communications of the ACM
A program data flow analysis procedure
Communications of the ACM
On converting a compiler into an incremental compiler
ACM SIGPLAN Notices
Logic for Problem Solving
Incremental data flow analysis
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Program Flow Analysis: Theory and Application
Program Flow Analysis: Theory and Application
A practical method for syntactic error diagnosis and recovery
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
An experimental investigation of computer program development approaches and computer programming metrics
Least-cost syntactic error repair using extended right context
Least-cost syntactic error repair using extended right context
Incremental data flow analysis based on a unified model of elimination algorithms
Incremental data flow analysis based on a unified model of elimination algorithms
Characterizing software with objective measurements
Characterizing software with objective measurements
Incremental evaluation for a general class of circular attribute grammars
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
INC: a language for incremental computations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Visual representations of executing programs
Journal of Visual Languages and Computing
Proactive detection of collaboration conflicts
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Making offline analyses continuous
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Data debugging with continuous testing
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.00 |
Interpreters replace the edit/compile/run cyle with edit/run. Dynamic computing environments, like spreadsheets, shorten this still more to just edit. So-called "Visiprog" environments, such as Maryland's XED, permit developing normal imperative programs in a dynamic computing environment, XED and similar environments, because they show the results of executing a program after every (reasonable) editing step, raise the issue of efficient incremental execution. Incremental execution optimizations are also applicable to any programming situation, including batch/cards, in which nearly the same program is run many times on nearly the same data. However, the requirement of remembering large amounts of internal state between runs make incremental exectution most natural for interpreted languages. This paper examines some algorithms for incremental execution. Based on the frequency of typical program editing changes, we predict the importance of optimizing certain kinds of incremental execution. We also examine actual speedups obtained in executing programs after subjecting them to these simulated incremental edits under these optimizations. The speedups range from factors of 1.1 to near 10. Finally, we discuss the feasibility of including these optimizations in an actual dynamic computing environment like XED, and in more traditional programming environments.