Way to go, Grumpy Fred!
I was reminiscing about my old Atari days after that note came up about
the Atari machine at the yard sale and did some web searches last night
to see what I could find regarding the work I did. The real hoot was an
article someone had written about some of my code (written back around
1983) and how they were perplexed because I wrote a multiply-by-40
routine in assembly rather than use a lookup table. I laughed because
they obviously didn't understand the situation. We were writing
full-blown arcade-style games for machines with 16K of memory, including
the video RAM. We were squeezing code into the display's vertical
blanking interval, where a couple of clock cycles made the difference
between a good game and one with screen glitches.
I remember one program where I, honest to god, had to optimize the code
because I was something like 7 bytes too big, and had to go through the
code and figure out whether I could move some data to the 6502's "page
zero" RAM or use some other technique to shave off the extra bytes!
Another huge project I did on the Atari 8-bit machine required my own
home-made overlay mamager. God, was that fun.
Nowadays, memory limits mean nothing to most people, and I have to admit
that I haven't written any assembly code for a while, but 3D Studio MAX,
the pinnacle of my programming career, mostly written in C++, has
selected bits and pieces I wrote in assembly because there's still a
part of me that believes in squeezing every bit of speed out of a
processor in certain circumstances.
There are times I really miss the old days and the incredibly fun
programming challenges that we solved in assembly language. It is too
bad that most people don't know how to use it any more -- Have you ever
looked at some of the code these C++ compilers spit out? (Shudder)
-Tom
Fred Cisin wrote:
Regardless of whether you actually USE it in the
project,
if you do not have an understanding of machine language,
then you can not write a good "driver", or anything else
that directly addresses hardware.
Regardless of whether you actually USE it in the project,
if you do not have an understanding of machine language,
then you can not write a good operating system, or any
other system software.
Regardless of whether you actually USE it in the project,
if you do not have an understanding of machine language,
then you can not write a good game, or anything else that
needs to be efficient.
Regardless of whether you actually USE it in the project,
if you do not have an understanding of machine language,
then you can not do a good job of optimizing ANYTHING.
Regardless of whether you actually USE it in the project,
if you do not have an understanding of machine language,
then you can not do a GOOD job of programming anything.
Clancy and Harvey said,
"Nobody programs in assembly language any more, nor ever will again."
Neither of them has ever written a commercial product,
nor anything that I would consider to be a "real" program,
only stuff to teach an abstract concept of Computer Science.
I do not think that it is appropriate to teach recursion,
without teaching how the stack works!
--
Grumpy Ol' Fred