Primitives, Composition, Abstraction, and Patterns
We will start by thinking about how the PCAP framework applies to computer programs, in general. We may do that by taking in table 3.1, exploring the PCAP concepts in data, functions, and objects.
Data
The primitive data items in most programming languages are things like integer variables, ?oating point values, and strings. We can use those into data structures such as lists, dictionaries, arrays and records. Creating a data structure allows us, at the most simple level, to think of a type of primitive data elements as if it were one thing, freeing us from information. Sometimes, we just think of a section of data, not in type of its relaying representation, but in terms of what it shows. So, we may think of a set of functions, or a family tree, without thinking whether it is an array or a list in its basic representation. Abstract data types gives a way of abstracting away from representational details and allowing us to focus on what the data really means.
Procedures
The primitive procedures of a language are things like built-in numeric operations and basic list application. We may combine these using the facilities of the language, such as if and while, or by using procedure composition (f(g(x))). If we try to abstract away from the details of how a particular calculation is done, we can describe a new function; de?ning a function allows us to use it for computational programs without thinking about the information of how those computational jobs get completed. You can think of this process as essentially creating a new primitive, which we may then use while ignoring the information of how it is created. One way to save common patterns of abstraction in method is to abstract over functions themselves, with higher-order methods.
Objects
Object-oriented programming provides a number of methods of abstraction and pattern capture in both data and function. At the most basic level, objects can be used as files, combining with primitive data component. More usually, they give strategies for jointly abstracting a data representation and the procedures that work on it. The features of polymorphism and inheritance are particularly important.
Procedures
|
Data
|
Primitives
Means of combination
Means of abstraction
Means of capturing patterns
|
+, *, ==
if, while, f(g(x))
def
higher-order procedures
|
numbers, strings
lists, dictionaries, objects
ADTS, classes
Generic functions, inheritance
|
|
|
|
Table 3.1 Primitives, combination, abstraction, patterns framework for computer programs