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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID 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: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public From: huang@mnsinc.com (Szu-Wen Huang) Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/08/08 Message-ID: <4ubnhr$714@news1.mnsinc.com>#1/1 X-Deja-AN: 172850545 distribution: inet references: <4uaqqg$203@mulga.cs.mu.OZ.AU> <01bb84b4$75304ce0$87ee6fce@timpent.airshields.com> followup-to: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada organization: Monumental Network Systems newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-08T00:00:00+00:00 List-Id: Tim Behrendsen (tim@airshields.com) wrote: : Fergus Henderson wrote in article : <4uaqqg$203@mulga.cs.mu.OZ.AU>... : > So which is better use of a student's time, writing 100 lines of : > quicksort in assembler, or using C and writing 20 lines of quicksort, : > 10 lines of insertion sort, 20 lines of heap sort, 20 lines of : > merge sort, and 30 lines of glue to test them all out? : 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. [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. : > 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? : 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, 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.