Next Generation Software Systems and Programming Language Research

Matthias Felleisen

Future software systems will consist of reusable components. They will also provide interfaces for third-party programmers to extend the systems statically as well as dynamically. A Web browser, for example, allows users to add plug-ins and applets. Similarly, mail clients can execute attached "macro" programs, and users can specify mime-type specific application tools.

Programming language research must support this emergent form of system design because it poses new problems for programmers and systems architects. Researchers will have to study a wide range of problems, including the design of constructs for the implementation and composition of components; the development of mechanism for monitoring and enforcing invariants across components; the development of run-time systems in support of dynamic extensibility; and the evolution of new programming paradigms. Programming environments that assist with the analysis and synthesis of componential and extensible software will be an additional focus of programming language research.

In my talk, I will first present the basic problems with a concrete example: the design and implementation of a Web server for fast and convenient dynamic content generation. Based on this example, I will provide an overview of my team's recent and future research efforts on programming language support for building such extensible systems: language support for reusable components; the design and implementation of extensible abstract data types; the administration of resources; and the specification and enforcement of behavioral contracts for components.


matthias@ccs.neu.edu