On Jan 15, 2008 12:24 PM, James G. Sack (jim) <[EMAIL PROTECTED]> wrote:
> Christopher Smith wrote:
> > Tracy R Reed wrote:
> >>..
> >> I don't understand the confusion over pointers. I took the data
> >> structures class, made linked lists. doubly linked lists, queues,
> >> stacks, hash tables, etc. etc. It wasn't really a big deal.
> > Yeah, and you can learn how to make all of those things in LISP & Scheme
> > from cons cells, or in Smalltalk & Java from arrays and objects. Really,
> > aside from some funky hacks like using xor to make compact doubly linked
> > lists (and even then), it's hard to imagine a self-respecting language
> > that you can't teach data structures and algorithms with, regardless of
> > whether they have pointer arithmetic.
>
> Nicely put TR & CS.
>
> I assume most people would say that any self respecting curriculum would
> more-or-less thoroughly cover data structures and algorithms.
>
> I wonder what variations would show up in the answer to:
>
> ==> What language is best for teaching data structures and algorithms?
>
> Regards,
> ..jim

Not quite on topic but I think it relevant.

About 15 years ago I was down in the Philippines visiting
my wife's family. Feeling a little bored I went into
the nearest large town San Fernando, Pampanga. This was
a couple of years after Mt. Pinatubo (a volcano) had blown
up and large flows of volcanic ash were flooding the town.

I found a book store and walked though the flooded ground floor then
up some stairs where I found a small technical section. There I
discovered a copy of a truly wonderful book, "An Introduction to
Elementary Computer and Compiler Design" by Dennis R. Steele
published by Elsiver North-Holland, Inc. in 1978.

The book including appendices and index is only 151 pages long
but it describes all of the hardware built up from simple
gates of simple computer. The book assumes _no_ previous knowledge
of logic or computing. So it begins by introducing boolean logic.

A few simple gates are discussed and a flip flop is constructed.

The author then proceeds to introduce a computer that has
8 (three bits) instructions and 64 words of memory (i.e.
six bits) Memory words are 9 bits long, each containing
one instruction (three bits) and one address (six bits).

This takes all of 39 pages.

Having hardware, the author defines a simple high level
language PL/M. This takes 7 pages and results in 12 lines
of Backus-Naur form (BNF.)

Steele then implements a compiler for this language,
introducing regular grammars and postfix notation among
other things. This eats up almost another 100 pages.

That's it. No kidding!

It is really kool.

The book puts all of the elements of hardware and
software in one incredibly succinct and complete package.

I consider it perhaps the best single introduction to
computers that I have ever encountered aside from a few
days discussions with Chuck Moore ;-) I think it deserves
to be far better known and used as a first course for
anyone who would like to know what a computing system is.

The book has inspired a web site, a XYLINX implementation
with VHDL source code and also a simulator. See
http://www.simpledigitalcomputer.com/

BobLQ

-- 
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg

Reply via email to