Random Observations

Some random observations from looking at various aspects of TeX. I’ll move these into proper pages eventually.

Manual index entries

Apart from (semi-)automatically indexed identifiers, module names, and other such parts of the Pascal program, there are also 74 manual index entries in the TeX program.

Some are people:

Amble, Ole -> ['925']
Bosshard, Hans Rudolf -> ['458']
Ferguson, Michael John -> ['2']
Fuchs, David Raymond -> ['2', '583', '591']
Guibas, Leonidas Ioannis -> ['2']
Hedrick, Charles Locke -> ['3']
Jensen, Kathleen -> ['10']
Knuth, Donald Ervin -> ['2', '86', '693', '813', '891', '925', '997', '1154', '1371']
Liang, Franklin Mark -> ['2', '919']
Plass, Michael Frederick -> ['2', '813']
Poirot, Hercule -> ['1283']
Ramshaw, Lyle Harold -> ['539']
Sedgewick, Robert -> ['2']
Trabb Pardo, Luis Isidoro -> ['2']
Trickey, Howard Wellington -> ['2']
Vitter, Jeffrey Scott -> ['261']
Wirth, Niklaus -> ['10']
Wyatt, Douglas Kirk -> ['2']
Zabala Salelles, Ignacio Andrés -> ['2']

Some are places in TeX where certain subjects are defined:

alignment of rules with characters -> ['589']
ASCII code -> ['17', '503']
BigEndian order -> ['[540]']
character set dependencies -> ['23', '49']
check sum -> ['53', '542', '588']
Chinese characters -> ['134', '585']
current page -> ['980']
dirty \PASCAL -> ['[3]', '114', '172', '182', '186', '285', '812', '1331']
empty line at end of file -> ['486', '538']
extensions to \TeX -> ['2', '146', '1340']
font metric files -> ['539']
font parameters -> ['700', '701']
global definitions -> ['221', '279', '283']
hanging indentation -> ['847']
italic correction -> ['[543]']
Japanese characters -> ['134', '585']
leaders -> ['1374']
length of lines -> ['847']
null delimiter -> ['240', '1065']
oriental characters -> ['134', '585']
overflow in arithmetic -> ['9', '104']
overfull boxes -> ['854']
parameters for symbols -> ['700', '701']
penalties -> ['1102']
preamble -> ['768', '774']
preamble of \.{DVI} file -> ['617']
real addition -> ['1125']
real division -> ['658', '664', '673', '676', '810', '811', '1123', '1125']
real multiplication -> ['114', '186', '625', '634', '809', '1125']
reference counts -> ['150', '200', '201', '203', '275', '291', '307']
rules aligning with characters -> ['589']
Single-character primitives -> ['[267]']
sp -> ['104', '587']
square roots -> ['737']
string pool -> ['47', '1308']
subscripts -> ['754', '1175']
superscripts -> ['754', '1175']
token -> ['289']

Overlapping the previous, some are descriptions of parts of the TeX program:

action procedure -> ['[1029]']
conventions for representing stacks -> ['300']
data structure assumptions -> ['[161]', '164', '204', '816', '968', '981', '1289']
debugging -> ['7', '84', '96', '114', '165', '182', '1031', '1338']
dry rot -> ['95']
inner loop -> ['31', '112', '120', '121', '122', '123', '125', '127', '128', '130', '202', '324', '325', '341', '342', '343', '357', '365', '380', '399', '407', '554', '597', '611', '620', '651', '654', '655', '832', '835', '851', '852', '867', '1030', '1034', '1035', '1036', '1039', '1041']
recursion -> ['76', '78', '173', '180', '198', '202', '203', '366', '402', '407', '498', '527', '592', '618', '692', '719', '720', '725', '754', '949', '957', '959', '1333', '1375']
stack conventions -> ['300']
system dependencies -> ['2', '[3]', '4', '9', '10', '11', '12', '19', '21', '23', '26', '27', '28', '32', '33', '34', '35', '37', '38', '49', '56', '59', '72', '81', '84', '96', '109', '110', '112', '113', '161', '186', '241', '304', '313', '328', '485', '511', '512', '513', '514', '515', '516', '517', '518', '519', '520', '521', '523', '525', '538', '557', '564', '591', '595', '597', '798', '1331', '1332', '1333', '1338', '1340', '1379']
virtual memory -> ['126']

And revealed: the disgusting biology of TeX:

brain -> ['1029'] PART 46: THE CHIEF EXECUTIVE (procedure main_control)

eyes and mouth -> ['332'] PART 24: GETTING THE NEXT TOKEN
mastication -> ['341'] procedure get_next

fingers -> ['511'] PART 29: FILE NAMES

stomach -> ['402'] PART 26: BASIC SCANNING SUBROUTINES

bowels -> ['592'] PART 32: SHIPPING PAGES OUT
defecation -> ['597'] procedure write_dvi

Things that reminded me of TeX:

Choice of programming language around 1980

From a book on WordPerfect (whose initial design, incidentally, happened in the summer of 1977 just as for TeX), here:

Our first problem was deciding whether to write the new version in assembly, which was the language used on the DG version, or in a high level language like C, Pascal, or Basic. Writing software in assembly language is somewhat analogous to baking from scratch rather than using a mix. The programmer has more control over the ingredients of his program in assembly, but the programming requires more work and more lines of code than it would if the programmer were to use a high level programming language. Most of the high level languages were not well suited for writing a word processor, although we did consider using C. We had trouble, however, finding a reliable C compiler for the PC. This, and the fact that programming in a high level language usually produced a program which was bigger and slower than one in assembly, convinced us to use assembly.


That's the end of this page. If you have any feedback about anything on this site, you can contact me here. To go back to the top-level page (if you are not on it already), click here.