AbstractThis paper presents an overview of Midgård, a program development environment, where part of the development of a program is carried out in the context of an execution of the program itself. Midgård enables the developer to experiment with different designs and solutions while maintaining a low turn-around time during most of the development. Midgård thus provides better support for exploratory programming than traditional batch-oriented environments for statically checked languages. The design of Midgård, which is based on dynamic extensibility, is described and a prototype implementation for the block structured object-oriented programming language BETA is presented. In the prototype the dynamic extensibility is implemented using an embedded compiler and an embedded incremental linker. The main contribution is the use of an embedded compiler and an embedded incremental linker for enabling that part of the development of a program is done in the context of an execution of the program itself with low turn-around time.
Categories and Subject Descriptors: D.2.2 [Software Engineering]: Tools and Techniques; D.2.6 [Software Engineering]: Programming Environments; D.3.4 [Programming Languages]: Processors
Additional Key Words and Phrases: exploratory programming, dynamic extensibility, dynamic and incremental linking, dynamic compilation, runtime programming, statically checked
Selected references
- Rolf Adams, Walter F. Tichy, and Annette Weinert. The cost of selective recompilation and environment processing. ACM Transactions on Software Engineering and Methodology, 3(1):3-28, January 1994.
- P. J. Brown. Dynamic program building. Software -- Practice and Experience, 11(8):831-843, August 1981.
- Ole Lehrmann Madsen. Open issues in object-oriented programming -- a scandinavian perspective. Software -- Practice and Experience, 25(S4):3-43, December 1995.
- Bengt Nordström and Åke Wikström. The design of an interactive program development system for Pascal. Software -- Practice and Experience, 14(2):177-190, February 1984.
- Russell W. Quong and Mark A. Linton. Linking programs incrementally. ACM Transactions on Programming Languages and Systems, 13(1):1-20, January 1991.
- Erik Sandewall. Programming in an interactive environment: the LISP experience. ACM Computing Surveys, 10(1):35-71, March 1978.
- Randall B. Smith and David Ungar. Programming as an experience: The inspiration for Self. In Walter G. Olthoff, editor, ECOOP'95 -- Object-Oriented Programming, 9th European Conference, volume 952 of Lecture Notes in Computer Science, pages 303-330, Åarhus, Denmark, 7-11 August 1995. Springer.
- David Ungar and Randall B. Smith. Self: The power of simplicity. In Norman Meyrowitz, editor, Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'87), pages 227-242, Orlando, Florida, 4-8 October 1987. SIGPLAN Notices, 22(12), December 1987.
- Niklaus Wirth. The programming language Pascal. Acta Informatica, 1:35-63, 1971.