Académique Documents
Professionnel Documents
Culture Documents
Table of Contents
_________________
1 On the methods of my craft
1 On the methods of my craft
============================
Programming has art, science and craftmanship in it. It is really hard
to capture exactly what it is about, for the various practitioners
think about it in assorted ways. In essence, the whole craft is like
the huge elephant placed before blind men who all perceive it
differently. From my point of view, the core of programming is about
extension.
In trying to extend and augement our ability to perform the
calculuations that emerge from daily life, we slowly invented the
computer. However, a computer system is a set of components that work
together to do what computers do. In the end, some of these components
tend to be extensions of others. We arrive at a somewhat hierarchical
system, but each layer serves as a simple extension of the that which
is below. How is that?
Let's begin with hardware. The computer hardware comes with the CPU,
RAM, bus systems, I/O devices etc,. but they are static. They can only
do what they were built to do. This set of all the innate functions
that the computer hardware in general and the computer's CPU in
particular can do is called its instruction set. At the point of
manufacturing these hardware componnents, the creators know little
about all the possible uses of the equipment. It is impossible to
enumerate all the kinds of operations that will be performed on the
hardware. Needless to imagine the details of the operations. Will be
hardware be used to run snapChat, or build photoshop? These are all
questions that the manufacturers of computers can't answer or even
predict.
However, the very basic nature of computing operations can be captured
and implemented in hardware. Some of such operations are:
1.
2.
3.
4.
The short list above is very far away from the complete list of
essential hardware operations.
It gets interesting. If hardware is limited, how did we get to this
point where all sorts of amazing applications are built on computer
systems?
The next extension to the hardware is the sytem software, often called
the operating system. However, there are many other system software
that are not necessarily operating systems. Since the language spoken
by the CPU is limited, a new extension is needed to interface between
a wider universe of problems and solutions and the limited universe of