|Department of Mathematical Informatics, Graduate School of Information Science and Technology / |
Department of Mathematical Engineering and Information Physics, Faculty of Engineering,
University of Tokyo
Mathematical structure of programs plays a fundamental role in program development (programming). To clarify the structure of programs, we may take programs as mathematical objects, and programming as a mathematical activity, where mathematical reasoning, based on a *small* set of calculational laws such as fusion, tupling, accumulation, lies at the heart of the subject. With this view, many useful programming principles can be formulated so precisely that programmers can easily follow and apply them to practical program development. This is in sharp contrast to the prejudice of learning programming only by accumulating experience.
To specify, design, implement, read, understand, document, appreciate, criticize, test, qualify, debug, maintain, adapt, port or improve programs, we need to understand the notations which serve to express their final form: programming languages. We are interested in the design and implementation of the programming languages, especially the languages for symbol processing like Lisp, and functional languages like Haskell. This includes language design, efficient implementation (interpreter, compiler, runtime system), static and dynamic analysis of programs, and parallel processing.
Based on the mathematical structure of programs, we are developing a program calculator, which may be used to improve algorithms and programs written in a naive but inefficient style to get more efficient and practical ones. Also it should be used to transform sequential programs into parallel ones in a systematic way by calculational laws instead of traditional heuristics. We have had several basic results which can be integrated to a truly usable calculator.