Efficient Execution of Declarative Programs

نویسنده

  • Matthew Frank
چکیده

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.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

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