Efficient Execution of Declarative Programs
نویسنده
چکیده
Memoization is an optimization that provides asymptotic speedups, automatically achieving many of the benefits of dynamic programming. Memoization, however, trades off reduced execution time for additional required storage. This additional storage requirement can be reduced somewhat by using several techniques from incrementalization. The first technique, called pruning, statically identifies the set of cached results which are still required at any particular program point, allowing the remainder to be discarded. The second technique dynamically tracks dependencies, allowing a cached result to be reused in a broader set of contexts. This paper suggests that it would be possible to provide a generic graph library with a declarative interface in a traditional imperative programming language such as Java or C++. This library could be implemented using memoization and a dynamic version of pruning. This would enable users of traditional programming languages to program at a higher level of abstraction while still achieving the efficiency they require.
منابع مشابه
Control Generation for Logic Programs
A basic requirement of declarative programming is to free the programmer from the need to manually insert control annotations into the program. Here we study the execution of logic programs under coroutining computation rules. We define a new systematic approach to when-declarations; we introduce a class of simple, yet powerful, instantiation based computation rules which are particularly easy ...
متن کاملProposing an Efficient Software-Based Method for Enhancing the Reliability of Critical Application Robot
Robots play such remarkable roles in humans’ modern lives that performing many tasks without them isimpossible. Using robotic systems is gradually increasing the tasks allocated to them and they are becomingmore complex and critical. Software reliability is one of the most significant requirements of robots. Forenhancing reliability, systems should be inherently designed to be tolerable of soft...
متن کاملDeclarative Diagnosis of Floundering
Many logic programming languages have delay primitives which allow coroutining. This introduces a class of bug symptoms — computations can flounder when they are intended to succeed or finitely fail. For concurrent logic programs this is normally called deadlock. Similarly, constraint logic programs can fail to invoke certain constraint solvers because variables are insufficiently instantiated ...
متن کاملImplementing Network Protocols as Distributed Logic Programs
Declarative networking [2, 4, 3, 1] is an application of database query-language and processing techniques to the domain of networking. Declarative networking is based on the observation that network protocols deal at their core with computing and maintaining distributed state (e.g., routes, sessions, performance statistics) according to basic information locally available at each node (e.g., n...
متن کاملJavaDD: a Declarative Debugger for Java
This paper presents a declarative approach to the debugging of object-oriented programs and illustrates the methodology through an extension of a novel interactive visualization system for Java developed in our previous research. Unlike traditional “procedural” debugging, we use the term “declarative debugging” to refer to a flexible set of queries on individual execution states and also over t...
متن کاملAggregation in Functional Query Languages
We consider the problem of improving the computational efficiency of a functional query language. Our focus is on aggregate operations which have proven to be of practical interest in database querying. Since aggregate operations are typically non-monotonic in nature, recursive programs making use of aggregate operations must be suitably restricted in order that they have a well-defined meaning...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2001