Meta-programming: a software production model
This thesis describes an organizational schema, designed to yield very high programming productivity in a simplified task environment which excludes scheduling, system design, documentation and other engineering activities. The leverage provided by high productivity can, in turn, be used to simplify the engineering tasks.
Difficulty of communications within a production team, caused by the inherently rapid creation of problem specific local language, is posited as the major obstacle to the improvement of productivity. The thesis proposes a combination of ideas for simplifying communications between programmers. Meta-programs are informal, written communication, from the meta-programmer, who creates the local language, to technicians who learn it and actually write the programs.
The abstract notion of local language is resolved into the questions: what are the objects that should be named and what should their names be? The answers involve the concept of painted types (related to types in programming languages) and naming conventions based on the idea of identifying objects by their types.
A method of state vector syntax checking for debugging the programs produced in the high productivity environment is described. Descriptions of the relationships or contrasts between the meta-programming organization and the relevant software engineering concepts of high level languages, egoless programming, structured programming, Chief Programmer Teams and automatic program verification are also given.
A series of controlled experiments showed that comparable results can be obtained by different persons acting as meta-programmers. The difficult experimental comparisons of the meta-programming and conventional organizations, however, yielded interesting, but, inconclusive, results.
- download PDF (6.7 MB)
Simonyi, C. Meta-programming: a software production model. PARC Technical Report CSL-76-7; 1976 December.
Copyright © 1976 Palo Alto Research Center, Incorporated. All rights reserved.