Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!caip!topaz!husc6!ut-sally!im4u!milano!janssen From: janssen@milano.UUCP Newsgroups: net.cse Subject: Re: cs and ce Message-ID: <2257@milano.UUCP> Date: Thu, 4-Sep-86 19:52:57 EDT Article-I.D.: milano.2257 Posted: Thu Sep 4 19:52:57 1986 Date-Received: Fri, 5-Sep-86 20:33:43 EDT References: <1099@bu-cs.bu-cs.BU.EDU> <888@usl.UUCP> Sender: janssen@milano.UUCP Organization: MCC, Austin, TX Lines: 50 Summary: knowing what you're running on In article <888@usl.UUCP>, elg@usl.UUCP (Eric Lee Green) writes: > [...] who programmed > the little disk controller/DOS in the CBM 1541 disk drive? The EE who > designed it! Which is why CBM Dos sux royally... a programmer, as vs. > an engineer who happened to know a little 6502 assembly language, > would have done a much nicer job of it, and I would be using the DOS, > not fighting bugs and "features" in it. [...] Unix would have never > come into being if Kernighan et. al. had not known how to handle disk > drives and RS-232 ports... > > It is impossible for a university to teach someone about all such > things. [...] I really don't think that learning how > to program in IBM 370 assembly language is going to help you when you > need to program an IBM PC, Apple 2, C-64, or other simple > microcontroller-style device in assembly language, since you can't and > don't have to deal with the actual machine with MVS etc. (everything > goes through the OS, of course). Classic conflict between the real interface and the virtual interface. Most schools I've seen do teach some EE topics to CS students, but that's mainly because it's a mixed EE&CS department, or the degree is in Computer Engineering, rather than Computer Sciences. Perhaps all it means is that a person with a CS degree is qualified to work only with the virtual machine. In that case, though, the degree should really be in Software Studies or Systems Sciences. You've got to be willing to not know *something* -- and admit it. Anecdote: In writing a terminal driver for a 68000 board with a dual channel SIO, one part called for reading a byte from one serial port and writing it to the other. Simple to do with a nice architecture, right? MOVB 4(A6),16(A5) (or some such). Right from the input register of one port to the output register of the other. Wouldn't work, of course. Bad hardware! Change chips, then boards, and still doesn't work. Bad software? How???? Turns out the chip won't turn around fast enough for two accesses in one instruction, so the code had to be MOVB 4(A6),TMP / MOVB TMP,16(A5). And it didn't really help that the code was actually in C: port1.output = port2.input; But how are you going to catch things like that without knowing something about the hardware? How do you know when you're too "low-level"? Bill -- Bill Janssen, MCC Software Technology 9430 Research Blvd, Austin, Texas 78759 ARPA: janssen@mcc.com PHONE: (512) 339-3682 UUCP: {ihnp4,seismo,harvard,gatech,pyramid}!ut-sally!im4u!milano!janssen