Programming in The Large and Programming in The Small

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 driver’s 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)

    Friends serve central functions for children that parents do not, and they play a critical role in shaping children’s social skills and their sense of identity. . . . The difference between a child with close friendships and a child who wants to make friends but is unable to can be the difference between a child who is happy and a child who is distressed in one large area of life.
    Zick Rubin (20th century)

    Good marriages are built on respectful disagreement and back-and-forth cooperation. We learn to cue each other, fill in for each other, forgive each other’s fumbles, celebrate small victories. We revel in the realization that we’re working on something bigger than both of us, and that parenthood is not only incredibly challenging but also incredibly enriching.
    Susan Lapinski (20th century)