From: lezz@merlin.dev.cdx.mot.com (Lezz Giles)
Subject: Re: The need for an assembler (was: Favorite CPU)
Reply-To: lezz@merlin.dev.cdx.mot.com (Lezz Giles)
Organization: Motorola Codex, Canton, MA
Date: Fri, 21 Aug 1992 19:33:37 GMT

In article <1992Aug21.005430.11003@news.columbia.edu>, lasner@watsun.cc.columbia.edu (Charles Lasner) writes:
|>>Are you seriously claiming that you go straight from a mental picture
|>>of the final program to assembly without any intervening design steps?
|>
|>Are you saying it's *necessary* to go through committee meetings to write
|>code?
|>
|>All programs are a collection of small steps, even hll ones.  In the case
|>of assembler, it's often smaller still steps, sometimes it isn't, so what?
|>
|>You are proving my point, I blame academia for spreading this nonsense that
|>panders to mediocrity.  If I understand the problem well enough, I write the
|>code.  Maybe I write it on listing as I study it, maybe I write it on the
|>back of an old listing to save paper, or maybe I just type it into my
|>editor, but in any case, once past the *specification* of the problem (which
|>is 99% of the effort IMO) I just write the code.
|>
|>Perhaps the widespread use of more inefficient methods of writing code goes
|>hand in hand with the inefficiency of the code itself.
|>
|>I think there will be hll people here who will agree with me about most of
|>this; code is code; you think of it; you write it; you test and debug it;
|>you refine it; you repeat cycle 'til done.
|>
|>As explained in the Real Programmers story, the little toy that helps you
|>write flow charts was left behind by the previous occupant of the desk; perhaps
|>this is part of why he was previous, not present.

I can't let this pass without comment.  First, let me present my credentials:
I am a graduate in Computer Science and I've worked in computing for eight
years, all the time on large projects (the first was AT&T's 5ESS, rumoured
to be the largest software project ever, with at least a couple of thousand
developers at any time, and my current project has between 100 and 200
developers).  I've also worked on smaller projects at university, at summer
jobs, and as fill-ins during my working life.

In all the projects with more than 3 or 4 people on them, it has proved
_essential_ for us to write requirements and design documentation and for
us to review this documentation.  This is the only way that we can understand
our own part of the whole project and how it interacts with the rest of the
system, as well as giving us a method for recording decisions including
design and requirements changes.  As the number of people on a project
increases, the complexity of organising it increases by at least the
square of the number of people, so as projects get larger, formal inspections
and reviews get more and more important.  Even with only about 6 or 7 people you
should seriously consider change management tools such as RCS, for example.

Your opinions lead me straight to the conclusion that the largest program
you've ever written probably took you (on your own) no more than a week to
write, and probably it takes you about half that time to write most of
them.  I'm guessing here, but it seems reasonable that the vast majority
of people who write code for a living write larger programs than that.  For
those of us who do, high level languages are essential, as are requirements
and design documentation and all the other aspects of software engineering
that you denounce.

On a personal note, I take offense at the implication that (a) because
I use structured methods and a hll I write mediocre code, and (b) I write
inefficient code using inefficient methods.  I'm currently writing a lot
of code in perl, and this morning wrote a simple tokeniser (admittedly
not a parser) for C which took about three lines of code and took less than
half an hour.  I'd like to see you write a similar program in assembler
in under a day, and I'd love to see how understandable, modifiable,
testable and robust your code is.

Maybe the bottom line is that you should stay with your assembler and leave
the high level languages to the professionals (though I must add that yes,
there are professionals out there who use assembler).

flame off....

Lezz
Newsgroups: alt.folklore.computers