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
