Drool@cup.portal.com (Paul James Coene) (11/30/88)
In article <1961@crete.cs.glasgow.ac.uk> orr@cs.glasgow.ac.uk (Fraser Orr) writes: >In article <729@convex.UUCP> dodson@mozart.UUCP (Dave Dodson) writes: >>I believe it is important to learn assembly language for some computer >>because that is how you learn how computers _really_ work. This knowledge >>can help you program better in any language. > I tend to agree wholeheartedly with Fraser on this one. Have you ever tried to help someone who has only a base knowledge of HLLs under his belt, when they are trying to debug a debug a C program? Concepts such as the stack, what a core dump is, even explaining pointers is tough when the basics gained from exposure to assembler is lacking. I certainly don't profess to be an assembler wizard, but having some basics behind me has been invaluable. ---- Has anyone seen my staff? - Drool Rockworm ---
elg@killer.DALLAS.TX.US (Eric Green) (12/01/88)
in article <11915@cup.portal.com>, Drool@cup.portal.com (Paul James Coene) says: > In article <1961@crete.cs.glasgow.ac.uk> orr@cs.glasgow.ac.uk > (Fraser Orr) writes: >>In article <729@convex.UUCP> dodson@mozart.UUCP (Dave Dodson) writes: >>>I believe it is important to learn assembly language for some computer >>>because that is how you learn how computers _really_ work. This knowledge >>>can help you program better in any language. > even explaining pointers is tough when the basics gained > from exposure to assembler is lacking. I certainly don't profess to be an > assembler wizard, but having some basics behind me has been invaluable. Ah yes, time to trot out one of my standards, once again (usually, it's on comp.edu, but...). Anyhow, I'll have to agree about the pointers/assembly language correlation. What I seem to have found, among those I know who don't know the difference between "Vax" and "Unix", is that they view pointers as "magic" things that damnedably difficult to use because they do "weird" things. Whereas anybody with assembly language under their belt knows darn well that a pointer is just an address, and that you can follow them by dereferencing ("you mean it's just like loading it into R0 and doing indirect? GEE!"). I have long advocated that programmers need to know more than how to feed Pascal and "C" to a "black box" that spits out answers, to the extent of saying that 1st year CS majors should take digital logic and microprocessors as a corequisite to the usual "bang Pascal into the computer" introductory course. If you don't know the contents of that "black box", if you don't know HOW it spits out those answers, a) your sense of curiousity is seriously lacking, and b) don't be surprised if you're lost when your "black box" suddenly starts spitting out wrong answers. As for me, personally: I avoid using assembly language like the plague. I've had to write large assembly-language programs for 8-bit microcomputers, and liken it to getting teeth drilled insofar as enjoyment goes. Now that I'm programming a 68000-based machine, I'm glad I don't need to go all the way to assembler. BUT, I do find it useful to look at the assembly-language output of my compiler, occasionally... especially when I'm doing something silly like, uhm, "**(xyz[5])++" (I'm paranoid... when I write a bogosity, I want to make sure it does EXACTLY what I want it to do). -- Eric Lee Green ..!{ames,decwrl,mit-eddie,osu-cis}!killer!elg Snail Mail P.O. Box 92191 Lafayette, LA 70509
anderson@ncrcce.StPaul.NCR.COM (Joel Peter Anderson) (12/01/88)
As a user of both high level languages, applications, and assembler I have to say that in my work (telecommunications software) even though I use C for a lot of my work I have to know assembler to 1)figure out why the program is not behaving as I expected and 2) the best way C generates the best code. I learned assembler in college on a Macro11 simulator (no one wanted to trust us on the mainframe with real machine language, I guess) and found that somewhat useful. If I never had to write real assembler it would have been enough. (we wrote an assembler in Macro11 and used it to assemble itself). Actually my own experience with an assembler on my own computer (a VIC20 at the time) was far more practical and meaningful when I had to teach myself BAL. Now to the point: most people don't really need to know the guts of assembler. They can program Forth, Lisp, BASIC or C and never look inside the box. On the other hand - in order to psychoanalyze the machines (mis)behaviour the mental model that assembler experience provides (even in simulation) will go a long way toward lighting the path. So... How about CoreWar? A nice, fun non-threatening assembler. An interesting HLL programming project (I want to write one... maybe in FORTH...) it teaches the basics of machine language, multi-tasking, the internals of an assembler -PLUS - it has a popular appeal "learn to write your very own virus!". :-) ------------------------------------------------------------------------- "We know only the strong will survive, But the meek will inherit. So if you've got a coat of arms, oh friend, I suggest we wear it." John Mellencamp. ------------------------------------------------------------------------- anderson@c10sd3.StPaul.NCR.COM |UUCP: {rosevax, crash}!orbit!pnet51!jpa Joel Peter Anderson |ARPA: crash!orbit!pnet51!jpa@nosc.mil NCR Comten / Software engineer |INET: jpa@pnet51.cts.com -------------------------------------------------------------------------