Get 20M+ Full-Text Papers For Less Than $1.50/day. Start a 14-Day Trial for You or Your Team.

Learn More →

Freeing the essence of a computation

Freeing the essence of a computation Freeing the Essence of a Computation 1 Kenneth R. Anderson BBN Systems and Technologies, 10 Moutlon St. Cambridge, MA, 02138 KAnderson@bbn.com In theory, abstraction is important, but in practice, so is performance. Thus, there is a struggle between an abstract description of an algorithm and its efficient implementation. This struggle can be mediated by using an interpreter or a compiler. An interpreter takes a program that is a high level abstract description of an algorithm and applies it to some data. Don't think of an interpreter as slow. An interpreter is important enough to software that it is often implemented in hardware. A compiler takes the program and produces another program, perhaps in another language. The resulting program is applied to some data by another interpreter. Partial evaluation is a less widely known technique that is between interpretation and compilation. 2 A partial evaluator applies a program to part of its input data. As much of the program as possible is executed and the result is a simplified program that can be applied to the remaining data. Thus, the partial application: 3 (partial-apply (lambda (a b) (if (> a 5) (+ b 3) (+ b 2))) (list 7 http://www.deepdyve.com/assets/images/DeepDyve-Logo-lg.png ACM SIGPLAN Lisp Pointers Association for Computing Machinery

Freeing the essence of a computation

ACM SIGPLAN Lisp Pointers , Volume VIII (2) – May 5, 1995

Loading next page...
 
/lp/association-for-computing-machinery/freeing-the-essence-of-a-computation-4qjjh0bMYo

References (20)

Publisher
Association for Computing Machinery
Copyright
Copyright © 1995 by ACM Inc.
ISSN
1045-3563
DOI
10.1145/224133.224136
Publisher site
See Article on Publisher Site

Abstract

Freeing the Essence of a Computation 1 Kenneth R. Anderson BBN Systems and Technologies, 10 Moutlon St. Cambridge, MA, 02138 KAnderson@bbn.com In theory, abstraction is important, but in practice, so is performance. Thus, there is a struggle between an abstract description of an algorithm and its efficient implementation. This struggle can be mediated by using an interpreter or a compiler. An interpreter takes a program that is a high level abstract description of an algorithm and applies it to some data. Don't think of an interpreter as slow. An interpreter is important enough to software that it is often implemented in hardware. A compiler takes the program and produces another program, perhaps in another language. The resulting program is applied to some data by another interpreter. Partial evaluation is a less widely known technique that is between interpretation and compilation. 2 A partial evaluator applies a program to part of its input data. As much of the program as possible is executed and the result is a simplified program that can be applied to the remaining data. Thus, the partial application: 3 (partial-apply (lambda (a b) (if (> a 5) (+ b 3) (+ b 2))) (list 7

Journal

ACM SIGPLAN Lisp PointersAssociation for Computing Machinery

Published: May 5, 1995

There are no references for this article.