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: <01bb853c$be3b2620$87ee6fce@timpent.airshields.com>#1/1 X-Deja-AN: 172948062 references: <01bb83cc$fb35e180$87ee6fce@timpent.airshields.com> <4u8lff$3bs@solutions.solon.com> <01bb846c$e51df220$87ee6fce@timpent.airshields.com> <4uahfe$bao@solutions.solon.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: Peter Seebach wrote in article <4uahfe$bao@solutions.solon.com>... > In article <01bb846c$e51df220$87ee6fce@timpent.airshields.com>, > Tim Behrendsen wrote: > >Peter Seebach wrote in article > ><4u8lff$3bs@solutions.solon.com>... > > >Not to get into a debate on the meaning of abstraction, but the > >point is that there is very little hidden from the student when > >they are learning assembly. This allows them to better concentrate > >on the basics of algorithms, because they are not distracted by syntax. > > Huh? > The basics of algorithms are hidden from them, when they are sitting > around counting bytes and remembering the mnemonics for operations. > > Assembly has more syntax per operation done than anything else. But the syntax is very straight forward and direct. There are very few operations in assembly that need to be learned. > >Of course, but I'm talking about abstractions of assembly, i.e., > >HLLs. Remember, C (or any HLL) does not really exist as far as > >the computer knows. Assembly is the direct raw instruction set of > >the physical machine. If the student is learning algorithms in > >assembly, they are unquestionably learning the algorithm, and not > >just some vague concept wrapped in 10 layers of wool. > > No, they're learning assembly. Assembly is relatively hard. No amount > of abstraction in a language will hide the algorithm; the more abstract the > language, the more visible the algorithm, because there's less and less there. > > The only real exception is when the language encapsulates an algorithm; using > qsort() does not teach you a sorting algorithm. But writing a quicksort() in > C will teach you at least as much about quicksort as writing it in assembly. Yes, but will it teach you as much about *computers*? The reality is that the computer does not execute C. > >> >Perhaps a better question is, which is more important: Learning > >> >abstractions or algorithmic analysis? I say that algorithmic > >> >analysis is 10 to 1 more important than abstractions. > > >> "Learning English is 10 to 1 more important than learning any language." > > >True, but don't get me started on the English skills of some of > >my applicants! > > Huh? The point of my statement is that English *is* a language. Algorithmic > analysis cannot be more important than abstractions, because it's a subset of > abstractions. That is simply not true! That is like saying that thought is a subset of language. Thoughts are expressed in language, but they are not dependent on a particular language. I don't know about anybody else, but when I think about an algorithm, I have a visualization of the data moving around and going through transformations. I get a feel for the efficiency by thinking about how much work is involved in doing the movement/transformations. I want students learning these concepts for the first time to get this same feel, without vaguely memorizing algorithms, which is what I think happens now. I think one of the reasons algorithms get memorized rather than learned is that they are protected too much by the abstraction of arrays, rather than the reality of memory. -- Tim Behrendsen (tim@airshields.com)