| From: Niall O Broin <niall at linux.ie>
| Date: Fri, 6 Feb 2004 00:31:59 +0000
|[ ... ]
| Say it isn't so . . .
at least three things have surprised me about this
“assembly language‟ thread.
1. some people claiming programming in anything other than
<insert some HLL(s) here> is not useful/necessary. yet
other posters have given examples where it is vital, and
everyone on this list is using one or more systems where
it is done and is necessary.
2. some people confusing CS and/or Software Engineering with
programming. I myself suspect CS is an overloaded term
nowadays, but SE, at least in the academic world, is the
study of programming methodologies and techniques more than
programming itself. “The Software Crisis‟ is SE's Big Issue.
CMM and UML (not user-mode Linux!) are two well(?)-known
outputs of the SE discipline. the discipline seems so
isolated from actual programming there is a raging
debate whether or not CMM (e.g.) can be applied to CMM
itself; the code phrase is “is CMM a process?‟. (AFAIK,
to a day-to-day programmer, rather sneeringly (IMHO)
called by the SE academics a “practitioner‟, the answer
is an obvious “yes‟.)
OTOH, Software Engineer is also used a lot by for-profit
HR groupies to mean “expendable programmer‟, so the
confusion is understandable. I myself consider few of
the people (that I know) whose job title (that I also
know) includes “SE‟ engineers. also not, in some cases,
maybe.... ½ ;-)
3. “assembly language programming‟ and understanding H/W
(or bare metal) are not the same thing. assembly is
simply a way of expressing a program/algorithm; instead
int a, b;
a += b
you might say instead
.import _a, _b
ld4 r3, 0, _a
ld4 r4, 0, _b
add4 r3, r3, r4
st4 r3, 0, _a
but (I at least) fail so see any _significant_ difference.
yes, the (example) assembly requires temporary storage the
HLL does not seem to, but so what? and yes, the notation
is obviously different, but again, so what? where is the
fundamental difference? excepting that assemblers are
architecture-specific, it doesn't even matter (again in
any _significant_ manner) what the machine is! as one
poster said, you can learn assemblers/assembly as you
need to. some people say the same thing about HLLs.
to use myself as an example, I have written and debugged
assembly code for machines (plural) whose architecture and
assembler I never did grasp (at least not well enough to,
e.g., write an interrupt dispatcher); amusingly, in one
case this included some microcoding (for which you _do_
have to grasp the FSM being microcoded!).
conversely, I was never taught any assembler at U.,
because I had already self-taught myself two widely
different ones (the classic PDP-10 (and -20), a 36-bit
word-addressed machine, and the modern-ish PDP-11,
a 16-bit byte-addressed machine). for those who are
interested, the assembler on offer was IBM 370! ;-\
if my memory is correct, for that (required) class I
wrote a code-interpreter for a compiler instead (in
SIMULA-67). that experience was one of several which
was later a great help when I was hired to port a
certain O/S to a brand new CPU architecture, which
ultimately involved helping to design and verify that
architecture (I am a part-holder of a patent on the
interrupt system, albeit the patent is assigned to
the company (as is normal practice)).
so, should "CS‟ students be taught assembler? no, they
should be educated --- which will help them work out
the details themselves, be whether the problem is in
the HLL, the assembler, the microcode, the algorithm,
the HMI, the doc, etc etc etc, the process, and most
importantly perhaps, to proactively recognize/predicate
and maybe/hopefully prevent the problem that will happen.
that education may include a course which includes
practical assembly programming.
p.s. and yes, I have used punched cards. and a teletype.
and even (just once!) paper tape. not sure about the
coal or the bare feet in the snow however..... ;-)
«How many surrealists does it take to | Brian Foster Montpellier,
change a lightbulb? Three. One calms | blf at utvinternet.ie France
the warthog, and two fill the bathtub | Stop E$$o (ExxonMobile)!
with brightly-colored machine tools.» | http://www.stopesso.com
Maintained by the ILUG website team. The aim of Linux.ie is to
support and help commercial and private users of Linux in Ireland. You can
display ILUG news in your own webpages, read backend
information to find out how. Networking services kindly provided by HEAnet, server kindly donated by
Dell. Linux is a trademark of Linus Torvalds,
used with permission. No penguins were harmed in the production or maintenance
of this highly praised website. Looking for the
Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!