Structure Of The Universe and
Programming
(Evolution Of
Programming Methodology, Part II, Page 4)
By Bill Nicholls
March 27,
2000
Objects
were the darlings of the 1990s. Objects introduced the
concept of data capsules, that information relating to a
single thing should be kept together and isolated from
outside access except through well-defined interfaces.
Objects take the MVC paradigm and implement it in smaller
logical or functional units.
Patterns reflect the discovery of how many parts of
different programs went through the same sequence of steps,
even though the details and the data were different. A
pattern is an abstraction of the larger scale structure of a
program or group of programs. These patterns were seen as a
structure that could be reused as a guide to building other
programs that used similar steps.
MVC made a comeback in this decade. As objects became a
mainstream idea, the value of MVC as a concept was
rediscovered. Objects put a fine-grained structure around
the smallest elements of a program, while MVC created a
structure around the functional aspects of the program.
Patterns identified a structure in applications.
The conceptual set of objects, MVC and Patterns is a set
of nesting concepts. Each element is made up from a
collection of smaller elements, starting with objects. There
is an amazing analogy to the physical structure of the
universe that starts, we think, with elementals like quarks
and leptons, making particles that make atoms, molecules,
planets, solar systems, galaxies, and universes.
In an analogous fashion, I see that programs are built
from bits, bytes, data elements, objects, MVC, and patterns,
each structure built upon the prior structure. This
hierarchy of structures is a concept that can be used to
facilitate the creation of programs by automating the
building of a program by assembly of building blocks
Building A Program
How would this concept work?
Think of objects as the Leggo building blocks of a program,
and MVC as the walls, floors, and ceilings, using Patterns
as the design of the buildings. Then consider C/S as the way
buildings are connected into a factory. Two new tools are
needed to make this possible. One is a way to specify the
interfaces, the way the blocks, walls, and buildings can be
connected. The second is a tool analogous to a crane that
can stack and assemble the pieces to build the complete
structure.
This first tool is a Meta Interface Language (MIL) that
describes the component interfaces in a way that lets
components be automatically found and assembled,
either by a person or program. If such an MIL is created and
the required components for a program described, then
programming would lose much of the detail dogwork that is
involved, along with the human errors that are made in the
process.
The second tool is one that programmers would use to
describe the function and structure of the desired program.
This tool would inspect its database of objects, MVC
functions, patterns, and the MIL that describes how these
can be connected together. It's a software version of the
VLSI electronic building blocks, and the MIL is analogous to
the VLSI design languages. The building tool is analogous to
VLSI design tools. I call this the Program Structure Builder
(PSB).
The PSB follows the operator's directions in selecting
and assembling the necessary components to create the
program. It takes components with their MIL descriptions and
assembles them into functions. All details will be hidden
unless conflicts arise or components have to be created or
modified to meet special needs. The operator (programmer)
may use block-function diagrams, finite state machines, or
other descriptive technique to specify the sequence and the
results, but not the details of the process. This will
finally raise the programmer from a piece worker to assembly
line manager, with the PSB carrying out the commands.
<<<Previous
Page >>>Next
Page