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: 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: 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/09 Message-ID: <4ug4eh$qn8@zeus.orl.mmc.com>#1/1 X-Deja-AN: 173233954 references: <01bb846c$e51df220$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-09T00:00:00+00:00 List-Id: In article <01bb846c$e51df220$87ee6fce@timpent.airshields.com>, "Tim Behrendsen" writes: > > 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. Yeah, but they are distracted by learning the computer architecture. When I was first introduced to programming in assembly, the learning of algorithms was not the purpose of the course. What was learned from programming in assembly was the underlying architecture, what registers were, how memory was addressed, etc. > 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. I though assembly was an abstraction of the raw instruction set, not exactly the raw instruction set. After all, the assembler allows one to abstract memory locations by assigning names or labels to them, it abstracts the instructions by assigning shorthand pneumonics to them, many allow the abstraction of code fragments which might perform some higher level function by allowing the programmer to implement them as macros, etc. There were two or three concepts that were emphasised through the teaching of assembly. First was learning the underlying computer architecture, its registers, how it addressed and used memory, how it executed the insructions. Second was learning the purpose and usefulness of an assembler, and what an assembler was. We learned about one/two/and multi-pass assemblers, how assemblers made it easier to program a computer through abstraction (try generating the bit patterens to be stored in memory for a small program by hand). Our primary project for the class was to code in assembly a two pass assembler which implemented a subset of the instructions for the machine (some Harris mini-computer the school had) we had. The only specific algorithms we were taught dealt with some of specific design issues that came about when attempting to implement certain aspects of the assembler, such as hashing functions for storing/retreiving into a symbol table, etc. Come to think of it, these algorithms were presented to us and studied using some higher level psuedo code. While we did implement them in assembly, I really don't think that exercise helped us to understand the algorithms any better. -Bob