~~~~Main
Home
Contact

~~~~Projects
vee
Computer Merit Badge
PatchLodge.com
Projects Summary

~~~~My Bookmarks
ACM@LSU CS Resources
Programming
Operating Systems
Computer Architecture
Databases

 

Fri Oct 2 12:42:34 EDT 2009

The  Computer Merit Badge: how I'd complete the requirements NOW;
Part 3

--

This installment will not be as long or involved as the  previous
2, but it does built upon what I discussed in them

The second part of requirement #1 says, "Describe the major parts
of a computer system." And this is what I will do,  to  some  de-
gree.

Today,  mainstream  computers  are based upon what is called, the
"von Neumann" architecture.  This architecture was  one  proposed
by  a man named Jon von Neumann, who in his 50 years of life con-
tributed significantly to many scientific fields.  Computer  Sci-
ence was one of them, and his contributions to the field arguably
put computer technology (and the US) in a  position  to  advanced
significantly in the years to follow.

The  von  Neumann  architecture was proposed as a solution to the
problem of how to construct a device that physically realized the
theoretical  general  purpose computing model proposed by Turing.
This model is briefly discussed in the first installment of  this
series,  but  in short it provides the theoretical basis for con-
structing machines that are able to simulation other  "machines".
The  machines that a Turing Machine can simulate are realized to-
day as computer programs. The clear difference between the  theo-
retical  concept of a Turing Machine and what is physically real-
izable is, of course, the memory in a real machine can't be infi-
nite.  So, technically, any computer today (of von Neuman archec-
ture or not), is really what is known as a "linearly bounded  au-
tomata." But I digress.

So what does the von Neumann architecture consist of?  Well:

1. a processing unit (i.e., a CPU)

2. memory, providing random access for the reading and writing of
programs and raw data

3. facilities for input and output devices

Is this literally similar to the Turing Machine? No. A Turing Ma-
chine  actually consists of a tape (i.e., the memory + input) and
a  "read/write"  head  to  manipulate  the  tape.  However,   the
read/write  head  allows  for random access to memory (albeit not
necessarily direct). There are technically no input or output de-
vices  beyond the tape. The initial values of the tape and start-
ing position of the read/write head are all the TM  provides  for
input.  And  to make matters more complicated, the "input" of the
tape consists of data and program instructions encoded  together.
TMs  are very interesting devices, but I do not have the time nor
expertise to discuss them much here.

Now, back to the major parts of a computer system.   Modern  com-
puters are very complex, but the basic parts that make in them of
the von Neumann type are there.

1. a processor

2. RAM (i.e., random access memory)

3. Hard drive (i.e., a persistent instance of random access memo-
ry, a.k.a, "storage")

4. input (keyboard, mouse, cd-rom/dvd, etc)

5. output (monitor, printer, cd-rom/dvd, etc)

Are  there  other  types of architectures? The answer is YES, and
they are called collectively as, "non-von Neumann" architectures.
And while some of them are modeled off of the Turing Machine con-
cept, not all are.  For example, a man name Alonzo Church  (i.e.,
Turing's  PhD Advisor), created an equivalent but completely dif-
ferent may to investigate the questions of  "computability"  that
Turing  was  addressing with his models. Church's formulation has
come to be known as "Lamda Calculus," and is the basis for an ap-
proach  to  writing  programs called, "functional programming." I
will discuss this more when I discuss the requirement about  pro-
gramming.

Since  the  time  of  Turing, Church, and von Neumann, there have
been many conceptual models proposed that are  as  "powerful"  as
the  Turing  Machine.  Few, however, have provided the same basis
for building computational devices than von Neumann's. One inter-
esting  factoid  is that when one wishes to prove that their con-
ceptual model is as powerful as a TM (or "universal"), the  easi-
est  way  to prove this is to build a functioning TM out of their
concept.  This can be done, for example, using the set  of  rules
shown  to be universal which are called, "Conway's Game of Life."
(check out a little tool called Golly)

So what sets the von Neumann architecture apart from the  others,
including  machines that mimick the operation of a Turing Machine
(well, linearly bounded automata)? The  answer  goes  back  effi-
ciently accessing that vital ingredient required for computation-
al power by a device - MEMORY! The von  Neumann  architecture  is
conceptually meant to facilitate one thing - the efficient access
to memory.  Whereas in a TM, there is literally a single tape and
read/write head containing the input data, the program's instruc-
tions, and the "working" memory required for the execution of the
program;  the  von Neumann architecture provides direct (the key)
access to all of the memory, which is intuitively  how  we  think
about  the memory on our computers today. Another way to say this
is, the von Neumann architecture gives one  direct  access  to  a
running  program's "state," whereas other paradigms either do not
(in purely functional approaches) or in  a  very  convoluted  way
(e.g.,  a  "real"  TM or a TM built from cellular automata in the
GOL).

This way of thinking has also affected how most think about  pro-
gramming  and  programming languages.  Relatively few brave souls
engage in functional programming, as compared to those who engage
in  programming that is conceptually based on the von Neumann ar-
chitecture. While today, many traditional  programming  languages
are  incorporating  "functional"  features  that give some conve-
niences to the programmer, writing a program that is meant to  be
executed  in  a  top-to-bottom  way (i.e., procedurally) and that
stores values in "variables" relies on the view that the computer
executing  the  program  has direct access to the place in memory
where this variable is storing its data.  Since it is usually  of
no  concern where in memory the computer stores this information,
the programmer just assumes "on demand" access to  random  memory
locations. And this is why the most powerful access model of mem-
ory is called "random access."  At some point when you  take  the
time to learn more about the Turing Machine and the hoops a "pro-
gram" must jump through to store and retrieve the data written to
the  tape,  an  appreciation for the direct access to memory that
the von Neumann architecture will developed.  Not only  does  the
von  Neumann  architecture  actually  facilitate programming lan-
guages and methods that assume direct access to  memory  anywhere
and at anytime, but through these languages and methods it facil-
itates the kind of programatic thinking that most Humans are  in-
clined  to  learn the most easily.  Some would argue that the von
Neumann architecure and the langauges and programming methods  it
encourages are brutish and inelegant, but the simple fact is that
it has provide the world with a vast array of  technologies  that
might not have been practical otherwise.

Another characteristic of the von Neumann architecture that makes
it appealing, is that it is easy to  manufacture  computers  that
implement this kind of architecture. Consider that the very first
commercially successful computer that was designed to  be  easily
manufactured and "upgradable" was the IBM 360.  IBM pioneered the
standardization of parts and computer "families." And while  some
might argue that their motivation was purely to sell as many com-
puters as possible, the motivation of the engineers was  probably
just  as  strongly  driven  by  the  technical  challenge  of the
project. (I recommend reading Fred Brook's, "Mythical Man  Month"
for insights into the effort to produce the 360 series).

There  are  many  other reasons that the von Neumann architecture
persists, but it comes down to practicality - in design, manufac-
turing,  and use (including programming). In the installment that
I write  discussing  the  programming  requirements  of  the  Boy
Scout's  Computer  Merit Badge, I will discuss in more detail the
various approaches (or "paradigms") used by programming languages
and  software  developers - including more on "procedural" versus
"functional" programming,  where  "object  oriented"  programming
fits in, and will continue tying these issues back into the back-
ground I've provided here and in  the  other  sections  regarding
what a computer really is.

I will not be fulfilling the last part of requirement 1, which is
to list 4 uses of a computer. I believe one can do this on  one's
own.

The  next  installment  will  be discussing requirement #2, which
says:

Do the following:
   1. Tell what a program is and how it is developed.
   2. Give three examples of programming languages and what types
      of programming they are used for.
   3. Describe a source program and an object program.

Until then, take care.


--
Powered by vee
Copyright © 2006-2010
FreeBSD
Perl
Qore