The Elements of Programming

SICP > Building Abstractions with Procedures > The Elements of Programming
Previous: Building Abstractions with Procedures Next: Expressions
    Expressions
    Naming and the Environment
    Evaluating Combinations
    Compound Procedures
    The Substitution Model for Procedure Application
    Conditional Expressions and Predicates
    Example: Square Roots by Newton's Method
    Procedures as Black-Box Abstractions

A powerful programming language is more than just a means for instructing a computer to perform tasks. The language also serves as a framework within which we organize our ideas about processes. Thus, when we describe a language, we should pay particular attention to the means that the language provides for combining simple ideas to form more complex ideas. Every powerful language has three mechanisms for accomplishing this:

In programming, we deal with two kinds of elements: procedures and data. (Later we will discover that they are really not so distinct.) Informally, data is ``stuff'' that we want to manipulate, and procedures are descriptions of the rules for manipulating the data. Thus, any powerful programming language should be able to describe primitive data and primitive procedures and should have methods for combining and abstracting procedures and data.

In this chapter we will deal only with simple numerical data so that we can focus on the rules for building procedures.[*] In later chapters we will see that these same rules allow us to build procedures to manipulate compound data as well.


Previous: Building Abstractions with Procedures Next: Expressions
    Expressions
    Naming and the Environment
    Evaluating Combinations
    Compound Procedures
    The Substitution Model for Procedure Application
    Conditional Expressions and Predicates
    Example: Square Roots by Newton's Method
    Procedures as Black-Box Abstractions

webmaster@arsdigita.org