ITR Collaborative Research: A Reusable, Extensible, Optimizing Back End
Tufts University, Medford MA
Investigators
Abstract
A computer program is written in a high-level *programming* *language*, but to be run, it must be translated into a *machine* *language*. A translator is difficult and expensive to build, and using today's techniques, each programming language needs its own translator. For example, it is nearly impossible to use the same translator for both Java and C++. The project is developing techniques by which a ``back end,'' which understands machine language, can serve many different ``front ends,'' each of which understands a different programming language. Combining such front and back ends can produce a translator much more cheaply than is possible at present. The major new idea is to use *three* interfaces. The C-- language is an interface that enables the front end to tell the back end what a program should do. The C-- run-time interface reveals decisions made by the back end so that the front end can support such services as garbage collection and threads. The Cobalt language is an interface that enables the front end to tell the back end what special translation techniques are needed for efficiency in a particular language. These interfaces are supported by new, automatic techniques for eliminating potential errors in translation.
View original record on NSF Award Search →