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: fc89c,97188312486d4578 X-Google-Attributes: gidfc89c,public X-Google-Thread: 109fba,baaf5f793d03d420 X-Google-Attributes: gid109fba,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/07 Message-ID: <01bb846c$e51df220$87ee6fce@timpent.airshields.com>#1/1 X-Deja-AN: 172704289 references: <01bb8342$88cc6f40$32ee6fcf@timhome2> <01bb83cc$fb35e180$87ee6fce@timpent.airshields.com> <4u8lff$3bs@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-07T00:00:00+00:00 List-Id: Peter Seebach wrote in article <4u8lff$3bs@solutions.solon.com>... > In article <01bb83cc$fb35e180$87ee6fce@timpent.airshields.com>, > Tim Behrendsen wrote: > >The question is (or has since become), is it better to start a > >student learning the fundamentals, i.e. assembly and the internals > >of computers, and then move on to abstracts; or is it better to > >start with abstractions such as C or C++ and perhaps never give > >the fundamentals, since "compilers are so good nowadays that > >it's useless to know assembly, and in fact, can be dangerous." > > What makes you think assembly is a fundemental? Abstraction is *the* > fundemental tool we have. Assembly is not fundemental by any stretch > of the imagination. > > Learning the principles of computing machines would be helpful. Seeing them > demonstrated on a specific machine might be helpful. But assembly is not the > only way, or the best, to teach these fundementals. 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. > >I say that based on my experiences testing people straight out of > >college (BS, MS, or PhD, makes no difference), we are packing > >their heads so full of abstractions that they are unable to think > >anymore. I think it's much better for students to learn pure > >algorithmic analysis without all the abstraction distractions that > >can be better learned later on, and learned easier. > > What are you *talking* about? Algorithmic analysis is fundementally an > abstraction. Rather than looking at the *specific* costs of the algorithm, we > look at the *kinds* of costs. N^2 vs. log(N) complexity is entirely an > abstraction. 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. The *reality* is, students graduating today are just not getting it. > >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! -- Tim Behrendsen (tim@airshields.com)