Is Programming Theory Needed? Part 3

2.3 Using sources outside physics

Sec 2.2 informed that physics is a source for establishing Basic Concepts, and sec 2.3 informed the presence of the role of linguistic and existing software engineering. In this section we detail the establishment of Basic Concepts that make use the linguistic (2.4.1) and existing software engineering literature (2.4.2).

2.3.1 The role of linguistic

Linguistic is used to remove synonyms that are abundant in software engineering literature. All literature contains informal description, otherwise the literature will be incomprehensible to human. We use linguistic to minimize the synonyms in both informal and formal description from the literature.

Examples of informal descriptions are phrases like ‘Core Concepts’ [16-18] or ‘Fundamental’ [29] and ‘Foundation’ [75]. We remove the word ‘Fundamental’, ‘Core’, and ‘Foundation’. We choose ‘Basic’, and therefore Basic Concepts.

2.3.2 The role of software engineering literature

Authors of some software engineering literatures have attempted to define basic concepts for programming and software.  Table 2.4 shows some result of these efforts. The terms Value, Type, and Variable occur more than once (Davis [19] calls his three terms as ‘Primitives of Problem Analysis’).

Table 2.4 Comparison of ideas for basic concepts

C. J. Date [18] Alan M. Davis [19] David A. Watt [90]
Value

Operator

Type

Variable

Function

Object

State

Value

Type

Variable

Storage

Binding

Scope

Procedural abstraction

Sec 2.1 requires the uniqueness of basic concepts. Some terms within Table 2.4 are redundant and must be removed. The two next paragraphs describe the process and provide the reasons.

The term value is more common than state. Hence the synonym state is removed from the list. The terms Function and Procedural abstraction are synonym to the term Operator. The two former terms are removed.

The term variable is less general than the term object. Unvaluable objects can- not have value (like objects of type module and program). Valuable objects are also not restricted to variables, constants are also objects. Hence, to be a non redundant basic concept, the term Variable is removed from the candidate list of basic concepts. The result is Table 2.5.

Table 2.5 First refinement to extract basic concepts

C. J. Date’ Alan M. Davis’ David A. Watt’
Value

Operator

Type

Object

 

Value

Operator

 

Object

 

Value

Operator

Type

Object

Storage

Binding

Scope

Davis’ work listed the incomplete set of basic concepts (Table 2.5). Hence we add Type to the list. The result is now represented by Table 2.6.

Table 2.6 Second refinement to extract basic concepts

C. J. Date’ Alan M. Davis’’ David A. Watt’
Value

Operator

Type

Object

 

Value

Operator

Type

Object

 

Value

Operator

Type

Object

Storage

Binding

Scope

The term Storage, Binding, and Scope are relevant only when we talk about intermediate-code and runnable-code. The storage, binding, and scope are storage for values, operators, types, and objects. Binding is binding the identity of types, operators, and objects. Scope is scope for operators, types, and objects. With the removal of storage, binding, and scope; and remaining concepts are arranged to have same orders on different columns. Table 2.7 is the result.

Table 2.7 Final result, tabulation of basic concepts

C. J. Date’ Alan M. Davis’’ David A. Watt’’
Value

Operator

Type

Object

Value

Operator

Type

Object

Value

Operator

Type

Object

We will no longer put the name of those authors when referring to the basic concepts in the later sections and chapters. These basic concepts are used in [46], and are abbreviated as VOTO (Value Operator Type Object)[1]. The next section presents the semi-formal and formal definition of each basic concept.

[1] Reference [46] uses the term Value Operation Type Object; as well as ref [47]

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s