Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!elroy.jpl.nasa.gov!jarthur!nntp-server.caltech.edu!toddpw From: toddpw@nntp-server.caltech.edu (Todd P. Whitesel) Newsgroups: comp.sys.apple2 Subject: Re: Re- HLLs vs. Assembly Message-ID: <1991Apr6.100927.21953@nntp-server.caltech.edu> Date: 6 Apr 91 10:09:27 GMT References: <9104060651.AA18946@apple.com> Organization: California Institute of Technology, Pasadena Lines: 72 MQUINN@UTCVM.BITNET writes: >This is true too. Knowing assembly, you know the limitations of the machine >your working on (and sometimes machines you're not all that familiar with). >This is very important when doveleping software. Hear, hear. I taught myself a LOT from the ground up, by hacking apart the ][+ I had in high school -- the original Apple ][ is one of the most perfect training machines ever designed. It's simple enough for a single person to understand quite well in a reasonable amount of time, and it has lots of sneaky little hacks (some were worth patents) that make you really think hard about real-life engineering trade-offs -- especially when you consider the conditions Wozniak had to deal with when he was designing it (board area, chip availability, NTSC -- itself an admirable hack, and so on). Learning assembly on the Apple introduced other concepts: I/O redirection, simple CLI and mini-assembler (I kludged a RAM resident one from INTBASIC that I could BRUN), hooks to support a memory-resident language system, ROM-resident routines for handling the built in I/O hardware, driver-based peripheral hardware (the Pascal and smartport protocols), and the fact that you could drop down to the bottom of the system and figure out exactly how things worked. This hands-on feel is totally absent from a lot of modern machines and the trend bothers me. When I got to Caltech, I breezed through the freshman digital electronics course, and similarly aced the sophomore level microcomputer fundamentals course, in which we did 80188 assembly and then built a speech digitizer around an 80188. (My project kicked butt, and would have actually garnered an A, had I not overloaded that term and been too burned out to finish the final software assignment on time. I got an extension and when it was finished the TA wanted me to get an A anyway, but the prof wouldn't make an exception. I got dropped one letter grade and got a B+.) About that time, I started seriously getting into C, and the assembly experience I had gained proved extremely valuable. I took to C like a natural, and impressed the Microsoft interviewers with only ONE real C program under my belt. I got a better offer from Apple though, although the work there was boring once the group hired a permanent guy to do all the interesting stuff. This year, with considerably more C programming behind me, I managed to get a summer offer from Microsoft while I was still at their offices for the interview. (buff, buff) Why am I bragging like this? Because I believe I owe most if not all of it to having learned assembly at an early age. I'm a positive example of the consensus that seems to be evolving here, that Assembly concepts should be a vital part of a good CS curriculum, and that they should be taught early on, because most of the hard-to-learn HLL concepts derive directly from Assembly concepts that are considerably easier to learn. In my specific case, I taught myself at first, and then honed things while taking the first levels of Caltech's well structured (but small) CS program. Many of us took a course on provability and HLL's at the same time as the assembler course, so we were learning fundamentals from both ends at once. Unfortunately, there are no O/S design or Compiler design courses here, because there are only 6 CS profs actually teaching. >understand why alot of things work or why they don't work, because he doesn't >understand assembly language or the limitations of the hardware. >[by the way, he's a mac guru]. I have to explain to him how his mac works, This is what really bothers me about the Mac -- it has produced an astounding number of people who think they know a lot about computers but when something really goes wrong they are soo clueless... Todd Whitesel toddpw @ tybalt.caltech.edu P.S. maybe Doug Gwyn will tell us how much his computers cost and what super studly software they are running, so we can all run out and buy it and never use assembler again... :)