What’s on URA activities
Scientific Study on Elegant Programming2014.06.22
Theory and Practice of Programming
Professor Yukiyoshi Kameyama, Faculty of Engineering, Information and Systems
5 (5 faculty members, 0 postdoctoral fellows, none from other organizations)
programming language, software verification, language processing system, metaprogramming, highly reliable software
Computer programs abound in our lives, embedded in a variety of equipment and devices such as electric appliances, PCs, mobile phones, and gaming devices.
To make our lives more convenient, computer programs tend to become large and complex unless the developers are careful enough to structure the code in a principled way. It is not uncommon for computer programs to be more than one million lines of code, and the inconsistency of a program may compromise the performance, functionality, and reliability of the whole information system. Research Unit on Theory and Practice of Programming aims at developing the highly reliable computer programs. Our slogan is “Correct programs are simple and beautiful”.
Programming as a scientific discipline
Computer programs are considered large and complex. However, simpler and more applicable programs can be developed by incorporating mathematics into them. The most important issue for software is its correctness, or assured reliability. However, reliability alone does not make sense. For example, a traffic signal is guaranteed to be safe, if it is always red (“don’t go”), but this safety is meaningless, and we want to have a traffic signal which allows maximal traffic while ensuring its safety. Similarly, our goal is to develop highly reliable, highly functioning, and high performant programs, and the research unit conducts scientific research on programming, using scientific and systematic approaches. Our research activities also include program transformation, program synthesis, and program verification.
Building systems that verify programs
Current computer programs are becoming increasingly larger and more complex, partly because specialized development has been done to address their users’ divergent requests. Often many different versions of a single software are developed for different types of hardware. This is not only inconvenient from the perspective of maintenance, but it may also reduce the reliability of programs. To solve these problems, the research unit focuses on multi-stage programing (MSP), in which we write a code-generator, which, when executed, generates code specialized in specific domain or hardware, and then the generated code is executed to produce the final results. Previous studies could not establish the reliability of MSP-based programs with computational effects,*1 which are essential for the efficiency of the generated code The problem remained open for more than ten years, and for the first time in the world, we have developed a method for establishing the reliability of multi-stage programs with computational effects. The research unit continues the efforts to enhance the reliability of programs based on scientific approaches.
*1: Computational effect is a feature of programs such as updating the values of variables and the input/output operations to a file. While works in the literature only targeted programs without computational effects, they are indispensable to generate efficient code without duplication.
● Organization of TSSS (Tsukuba Software Science Seminar) series
● Organization of the Workshop on Staged Computation
● Organization of the Shonan Meeting on Staged Programming Languages and HPC
(Interviewed on October 23, 2013)