[comp.sys.amiga.programmer] Assembler and Good Programming

mr3@ukc.ac.uk (M.Rizzo) (03/31/91)

In article <mykes.0476@amiga0.SF-Bay.ORG> mykes@amiga0.SF-Bay.ORG (Mike Schwartz) writes:
>
>I know lots of people that don't know assembler and think of themselves
>as great programemrs.  If they don't understand what it means to use
>assembler, their opinions carry little weight.

I am sick and tired of seeing posts by people who think that they
are the greatest programmers in the universe because they can program
in assembly language.

First of all, there is a difference between knowing how to program
in assembly language and using assembly language to hit the Amiga
hardware directly. Programming in assembly language is EASY. It is
also tedious but that does not make it difficult. Knowing how to
use the Amiga hardware directly is another issue - it is harder
than knowing how to program in assembly language, but it has
nothing to do with being able to program in assembly language.
It is more a matter of being a good hardware engineer - definitely
not a good programmer.

Some of the essential qualities of a good programmer:
	o Using the appropriate language for the task at hand - 
          this need not be the whole program, but just a small
          part of it (as is often in the case with the need for
          assembler)
	o Writing well-expressed, concise, readable programs
	o Understanding and using software engineering concepts
          such as abstraction, modularity and re-usability
	o Writing portable routines where possible

I do not consider the ability to program in assembly language a required
quality of a good programmer: I know people who don't know assembler
and are excellent programmers. A lot of UNIX programmers don't know
anything but C and they've worked on far more complex projects than
any Amiga game. In UNIX its a big sin to program in assembly language
because you lose portability across different platforms. So
Mr. Schwartz, go tell the UNIX community that their opinions carry
little weight ! 

Then there are the MASTERS who devise new ways of writing programs,
making it possible to write better programs from a Software Engineering
viewpoint. There are other types of programming languages such
as functional languages e.g. Miranda, and declarative languages
e.g. Prolog which take a totally different approach to programming.

Ever tried Miranda ?  Complicated programs can be written so concisely
and neatly - take a look at quicksort in Miranda - just a few lines
as compared to the dozens (or hundreds) you'd need in assembler. It
can be harder to write programs in Miranda, MUCH harder than in assembler,
but it removes the tediousness associated with assembler and at the
end of the day, you're left with programs which are shorter, more
concise, understandable, easer to modify and re-use elsewhere etc.

The people with the REAL programming skills are those with a
good understanding of software engineering skills. Assembler
cannot teach you these skills - it is totally hopeless as far
as conciseness, readability, portability and abstraction are
concerned. So for those people who ONLY know assembler and think
they are top programmers, sorry, but as far as I'm concerned
you've still got a long way to go.

Michael Rizzo

PS The above is my humble opinion, based on the experience I've had in
the last eight years or so. It is not my intention to offend anyone -
I only wanted to put a few things straight 'coz I got annoyed :-)

PPS Anyone know of an implementation of a functional language for the
Amiga ?  I'd be interested in an implementation of the ML langauge (not
purely functional) as well.