The Reinventing Computing group in the MIT
Artificial Intelligence Laboratory is working on technologies which
take into account the fact that the computing landscape for the
21
century will be radically different; the key theme is
engineering software and hardware technologies that can adapt to
inevitable and rapid changes in base hardware and software
technologies and in patterns of application usage.
Some specific ideas currently being explored include:
Quasistatic computing is a term which was coined to describe the effects of designing software systems to evolve themselves with minimal user/programmer intervention, in response to the rapid change of base hardware technologies over time, and to the wide variety (at any given time) of platforms with very different performance characteristics. In particular, fielded software systems would be able to evolve while in actual use, rather than remain rigid between manual upgrades. Quasistatic computing systems would track the shifts in patterns of software usage and the changes in availability of hardware and other available resources, and optimize software accordingly. Quasistatic computing may manifest itself in processor designs and machine architectures, operating systems, programming languages, and compilers/interpreters; the lattermost is the topic of this thesis.
Key to quasistatic computing is drastically modifying the current
model of software delivery, in which a programmer (or team of
programmers...) finishes writing a program, and then delivers the
same unchanging executable to all the different end-users for
consumption. Although this antiquated model is taken to an extreme
with mass-market commodity programs (where fifty million users may be
running the same executables), even with vertical-market or
custom-written programs, there is usually still a notion that at some
point there is a compilation which freezes the software for delivery until the next
bug fix or version upgrade. By modifying this traditional model so
that the program is periodically and dynamically recompiled, a
smart compiler can incorporate newly acquired knowledge (from any of
a number of different sources) to improve program performance, and
users see long-term incremental benefits for very little manual
intervention effort. The term ``quasistatic computing'' itself
emphasizes the fact that there is a blurring of the line between
static (compile-time) computation and dynamic (run-time) computation.