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=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC 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: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public From: rgilbert@unconfigured.xvnews.domain (Bob Gilbert) Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/08/19 Message-ID: <4v9nei$kjf@zeus.orl.mmc.com>#1/1 X-Deja-AN: 175088538 references: <01bb8c89$9023e3e0$87ee6fce@timpent.airshields.com> organization: The unconfigured xvnews people reply-to: rgilbert@unconfigured.xvnews.domain newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-19T00:00:00+00:00 List-Id: In article <01bb8c89$9023e3e0$87ee6fce@timpent.airshields.com>, "Tim Behrendsen" writes: > > And they don't get wrapped up in implementation > details if they write it in C? As compared to assembly, I'd say they certainly won't get wrapped up in the details (I'd prefer Ada over C though, C can be a bit cryptic). I can write in a HOL and not worry about memory addressing modes (darn, forgot to load that data page pointer!), I don't have to worry about internal data representation (now can't I just shift right to divide by two, even if it is a float?), I don't have to worry about pipeline conflicts (I just read X into register R1, so why can't I test R1 in the very next instruction?), and whole host of other architectural details that obfuscate the lesson to be learned (sort algorithm, or whatever). And what happens next term when the school replaces the system on which they teach assembly now for some new and different system? Now your students have to go through the learning curve (of assembly) all over again. At least HOL's are fairly portable and stable across platforms. > My primary point is > when it's implemented in assembly, and you have to > manually move the bytes from one location to another > rather than have the compiler "carry them for you", > you get a better view feel for not only what the > algorithm is doing, but what the computer itself is > doing. I agree that learning some sort of assembly and implementing a number of programs (algorithms) is a valuable lesson, but it is a lesson in computer architecture much more so than a lesson in learning algorithms or problem solving. > The most important thing a student can learn about > computers is the fundamentally simple nature. The > mystery of execution *must* be broken down in order for > the student to being to think like a programmer. > Once they can think like a programmer, all the rest > of the knowledge they learn becomes trivial. I think your viewed scope of computer science is tad narrow. I'd like you to show how learning assembly as a first language will help a student better understand the design of a relational database, or solve any of the class of problems in mapping theory (find the shortest or fastest route from Miami to Seattle), or deal with networking and concurrency issues. And it seems to me that one of the largest areas in the study of computer science is language theory and compiler design, and it is hard to teach that if the student isn't introduced to a HOL early (perhaps first) in their curriculum. -Bob