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: 1014db,6154de2e240de72a X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,97188312486d4578 X-Google-Attributes: gid103376,public From: "Larry J. Elmore" Subject: Re: What's the best language to start with? [was: Re: Should I learn C or Pascal?] Date: 1996/08/23 Message-ID: <01bb9090$9d71ec80$456700cf@ljelmore.montana>#1/1 X-Deja-AN: 175820544 references: <01bb846d$c6c01780$87ee6fce@timpent.airshields.com> <840288278snz@genesis.demon.co.uk> <01bb8c89$9023e3e0$87ee6fce@timpent.airshields.com> <4vgs4p$evl@news.accessone.com> <01bb903e$bee0db80$87ee6fce@timpent.airshields.com> organization: CampusMCI newsgroups: comp.lang.c,comp.lang.c++,comp.unix.programmer,comp.lang.ada Date: 1996-08-23T00:00:00+00:00 List-Id: Tim Behrendsen wrote in article <01bb903e$bee0db80$87ee6fce@timpent.airshields.com>... > Bengt Richter wrote in article > <4vgs4p$evl@news.accessone.com>... > So what? Remember who we're talking about. We're talking > about Joe Schmoe off the street in CS 101. Are we going > to hit him full-bore with the entire universe of possible > computer architectures? You have to start somewhere, and > you have to try and convey the procedural nature of the > computer in the simplest possible terms. Speaking as a sophomore in the CS program at Montana State University, I must agree most wholeheartedly with Tim. The program here starts out teaching simple program design in a generic PDL with a lab in C, Fortran or Ada. The rest of the program is mostly Ada 83, though Ada 95 is coming Real Soon Now. Most of the students with little prior experience with computers beyond playing games and using a word processor appear to have very little understanding of what they are actually doing. It seems a lot like learning English without learning English grammar. Yes, you can write fairly decently, but you'll never really command the language or communicate as clearly as someone who does understand the grammar. While I'm only a sophomore in college, I've been learning about and programming computers since 1981 on my own, starting with a TRS-80 Model I with 48k RAM and Basic. I've taken a handful of college classes before I started college "for real" this time, things like basic EE, digital logic, Fortran, plus a 6-month electronics tech school in the Air Force. I don't think there's any substitute for learning what's "really happening" in the machine at an early stage. > > trivial. But I don't think looking at assembler is a good > > way to understand system-level workings of things, even > > though it may help with a given primitive. Even C can > > be too low a level. How do you see object hierarchies in > > assembler? Or even C++ source code -- you need a way of > > seeing the woods as well as the trees. > Indeed, all this is important ... later. They are simply > not capable of understanding any of this completely until > they have grasped the procedural nature of the computer. Absolutely correct! One can't put up a building without a proper foundation... > > execution units, pipelines, etc. Perhaps what is needed > > is a standard virtual machine for teaching purposes. > > I agree. I think I mentioned this a long time ago, but > it got lost in the noise. I've suggested a 68000 or 6809 > processor; nice orthogonal instruction set. It's not that > I want everyone to learn assembler so they'll use it > everyday on the job, I want them to get a "feel" for > data movement/flow. Yes, definitely use a simple machine! The other stuff (caches, virtual memory, pipelines, superscalar or parallel processors) can all be taught later! It can also be used to illustrate the history of computer design as all these features were developed decades ago for mainframes and now are being used by microprocessors. > Bottom line, you pick a nice, simple architecture! Heck, > CP/M on a Z80! That's what I learned on, and it's quite good for learning the basics. Especially why Intel processors have the architecture they do now. Also teach 6809 to compare another simple, but very different architecture. (And a much more elegant one, in my opinion. I really liked the 6809 (and OS/9) in the Tandy Color Computer way back when). This is a great way to demonstrate simple operating systems, and how programs make calls to them. I strongly believe such a basic beginning is vital to really understanding what one is doing, even if you never actually use it again. There's more than a few students in CS here that _don't_ understand exactly what it is they're doing or why... Going immediately on to OO will just confuse them more, and unnecessarily, IMHO. Larry Elmore ljelmore@montana.campus.mci.net