Abstract
This paper attempts to clarify the difference between partial and ordinary computation. Partial computation of a computer program is by definition "specializing a general program based upon its operating environment into a more efficient program". It also shows the usefulness of partial computation. Finally, the formal theory of partial computation, technical problems in making it practical, and its future research problems are discussed.
The main purpose of this paper is to make partial computation effectiveness widely known. However, two new results are also reported:
-
(1)
a partial computation compiler, and
-
(2)
a tabulation technique to terminate partial computation.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
7. References
[Theory and practice of partial computation]
Babich,G.Kh., The DecAS algorithmic language for the solution of problems with incomplete information and its interpreting algorithms. Kibernetika, No., 1974, 61–71 (Russian).
Babich,G.Kh. et al., The Incol algorithmic language for computations over incomplete information. Programmirovanie, No.4, 1976,24–32 (Russian).
Beckman,L. et al., A partial evaluator and its use as a programming tool. Datalogilaboratoriet, Memo 74/34, Uppsala University, Uppsala, 1974 (also: Artificial Intelligence,vol.7, 1976, 319–357).
Chang,C,-L. and Lee, R., Symbolic Logic and Mechanical Theorem-Proving, (Chapter 10.9) Academic Press, 1973.
Dixon,J., The SPECIALIZER, a method of automatically writing computer programs. Div. of computer Res. and Technology, NIH: Bethesda, Md
Emanuelson, P., Performance enhancement in a well-structured pattern matcher through partial evaluation. Linkoping Studies in Science and Technology Dissertations,No.55, Software Systems Research Center,Linkoping University, 1980.
Ershov., A.P., Problems in many-language programming syatems. Language hierarchies and interfaces. LNCS, vol. 46, Springer-Verlag, Heidelberg, 1976, 358–428.
—, On the partial computation principle. Information Processing Letters, No. 2, 1977.
— and Itkin, V.E., Correctness of mixed computation in Algol-like programs. LNCS,Springer-Verlag, Heidelberg, 1977.
— and Grushetsky, V.V., An implementation-oriented method for describing algorithmic languages. Proc. of IFIP 77, 1977.
—,A theoretical principle of system programming, Soviet Math. Dokl. Vol. 18 (1977), No. 2.
—,On the essence of compilation. IFIP Working Conference on formal description of programming concepts, August 1977.
—,Mixed computation in the class of recursive program schema. Acta Cyberneticca, Tom. 4, Fosc. 1, Szeged, 1978.
—,Mixed computation: Potential applications and problems for study, Theoretical Computer Science 18(1982) 41–67.
—, On Futamura projection. bit, Vol. 12, No. 14, 1980 (Japanese).
Futamura, Y., Partial evaluation of computation process: an approach to a compiler-compiler. Systems Computers Controls, Vol. 2, No. 5, 1971.
—,EL1 partial evaluator. Term paper manuscript, AM260, DEAP, Harvard University, 1972.
—,Compilation of Basic Transition Networks. Term paper manuscript, AM221, DEAP, Harvard University, 1972.
—,Partial computation of computer programs. AL78–80, Inst. Electronics Comm. Engrs. Japan, 1978 (Japanese).
Haraldsson, A., A program manipulation system based on partial evaluation. Linkoping Studies in Science and Technology Dissertations, No.14, Department of Mathematics, Linkoping University, 1977.
—, Experiences from a program manipulation systems. Informatic Laboratory, Linkoping University, 1980.
Heuderson,P. and Morris,J.H., Jr., A lazy evaluator, Techn. Report No. 75, January 1976, Computing Laboratory, The University of Newcastle upon Tyne (also: 3rd ACM Symposium on principle of programming languages, January, 1976.
Kahn, K., A partial evaluator of Lisp written in a Prolog written in Lisp intended to be applied to the Prolog and itself which in turn is intended to be given to itself together with the Prolog to produce a Prolog compiler. UPMAIL, Dept. of Computing Science, Uppsala University, March 1982.
—, The automatic translation of Prolog programs to Lisp via partial evaluation. UPMAIL, Dept. of computing Science, Uppsala University, P.O. Box 2059, Uppsala, Sweden.
Komorowski, H.J., A specification of an abstract Prolog machine and its application to partial evaluation. Linkoping Studies in Science and Technology Dissertations, No. 69, Software Systems Research Center, Linkoping University, 1981.
Lombardi, L.A. and Raphael, B., LISP as the language for an incremental computer. In E. Berkley and D. Bobrow (Eds), The programming language LISP: Its operation and application, MIT Press, Cambridge, 1964.
—, Incremental computation. Advances in computers, Vol. 8, 1967.
Ostrovsky, B.N., Obtaining language oriented parser systematically by means of mixed computation, in I.V. Pttosin, Ed., Translation and Program Models (Computing Center, Novosibirsk, 1980) 68–80 (in Russian).
Turchin, V.F., Equivalent program transformation in REFAL. The automated system for construction control. Trans. of the CNIIPIASS institute, issue 6, M., 1974, 36–68 (Russian).
[Program optimization, recurtion removal and tabulation]
Allen,F.E. et al., The experimental compiling system. IBM J,RES DEVELOP. Vol. 24, No. 6, November 1980.
Bird, R.S., Tabulation techniques for recursive programs. Computing Surveys, Vol. 12, No. 4, December 1980.
Goto, E, Monocopy and associative algorithms in an extended Lisp. Report of the FLATS Project, Vol. 1, October 1978, Information Science Laboratory, The Institute of Physical and Chemical Research, Wako-Shi, Saitama 351, Japan.
Keller, R.M. and Sleep, M.R., Applicative caching: Programmer control of object sharing and lifetime in distributed implementation of applicative languages. Proc. Functional Programming Language and Computer Architecture, 131–140, Dec. 1981.
Rish, T., REMREC — A program for automatic recursion removal in LISP. Datalogilaboratoriet, Uppsala University, DLU 37/24, 1973.
Fuchi, K., Programming languages based on predicate logic. Inf. Processing journal of Japan, Vol. 22, No. 6, 588–591, June 1981 (Japanese).
Futamura, Y. et al., Development of computer programs by PAD (Problem Analysis Diagram). Proc. of the Fifth International Conference on Software Engineering (New York: IEEE Computer Society, 1981), 325–332.
Kahn, K., Unique Features of Lisp Machine Prolog. UPMAIL, Dept. of Computing Science, Uppsala University, March 1982.
McCarthy, J. et al., LISP 1.5 Programmer's manual. M.I.T. Press, Cambridge, Massachusetts, 1962.
Nakashima, H., Prolog/KR User's Manual for Version C-2. Wada Laboratory, Information Engineering Course, University of Tokyo, August 1981.
Weinreb, D. and Moon, D., Lisp machine manual. MIT AI Laboratory, March 1981.
[Mathematical theory of computation]
Kleene, S.C., Introduction to Meta-Mathematics. North-Holland Publishing Co., Amsterdam, 1952.
Manna, Z., Mathematical Theory of Computation. McGraw-Hill, New York, 1974.
Nakajima, R., Introduction to Mathematical Information Science, Asakura-Shoten, Tokyo, 1982 (Japanese).
Wegner, P., Programming, Languages, Information science and Computer Organization. McGraw-Hill, New York, 1968.
Yasuhara, A., Recursive Function Theory and Logic. Academic Press, New York, 1971.
[5th generation computer project]
Motooka, S., Overview of the 5th generation computer. Information Processing Journal of Japan, 426–432, Vol. 23, No. 5, May 1982 (Japanese).
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1983 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Futamura, Y. (1983). Partial computation of programs. In: Goto, E., Furukawa, K., Nakajima, R., Nakata, I., Yonezawa, A. (eds) RIMS Symposia on Software Science and Engineering. Lecture Notes in Computer Science, vol 147. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-11980-9_13
Download citation
DOI: https://doi.org/10.1007/3-540-11980-9_13
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-11980-7
Online ISBN: 978-3-540-39442-6
eBook Packages: Springer Book Archive