From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=BAYES_00,INVALID_MSGID, RATWARE_MS_HASH,RATWARE_OUTLOOK_NONAME autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,public X-Google-Thread: fc89c,97188312486d4578 X-Google-Attributes: gidfc89c,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public X-Google-Thread: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public From: "Tim Behrendsen" Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/08/08 Message-ID: <01bb8536$892ee260$87ee6fce@timpent.airshields.com>#1/1 X-Deja-AN: 172936595 references: <4uaqqg$203@mulga.cs.mu.OZ.AU> <01bb84b4$75304ce0$87ee6fce@timpent.airshields.com> <4ubnhr$714@news1.mnsinc.com> content-type: text/plain; charset=ISO-8859-1 organization: A-SIS mime-version: 1.0 newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-08T00:00:00+00:00 List-Id: Szu-Wen Huang wrote in article <4ubnhr$714@news1.mnsinc.com>... > Tim Behrendsen (tim@airshields.com) wrote: > > : I think it's more valuable to truly understand one or two algorithms, > : than to vaguely understand 5 algorithms. > > 1. Being able to write algorithm X in assembly doesn't make you > understand the algorithm better. It makes you understand whatever > platform du jour your school uses better. > 2. Vaguely understanding 5 algorithms is far better than understanding > one or two fully. The primary objective of algorithms courses is > to produce students that can *choose* which algorithm to use, > not to produce students who can memorize one or two algorithms. > In fact, there's rarely a programmer more dangerous than one that > has no broad knowledge of algorithms. My point is someone who has "vaguely" learned five algorithms has simply memorized them, and learned nothing about the general principles of how algorithms are created. Someone who has "the feel" for two algorithms very strongly are more likely to be able to extend that knowledge to creating new algorithms. Computer Science is one of the few, if not only, sciences where a student can derive all of it just by thinking. > [snip] > : > Which will give them experience of the idea of > : > having multiple implementations of the same interface? Which will > : > teach them how to write portable code? Which will give them more > : > experience with the sort of software engineering problems they are > : > likely to encounter in the Real World [tm]? > > : Easily learned. Later. More important to understand the > : procedural nature of the computer at first. > > If you think software engineering is easily learned, you obviously > haven't been in the real world. I live lame software engineering every day, believe me I understand the level of general ignorance. You can always fix someone's style, but you must plant the seed of thought early on. > : > Which will give them understanding of a range of different > : > sorting algorithms? > > : I would rather they have a better fundamental understanding > : of algorithms in general. > > I thought you just said it was better to "truly understand one or > two algorithms"? Make up your mind. General knowledge, or specific > knowledge? Truly understanding two algorithms is better than memorizing five algorithms, because that is what *gives" the fundamental understanding. > : If I may extend a famous quote, > > : "Teach a man an algorithm, and you have given him one solution. > : Teach a man to think, and you have given him all solutions." > [snip] > > Teach a man an algorithm and some I/O routines to enter the input > and display the output, then some routines to set up the stack, > then some routines to initialize data, Yes, and wouldn't they truly understand I/O routines and stacks after that? > then some reasons why > instruction X cannot follow instruction Y, then some reasons why > a small memory model isn't enough, and you confuse the man for > life. Yes, if your model is the brain-damaged 8086 model. I personally would use a 68000 to teach on because it's a nice straight-forward orthogonal instruction set. -- Tim Behrendsen