Print

Print


Some initial comments on The LaTeX3 Programming Language (L3PL for
short).

Well, the silence is deafening.  Someone has to be first, and it might
as well be me.  (I haven't heard anything, and hope I haven't lost any
e-mail.  If so, sorry!)

First, a short anecdote.  In the early days of the TDS (1994) it
looked like the font area was going to be supplier/typeface/type,
which I thought from my experience with web2c would be very slow (no
ls-R at that stage).  I thought this issue was settled, so I opted out
of the discussion.  It was only this year when I was working with
betas of web2c 7.2 that I came back to the TDS and discovered that the
font area had been changed to type/supplier/typeface, a much better
solution (IMHO).  I then realized that I could/should have kept
following the discussion.  So this time I'm sticking around and I'm
going to try to make a positive contribution.  But as I'm going first
(AFAIK), I'm sure I will have misunderstood some of the ideas and
motivations, so please bear with me as I stumble around and ask a few
basic questions.  Also, please forgive me if I sound a little negative
in places; I am trying to promote (provoke!) a healthy discussion.

I read: `Variations of this language have been in use by The LaTeX3
Project Team since around 1990 . . .'.  Well, this is news to me!  I
do understand that the Team wanted to get it to a certain stage of
maturity before releasing it, but they don't win any friends for
keeping the whole thing such a well-guarded secret (even if only by
default - most LaTeX users don't attend TUG meetings to hear the
latest gossip, and we haven't heard anything about it in `LaTeX News'
until the current release).

`Gut feelings'

When the beta release of 2e came out I read through the documentation
and got really excited by all of the new features that supported
writing-in-the-large, proper package encapsulation, the improved
font-selection scheme, etc. etc.  I think this excitement was part of
the reason why 2e has been so successful.  Anything that follows
(e.g. LaTeX3) has to be exciting too.  If it isn't fun, why bother?
Warm fuzzy feelings should not be underestimated.

Having read carefully through the introductory documentation for L3PL
and most of the separate packages, I feel only luke-warm.

Some features are long overdue:  the naming system (if only it were
more consistently applied) and the different types of arguments (n, o,
x, etc.).  But `fake' integers?  I like hacking TeX too, but I realize
its limitations.  There seems to have been a considerable amount of
effort put into overcoming limitations of TeX which are better
overcome by changing TeX - as has already been done.  If I need more
counters I will use Omega.

I'm not normally the paranoid type (although I like watching The X
Files as much as the next person . . .) but features such as
removeoldnames are positively subversive!

The packages give tantalizing hints about the future and raise more
questions than they answer.  Surely `fake' integers can not be here to
stay?

On the one hand it looks like the Team want to drop TeX, but at the
same time it looks as though they are trying to hold on tightly.  I
would appreciate a little more clarity on this issue.  Clearly at this
stage we are not all going to agree on whether we go with Omega or
e-TeX, or a merger of the two projects (ideal), but what about
dropping TeX per se?

From all that I have read, LaTeX3 might well have an historical link
to the original conception and implementation of LaTeX, but it is
going to be very different.  Reading the L3PL documentation it becomes
painfully obvious (to me, anyway) that it's time to cut the cord
officially and (a) adopt a new base platform (Omega, e-TeX, whatever)
and (b) change the name to something other than LaTeX.

The fine details

I like the \<module>_<description>:<arg-spec> format.  But I do have a
few niggling doubts.  First, I have to remember the <arg-spec> each
time I use a macro.  I imagine myself writing a package and thinking
to myself as follows:

`OK, I want to do an \immediate\write16{blah}.  What's the new
version?  Ah, \iow_expanded.  Now what's its arg-spec?  Umm . . . er,
:nn, :wn?  No, wait . . . <fumble, fumble> . . . it has to be :Nn.
Huh?  How do I say \immediate\write16{blah} then?  Oh, I'm not
supposed to do that . . .'

My point is that this is an attempt to add the concept of overloaded
functions to a language that does not support it.  TeX doesn't even
have a proper concept of `type'.  Adding a suffix that indicates the
type of a macro's arguments or their expansion (or lack of) is a hack,
pure and simple.  The fact that it `works' is neither here nor there.
And AUC TeX will only help a little bit.

Second, TeX does not have a well-developed concept of encapsulation.
Even a low-level language such as C allows the definition of `static'
functions, which can not be `seen' in other compilation units.  In
TeX, all macros must be unique across all input files for a job, to
avoid unintended conflicts.  To be true to L3PL, this means using the
<module> component on practically everything.  While I do not object
to this in principle, it is yet another burden for package writers.

Third, it isn't possible to abstract away from TeX completely.  The
fact that there are so many `TeXhackers notes' hints at this, as well
as `w' in arg-specs.  I suspect that using many of the new macros
properly requires an understanding of what's happening at the TeX
level.  (And what are error messages going to look like?)

Fourth, a more basic objection can be expressed thus: `why should I
start writing \exp_after:NN when I have been writing \expandafter for
so many years?'.  Is it planned to make the removeoldnames feature the
default for LaTeX3?

Fifth, an even more basic objection is `so what?'.  It isn't clear
that using L3PL will yield a significant payoff.  Is it really worth
the enormous effort of rewriting LaTeX in L3PL when (a) it already
works, and (b) the underlying system is still TeX?  The maxim `if it
ain't broke, don't fix it' surely applies here.

The bottom line (so far)

I need more convincing.  Let the Team show us why the L3PL is so
great, by releasing some of their prototype re-implementations of some
of the functionality of LaTeX.

Let the debate begin!

Richard.
--
Richard Walker                            [log in to unmask]
Department of Computer Science
The Australian National University
Canberra, ACT 0200, Australia             Fax:  +61 2 6249 0010