On 19/11/11 1:01 AM, Richard wrote:
In article<4EC708D5.7000306 at
telegraphics.com.au>,
Toby Thain<toby at telegraphics.com.au> writes:
On 18/11/11 2:07 PM, Jochen Kunz wrote:
On Wed, 16 Nov 2011 15:30:59 -0500 (EST)
Mouse<mouse at rodents-montreal.org> wrote:
I don't expect any software to be bug-free.
TeX? ;-)
TeX is only bug-free in the limiting case.
Also, TeX is pretty feature complete being as it is an implementation
of a domain specific programming language for typesetting. All the
bugs and new features these days are implemented as macro packages
layered on top of TeX.
If TeX were being constantly changed to add features, then it would
have more bugs. Its well accepted that changing code is the way that
bugs get introduced, whether that change is due to "finishing" the
implementation, adding new features to the implementation or even
fixing existing bugs.
Also, I would say that the implementation of TeX is pretty
inscrutable to anyone except Donald Knuth and a handfull of other
people who have bothered to spend enough time deciphering its
implementation. Its implementation is purely procedural; no modules,
no abstractions, no objects and no attempt to create interfaces that
hide details. TeX's implementation is *all* details all the time.
It is written in a augmented version of standard Pascal (which makes it
extremely portable, even through Pascal-to-C translators), so I am not
sure what you were expecting in terms of encapsulation or objects. OOP
was barely known at the time, and would have been unlikely to interest
Knuth in any case. (Can you really imagine TeX in Java or C++? *shudder*)
Whatever your opinion or disgust at TeX and METAFONT not conforming to
recent idioms, these don't seem to have impaired their reliability,
performance, or sheer longevity: Being the 30-year de facto standard in
academic publishing.
Knuth's attempt at "literate programming", to write a book that
Have you read the book?
documents the implementation and shows you the
implementation at the
same time by interleaving prose and source code is IMO a complete and
utter failure.
It does however mean that the internals are very thoroughly described -
probably better described than any comparable procedural system.
It is also not the only literate program. Other examples that come now
to mind are:
* lcc, a retargetable ANSI C compiler;
* Lisp in Small Pieces.
These are considered outstanding expository pieces of work, and TeX and
METAFONT hardly lesser.
--Toby