Summary of Objectives and Approach.
Detailed Summary of Technical Progress.
Over the last few months, we exposed COTERIE's shared data objects to Obliq (the distributed, interpreted language used in COTERIE), to create a new version of the language called ``Obliq*''. In Obliq, all data items are available as client-server distributed objects. As references to data items are passed between processes, they refer back to the original object and access it via remote method calls. However, there are two other kinds of data sharing semantics that are useful: replicated data, and simple data. We implemented replicated data in Obliq* by using COTERIE's shared data objects. Simple data items are objects that retain no connection to the original object when they are copied between machines.
We designed and implemented a new specification language for n-Vision that provides a simpler, more flexible way to specify interactive virtual worlds, while at the same time ensuring a correct and efficient implementation. The language is processed by a specialized interpreter to which we have applied modern language implementation techniques and domain-specific optimizations to achieve high performance.
We specify n-Vision visualizations as programs in a simple functional language, and use program transformation techniques to make possible efficient evaluation. Each visualization program is an expression that computes a graphical scene based on the current user input. In the functional representation, data dependencies among scene components are represented explicitly. This allows us to transform the expressions into cached dataflow graphs, which, when evaluated, track all changes in the system and recompute only those scene components that are affected. In addition, we use partial evaluation and dynamic compilation techniques to further optimize the most intensive part of the scene computation--the sampling of user functions. These optimizations have resulted in a visualization system that is simpler, faster and more reliable.
While these optimizations are well-known to the programming language community, the highly dynamic nature of our application makes more traditional language implementations impractical, because none of the necessary information is available until run-time. The primary benefit of the improved target language is that AutoVisual, our visualization design component, can now be made both simpler and more powerful in turn: the space of possible visualizations is larger, because worlds are now composed of smaller components that are linked together dynamically; the specifications are smaller and simpler, and hence easier to generate; and the n-Vision subsystem now provides stronger guarantees of performance, relieving AutoVisual of some of the burden of optimization.
Transitions and DOD Interactions.
Software and Hardware Prototypes.
Invited and Contributed Presentations.
Honors, Prizes or Awards Received.
Selected References to work by Columbia's Computer Graphics and User Interfaces Lab