( ESNUG 297 Item 9 ) ---------------------------------------------- [7/30/98]
Subject: (ESNUG 294 #1 296 #4) Response To Small's "Bad Software Explained"
> This simple-seeming notion of standard practice is, in fact, a crucial
> difference between technological endeavors performed by real technologists
> and the work of programmers. Consider, that for all new technological
> fields, except programming, rapid progress at exponential rates followed an
> initial period of confusion. Examples are automobiles, aviation, and
> electronics. The rapid progress is a direct result of engineers` ability
> to codify and assimilate their collective art into standard practice.
>
> But in all the time that programmers have been hacking away, poking little
> groups of characters into text files, they have not been able to accumulate
> the powerful mixture of art (practice) and science that practitioners in
> other technological fields have. For example, reusable software
> components, such as operating-system utilities and mathematical library
> program that have been in use for more than 30 years, are still found to
> be full of bugs.
From: dchapman@goldmountain.com (Dave Chapman)
Well, now, John, this deserves a response.
First of all, anybody who has not yet read Brooks' book "The Mythical Man
Month" needs to do so.
As a historical fact, almost all of the progress in the fields of programming
and computer science have come from purely technical advances, rather than
from social or organizational changes. These were:
1. The Von Neumann architecture (so you didn't program by using
patch panels).
2. The development of the Assembler.
3. The development of the standard library, which functioned as
the first generation operating systems.
4. The development of the high-level language.
5. The development of the virtual machine.
6. The development of the block-structured language.
7. The development of the standardized GUI.
(Note that "matrix management" is not on the list.)
Almost all of the advances in the field of programming have come from the
fact that hardly anybody writes device drivers any more, and from the fact
that hardly anybody writes string move subroutines any more. These have
been standardized and moved into the operating system, or into the standard
syntax of the programming language.
If you want to look for standard practice, here it is: The codified art of
the assembly language programmers has been incorporated into the c language
itself, and the codified art of the people like Brooks has been incorporated
into ideas like streams and redirection.
I would go further, and say that it is likely that future advances in the
art of programming will not come from sociology, but will come from the
incorporation of current practice into Better Tools. It is possible that
Better Tools will include highly visual interactive devices, but I doubt it.
The intelligence required to design a machine is clearly not the same as the
intelligence required to organize a sales team, and it is not reasonable to
expect machine designers to have the same interaction abilities as the
mainstream population. Make no mistake here: What software engineers do is
to design machines. This is not a discipline like creative writing; it
is quite different.
My overall suspicion is that future useful(*) advances in programming will
require a continued reliance on text, because text is the most concise and
unambiguous method of expressing logic, which is the raw material out of
which software is constructed. (* - Windows 98, for example, is not useful,
even if you believe that it is an advance. The world does not need any
more operating systems.)
We will know for sure in about another 20 years.
- Dave Chapman
Goldmountain
|
|