[comp.misc] Knuth

wcs@ho95e.UUCP (08/18/87)

:>>Fear not, you're in good company. Donald E. Knuth (yes, that Knuth) is one
:>>of the worst offenders. His "Art of computer programming" is almost useless
:>>for day-to-day use because of "MIX".  [ ... ]
:>	You didn't read his introduction to the book.  It's a cookbook of
:>algorithms, with sample implementation in a hypothetical language.

Knuth's books *are* useful, both for learning and for practical work.
Why was ALGOL written some 15 years before Vol 1?  It was to provide a
concise, unambiguous language for describing algorithms to *people*.
Knuth describes most of his algorithms in two forms:
	- Spaghetti-code English
	- MIX
The main purpose of the MIX code is to show how much work a "real"
machine would have to do executing the programs, and as such it's
valuable.  But he could have done the same in minimal ALGOL,
or alternatively designed used a simpler machine model, with more
readable programs (even PDP-11 subset).  English is great for describing
things on a high-level, but ALGOL would be as good or better for most of
his programs.  Obviously, today you'd use Pascal or C or maybe Ada
instead of ALGOL.

His mathematical derivations are great.  But to call the book a
cookbook, you need to be able to find what you want and use it easily.
Many good cookbooks spend a lot of time telling you technique and
theory, but then put the recipes in a clear and easy-to-read form.
Sure, you lose some of the esthetics if the recipe's not in the
original Greek or Sanskrit, but after you've translated it once it's
nice to have an English version around to make dinner from.
I'd use my copies of Knuth a lot more if I could read them easily.

Knuth's probably incurable.  TeX feels like an assembler language.
It's a much *cleaner* language than troff, but it looks just as grungy,
and needs LaTeX almost as badly as troff needs -mm.  There's a lot of
high-level things going on, some of which are quite respectable, but
it's unnecessarily unfriendly and hard to use.  As for MeTaFoNT,
there's no accounting for taste; it's a snazzy system but I think CMR
is *ugly* stuff.
-- 
#				Thanks;
# Bill Stewart, AT&T Bell Labs 2G218, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs

gore@nucsrl.UUCP (Jacob Gore) (08/23/87)

>>>[Comment that Microsoft Basic and Lotus 1-2-3 wouldn't have been successful
>>> if they weren't written in assembler.]
>>
>>All of these could have been easily implemented in an HLL, if it wasn't for
>>the fact that they had to have suitable performance on a machine/OS
>>combination that forced ad hoc limitations on the software.
>
>[An entertaining satirical sketch involving Marie Antoniette playing Rogue 
> on Unix.  The moral seems to be in these, closing lines:]
>
>[To Marie:] "[...]  The peasants are rioting!  They say that your C program
>won't run on their PC's! [...]
>
>      [Marie still does not turn away from her terminal.]  "Aaarrgh!  Peasants
>      are so STUPID!  Look, I don't have the time to deal with them now.  Just
>      go out and explain to those idiot peasants that all they have to do is
>      to port the program to their VAXen."  [She puts the headphones back on.]

OK, let's accept the implication that C is the language of the "proletariat",
and let's list a few systems that are in the "peasants"' price range:

	1.  IBM-PC	2.  Macintosh	3.  Amiga	4.  Atari-ST

For which of these was it necessary to rush to market with C compilers that
generated programs that could only use a little more memory than the previous
generation of machines provided?  For which of these do the C compilers now
(several years later) come in sizes ("models") Small, Medium,
Sort-of-Medium-but-Kind-of-Small, and Large (:-), the latter being easiest to
use for programming, but the former having to be used to achieve satisfactory
performance? 

Even those of the so-called "peasants" who don't write their own programs are
hurt by these limitations, as people who program for them end up spending the
time that they could have used to develop a better (or cheaper) product on
inventing tricks for beating things out of the supporting system which it
should have provided in the first place.

Jacob Gore				gore@EECS.NWU.Edu
Northwestern Univ., EECS Dept.		{gargoyle,ihnp4,chinet}!nucsrl!gore

jay@splut.UUCP (Jay Maynard) (08/26/87)

In article <3240002@nucsrl.UUCP>, gore@nucsrl.UUCP (Jacob Gore) writes:
) OK, let's accept the implication that C is the language of the "proletariat",
) and let's list a few systems that are in the "peasants"' price range:
) 
) 	1.  IBM-PC	2.  Macintosh	3.  Amiga	4.  Atari-ST
) 
) For which of these was it necessary to rush to market with C compilers that
) generated programs that could only use a little more memory than the previous
) generation of machines provided?  For which of these do the C compilers now
) (several years later) come in sizes ("models") Small, Medium,
) Sort-of-Medium-but-Kind-of-Small, and Large (:-), the latter being easiest to
) use for programming, but the former having to be used to achieve satisfactory
) performance? 

Allow me to add one further rhetorical question:

Which of these was available for real people to do real work two to four
years earlier than any of the others?

-- 
Jay Maynard, K5ZC...>splut!< | uucp: hoptoad!academ!uhnix1!nuchat!splut!jay
"Don't ask ME about Unix...  | (or sun!housun!nuchat)       CI$: 71036,1603
I speak SNA!"                | internet: beats me         GEnie: JAYMAYNARD
The opinions herein are shared by neither of my cats, much less anyone else.