Programming In The Large And Programming In The Small
In software engineering, programming in the large and programming in the small describe two different approaches to writing software. The terms were coined by Frank DeRemer and Hans Kron in their 1975 paper "Programming-in-the large versus programming-in-the-small"
Fred Brooks identifies that the way an individual program is created is different from how a programming systems product is created. The former likely does one relatively simple task well. It is probably coded by a single engineer, is complete in itself, and is ready to run on the system on which it was developed. The programming activity was probably fairly short-lived as simple tasks are quick and easy to complete. This is the endeavor that DeRemer and Kron describe as programming in the small.
Compare with the activities associated with a programming systems project, again as identified by Brooks. Such a project is typified by medium-sized or large industrial teams working on the project for many months to several years. The project is likely to be split up into several or hundreds of separate modules which individually are of a similar complexity to the individual programs described above. However, each module will define an interface to its surrounding modules.
Brooks describes how programming systems projects are typically run as formal projects that follow industry best practices and will comprise testing, documentation and ongoing maintenance activities as well as activities to ensure that the product is generalized to work in different scenarios including on systems other than the development systems on which it was created.
DeRemor and Kron have this to say about programming in the large vs in the small (taken from the abstract of their paper - see the references section, below):
"By large programs we mean systems consisting of many small programs (modules), possibly written by different people. We need languages for programming-in-the-small, i.e. languages not unlike the common programming languages of today, for writing modules. We also need a “module interconnection language” for knitting those modules together into an integrated whole and for providing an overview that formally records the intent of the programmer(s) and that can be checked for consistency by a compiler. We explore the software reliability aspects of such an interconnection language. Emphasis is placed on facilities for information hiding and for defining layers of virtual machines."
Read more about Programming In The Large And Programming In The Small: Programming in The Large, Programming in The Small
Famous quotes containing the words programming, large and/or small:
“If there is a price to pay for the privilege of spending the early years of child rearing in the drivers seat, it is our reluctance, our inability, to tolerate being demoted to the backseat. Spurred by our success in programming our children during the preschool years, we may find it difficult to forgo in later states the level of control that once afforded us so much satisfaction.”
—Melinda M. Marshall (20th century)
“The artistic temperament is a disease that affects amateurs.... Artists of a large and wholesome vitality get rid of their art easily, as they breathe easily or perspire easily. But in artists of less force, the thing becomes a pressure, and produces a definite pain, which is called the artistic temperament.”
—Gilbert Keith Chesterton (18741936)
“But with some small portion of real genius and a warm imagination, an author surely may be permitted a little to expand his wings and to wander in the aerial fields of fancy, provided ... that he soar not to such dangerous heights, from whence unplumed he may fall to the ground disgraced, if not disabled from ever rising anymore.”
—Sarah Fielding (17101768)