Abstract
Dynamic binding is a facility usually found only in weakly typed languages. A strongly typed, block-structured language can, however, also support dynamic binding if its implementation is modified according to a set of widely applicable principles. The result of applying these principles to a strongly typed base language is a language that has much of the flexibility of weakly typed languages without requiring extensive run-time type checking.The primary principles in this general approach to adding dynamic binding to a language are providing separate compilation for the units of dynamic binding, establishing a link between a name in one unit and its implementation in another, and assuring that programs using dynamic binding remain consistent during their execution. There are different methods for implementing each of these principles; two languages to which dynamic binding has been added serve to illustrate some of the alternatives.
- [Ammann81] Ammann, U., "The Zurich Implementation," in Pascal -- the Language and its Implementation (D. W. Barron, ed.), John Wiley and Sons, 1981.Google Scholar
- [Atkinson82] Atkinson, M. P., et al., "PS-Algol: an Algol with a Persistent Heap," Sigplan Notices 17, 7 (July 1982), 24-31. Google ScholarDigital Library
- [DoD83] Reference Manual for the Ada Programming Language, U.S. Department of Defense ANSI/MIL-STD-1815A (1983).Google Scholar
- [Gantenbein86] Gantenbein, R. E., and D. W. Jones, "Dynamic Binding of Separately Compiled Objects Under Program Control," Proceedings of the 1986 ACM Computer Science Conference (February 1986), 287-292. Google ScholarDigital Library
- [Heering85] Heering, J., and P. Klint, "Towards Monolingual Programming Environments," ACM Transactions on Programming Languages and Systems 7, 2 (April 1985), 183-213. Google ScholarDigital Library
- [Kernighan78] Kernighan, B. W., and D. M. Ritchie, The C Programming Language, Prentice-Hall (1978). Google ScholarDigital Library
- [JonesN78] Jones, N. D., and S. S. Muchnick, "TEMPO: A Unified Treatment of Binding Times and Parameter Passing Concepts in Programming Languages," Lecture Notes in Computer Science 66, Springer-Verlag, 1978. Google ScholarDigital Library
- [LeBlanc79] LeBlanc, R. J., and C. N. Fischer, "On Implementing Separate Compilation in Block-Structured Languages," Sigplan Notices 14, 6 (August 1979), 139-143. Google ScholarDigital Library
- [Liskov79] Liskov, B., et al., CLU Reference Manual, MIT Technical Report MIT/LCS/TR-225 (1979). Google ScholarDigital Library
- [Randell75] Randell, B., "System Structure for Software Fault Tolerance," IEEE Transactions on Software Engineering SE-1, 2 (June 1975), 220-232.Google ScholarDigital Library
- [Schreiner85] Schreiner, A. T., and H. G. Friedman, Jr., Introduction to Compiler Construction with Unix, Prentice-Hall (1985). Google ScholarDigital Library
- [vanWijngaarden76] van Wijngaarden, A., Revised Report on the Algorithmic Language Algol 68, Springer-Verlag (1976). Google ScholarDigital Library
- [Winston81] Winston, P. H., and B. K. P. Horn, Lisp, Addison-Wesley (1981).Google Scholar
- [Wirth85] Wirth, N., Programming in Modula-2; Third Edition, Springer-Verlag (1985). Google ScholarDigital Library
Index Terms
Support for dynamic binding in strongly typed languages
Recommendations
Intrinsically-typed definitional interpreters for imperative languages
A definitional interpreter defines the semantics of an object language in terms of the (well-known) semantics of a host language, enabling understanding and validation of the semantics through execution. Combining a definitional interpreter with a ...
Tagless staged interpreters for typed languages
Multi-stage programming languages provide a convenient notation for explicitly staging programs. Staging a definitional interpreter for a domain specific language is one way of deriving an implementation that is both readable and efficient. In an ...
Comments