Browse Prior Art Database

Meta Programming: a Software Production Method Disclosure Number: IPCOM000128903D
Original Publication Date: 1977-Dec-31
Included in the Prior Art Database: 2005-Sep-20

Publishing Venue

Software Patent Institute

Related People

Charles Sirnonyi: AUTHOR [+3]


2 1.2 Software production as a process technology 4 1.3 Design strategies when production is inexpensive 10 1.4 Process technology and software sharing 15 1.5 Measures of software productivity 19 1.6 What determines productivity? 22

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 2% of the total text.

Page 1 of 84


©; Copyright 1977 by Xerox Corporation; used with permission

Meta Programming: a Software Production Method

by Charles Sirnonyi

CSL-76-7 December 1976

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 commu-nications, 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.

To verify the predictions of the meta-programming theory, a series of experiments were performed. In one of the projects, three programs were produced from the same specifications, by three different groups in a controlled experiment. During the longest experiment 14,000 lines of code were written, at an average rate of 6.12 lines/man-hour. The 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.


Software engineering, management of software production, measurement of program-ming productivity, meta-programming, painted types, naming conventions, state vector syntax checking


Dec 31, 1977

Page 1

Page 2 of 84

Meta Programming: a Software Production Method

1.53, 2.2, 2.42, 2.43, 3.50, 4,22

XEROX PALO ALTO RESEARCH CENTER 3333 Coyote Hill Road / Palo Alto,' Ca!itornia g Copyright 1977 by Charles Simonyi


First. I would like to thank my parents for their courageous support, which was tendered often under difficult circumstances. I am also extremely grateful to Mr. Nie...