[comp.lang.fortran] Assembly or ....ok

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
-------------------------------------------------------------------------