Programming in distributed systems is complicated by common traits of distributed systems. A programming system is an integrated system consisting of a programming language, the supportive kernel, and the programming environment. A programming system for distributed computation should address the distribution and parallelism issue. There have been many approaches to build such programming systems. However, we set forth the thesis that the programming system for distributed computation should be defined from an integrated system architecture viewpoint based on a unified model.
In this dissertation, we propose as an effort to provide a programming system for distributed computation a programming language and a configuration language based on a uniform object-based computation model. CornerStone is an object oriented language that addresses the parallelism issue based on the notion of cooperating objects. The language embodies notable features in two respects. it distinguishes the inheritance and the subtyping as distinct concepts for the code sharing and the specialization, respectively. It also provides versatile object interaction primitives to coordinate the execution of concurrent objects. Objects programmed in CornerStone reveals that the language is appropriate for medium-grain parallelism.
The distribution of the objects in distributed systems is addressed by the configuration language which maps the objects onto capsules. Capsule is an engineering concept for mapping objects onto real distributed systems. A capsule is the basic unit of the resource allocation in the underlying system; Objects in a capsule share resources allocated to the capsule. The capsule concept also bridges the granularity gap between the computation model and the underlying system.
These two languages proposed in this dissertation cooperate closely to solve given problems in terms of cooperating objects in distributed systems. These two components would provide the first step toward an integrated programming system based on a uniform object model for distributed computation.