On Mon, 07 Apr 2008 08:26:35 -0700 Les <hlhowell@xxxxxxxxxxx> wrote: > On Sun, 2008-04-06 at 18:51 -0500, John Thompson wrote: > > On 2008-04-04, Robert Rabinoff <rar113@xxxxxxxxxxxx> wrote: > > > > > When I first learned to program in 1964 we used an IBM 1620, fondly known > > > as CADET (Can't Add, Doesn't Even Try). > > One of my favorite books was Algorithms + Data Structures = Programs. > Don't remember who wrote it, and I'm sure it is somewhat archaic right > now, but the lessons about how you structure the data impacting the > speed and efficiency of a program were precious to me. > > When I learned to create double-linked chains for data structures, I was > able to create new and novel programming techniques, and coupled with a > good round of lessons on sorting (bubble, double bubble, hash tables, > quick sort and insertion sort ) along with some illustrations of speed > of sort vs data table size, and how to utilize one for one type of data > and another for different data entry, I gained great insight. > > Another algorithm that I love, but don't yet fully understand is the > PRML algorithm. I think it has lots of applications if one can > structure the data as a net. > > Optimal path algorithms are also worthy of some additional study. > > And if you are doing image processing some 2d Fourier Transforms, and > some efforts with Gaussian filters is great. If you do not know what > these are, please look them up. Some of the new pattern recognition > stuff is pretty neat, too, but I am not as conversant with them as with > the others. Line following algorithms, and other algorithms to help > separate images from each other are great, too. > > Some of the newer speech recognition algorithms are so proprietary you > cannot see their underlying algorithms, but this is an area worthy of > greater study as well. > > Distributed computing is neat, and I am interested in its operation, > scheduling, flagging data, and separating algorithms are also areas of > interest. I still have a book on CAPP architectures here somewhere. I > think that the 80386(tm) processor had some special registers to enable > CAPP operations on a hardware level, but I believe they were dropped > with the 80486(tm) and later processors. > > You can read libraries of books to learn about what is out there, but > coding and getting a few dozen good algorithms to work that apply to the > 80% job of your desired work will take you a long way to being one of > the top guys. Then learning how to find and implement new algorithms > will take you the rest of the way, in my experience. > > And for all the emphasis on Object programming, either OO which only > works at compile time, or realtime objects, without ultimately having > good underlying algorithms, the programs are just poor examples of how > to confuse the person reading or working on your code. Comments are > necessary, and for objects documentation about the object, its data > structures, and the available algorithms is important to make them > really portable and useful. > > Repeat after me: Self documenting code is an oxymoron. > > And even if you are a wizbang programmer, if your code is too obtuse > (and I have written my share of obtuse programs), if the next guy cannot > understand it, or what it actually does, it is not effective in the real > world. > > Regards, > Les H > Bible author: Niklaus Wirth from ETH Zuerich, father of Pascal and Oberon. Best regards, Bob