[comp.text.tex] What's wrong with TeX; What's right.

quanstro@thor.acc.stolaf.edu (flash) (06/15/91)

TeX: what's good, what's bad, what's a wash.

Being an expert at critcism, I think I start with the rag on TeX.

* TeX is a Macro language. This makes it VERY difficult to debuge the
lowsy thing. It also makes it possible to creat real monstrocities by
writing macros which expand to macros which .... Consider this
contruction:

\def\foo{\bar}
\def\bar#1#2{{#2}#1}

Now you're typing along and type "\foo blah" and you get this great
surprise in the output when you see "...lbah" instead of "blah". Try
to track than one down, expecially if the offending macro is in
plain.tex. I've personally spent many an hour trying to keep track of
what expands to what and where the expansion goes bad.

And if you thought THAT one was bad, here's one direct from DEK:

\def\a{\b}
\def\b{A\def\a{B\def\a{C\def\a{b}}}}
\def\puzzle{\a\a\a\a\a}

[TeXbook --- page 2^3*5^2]

So what in the world does this beast expand to? I really have better
things to do than to figure that out. 

Sure, I've found some pretty nasty examples BUT dirty dricks like
these are about the only way to get a lot of things done with TeX. If
these were really just an example of bad programming (they are, btw
also very bad examples of TeX programming) I wouldn't have a proble
with TeX, but a lot of the time (any time one wants to write a
non-trivial macro) a dirty drick is the only way to get the job done.
DEK even includes an appendix (which is severl;y infected and really
needs to be cut out (*grin*)) named "dirty tricks."

A reasonable typesetting language requieres a reasonable programming
language. I have know idea what type of lauguage but, at the bare
minimum it must support _modular_ programming and clear contexts.

* TeX has too many damn primitives

I don't need to say much about this. I've seen a couple of complaints
about this on the net already.

* TeX does not (practilly) support two-mode typesetting.

In TeX, as far as the user is concerned, you're either inserting text
or inserting text. I know that you can get around this with some trick
definition of \output but the point remains that it's really hard to
read TeX code because the auther's usually worried about some exrta
space creaping into the current list somehow.

* Those wonderful error messages

Sorry, I don't know how to help in this situation.
Maybe you should try asking a human?

Sorry, I already gave what help I could...
An error might have occurred before I noticed any problems.
``If all else fails, read the instructions.''

One of your faux pas seems to have wounded me deeply...
in fact, I'm barely conscious. Please fix it and try again.

* etc.

WHAT'S GOOD ABOUT TeX.

* Quite good typesetting algorithms.

* Quite machine independent

* Clean underlying model of typesetting

TeX really only looks after two basic things: boxes and glue and
applies the glue-rules to put them together.

AND WHAT'S NIETHER HERE NOR THERE ... BUT ...

* The thing IS  a standard
--
%-----cut here with a sharp machete or an 19.95 ginsu knife

quanstro@stolaf.edu		after		Erik Quanstrom % S. Baumann
Erik Quanstrom			20. Jan ->	Malinckrodtstra\3e 50