The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,854 other subscribers

Old programming books had cool little “puns” in their references, modern lack them in their indices. On the why, and history of them.

Posted by jpluimers on 2025/01/01

I wrote a two earlier blog posts around puns in programming book indices before:

  1. the 1992 Turbo Pascal 7.0 Language Guide having both entry in the manual about Recursion (“recursive loop, see recursive loop”) which of course is similar to “infinite loop” and entries for “infinite loop See loop, infinite” and “loop, infinite See infinite loop”.
  2. infinite loop in β€œLaTeX: A Document Preparation System” by Leslie Lamport, printed in 1994.

In the last one, I promised to list more occurrences which I now finally had time for to do.

But let me first elaborate more on the observation that modern computer books (like for instance on C# and Delphi beyond version 1) lack these kinds of index pun.

On the Delphi side, the index entry joke for recursion got removed no later than Delphi 3 (I am still looking for a Delphi 2 version of the Object Pascal Language Guide, see further below) even before the book being fully redone electronically and the index pages generation being automated in

I think I even understand why that is: the process of creating of indices. By the start of this century, more and more indices were automatically being generated and for the last 2 decades or so, all of them are. Back in the days however, indices were mostly done by hand. Nowadays, with everything automated, it is actually pretty tricky in most environments to add such an “infinite loop” index entry like in the Turbo Pascal book, as it would require two things at once:

  • a manually designated tag to be present inside the index itself (either on an index entry or on a specific page)
  • an automatically generated index

It is really tough to make these two happen at the same time, especially in an era where cost of publishing needs to be minimised.

With past manual index maintenance, adding a pun entry way was easier: just add one or two manual entries in the correct style and you were done.

I am not alone in this thought process:

  1. [Wayback/Archive] HAMMER SMASHED FILESYSTEM πŸ‡ΊπŸ‡¦: “@kbob @mahmoudajawad I find it…” – the Octodon
    @kbob @mahmoudajawad I find it much more likely that this was a deliberate decision than that any sort of sophisticated automation was involved.
    See the “Tools for Printing Indexes” by Bentley & Kernighan paper for detail of what a state of the art was at the time the book was produced. The tooling is likely to be very close to what was actually used given one of the paper’s authors is indeed Brian Kernighan.
  2. [Wayback/Archive] HAMMER SMASHED FILESYSTEM πŸ‡ΊπŸ‡¦: “@kbob Link to the paper: https…” – the Octodon

    @kbob Link to the paper: https://meresh.com/files/troff/Tools%2…

    [Wayback/Archive] meresh.com/files/troff/Tools for Printing Indexes, Jon L. Bentley, Brian W. Kernighan, October 1986.pdf [Wayback PDF View/PDF View]

    …

    This paper describes a set of programs for processing and printing the index for a
    book or a manual. The input is a set of lines containing index terms and page numbers.
    (Disclaimer: these programs do not help with the original creation of index terms!) The
    programs collect multiple occurrences of the same terms, compress runs of page numbers,
    create permutations (e.g., β€˜β€˜index, book’’ from β€˜β€˜book index’’), and sort them into proper
    alphabetic order. The programs can cope with embedded formatting commands (size and
    font changes, etc.) and with roman numerals.

    The implementation uses an unusual software style: a long pipeline of short awk
    programs. This structure makes the programs easy to adapt or augment to meet the spe-
    cial requirements that arise in many indexes. The programs were intended to be used
    with troff, but can be used with TEX or monk[1] with minor changes.

    …

    The above bold emphasis is mine.

  3. [Wayback/Archive] Kernel Bob: “@lkundrak @mahmoudajawad Yeah,…” – chaos.social

    @lkundrak @mahmoudajawad Yeah, I was thinking about that paper. In any case, the squirrel didn’t make it into the 2nd Edition.

    (see the K&R book reference below for the explanation about “squirrel”)

Pun index references are not limited to books

I think the most notable example of this is the Jargon File, which was already mentioned above on “squirrelcide”. The Jargon File has been in a kind of sleeping mode as of 2004, but officially it is still maintained by Eric S. Raymond (for many, he is famous next to the Jargon File for both taking over Fetchmail, and writing The Cathedral and the Bazar which is based on both the development processes of of the Linux kernel and Fetchmail, though by now there is controversy and in March 2020, [Wayback/Archive] reddit: Eric S. Raymond was today banned from the OSI. He co-founded the Open Source Initiative in 1998 : programming).

Since the early 1980s, the Jargon File has these (back then text entry, now html entry):

There are likely many more, but lets not digress too much for now (:

The entries were introduced between [Wayback/Archive] www.catb.org/jargon/oldversions/jarg1-81-MM-DD.txtΒ [Wayback/Archive] www.catb.org/jargon/oldversions/jarg1-82-11-14.txt, changed format in various later versions for better readability/parsability until it finally became an html file.

Pun references books are not limited to programming books

A small diversion to two math books, both by mathematician Sheldon Axler. Relatively modern books, but classic puns.

Let’s start with Measure, Integration & Real Analysis (open access, updated 2020), Springer, November 2019 of which I know one joke: [Wayback/Archive] Measure, Integration & Real Analysis – MIRA.pdf [Wayback PDF View/PDF View] Chapter 2, page 44: cat saying “ΞΌ” (for “Another mew”)

[Wayback/Archive] 354250655-e52e192f-022d-41a7-87a9-a4dd8d30142a.png (589Γ—999)

But his most recent book Linear Algebra Done Right, fourth edition, Undergraduate Texts in Mathematics, Springer, 2024 has quite a few page number jokes for which I made screenshots from [Wayback/Archive] LADR.pdf [Wayback PDF View/PDF View]:

  1. page 22: 7πœ‹ (as 22/7 is a really good approximation of pi)

    [Wayback/Archive] 354253021-cc9214d4-a6a4-4ca0-a253-c47977a4b862.png (564Γ—958)

  2. page 141: β‰ˆ 100√2

    [Wayback/Archive] 354252012-f4b92b34-9d95-4c27-a411-c12ae4a85922.png (564Γ—958)

  3. page 272 β‰ˆ 100e

    [Wayback/Archive] 354252230-5760eb00-faaf-46db-be88-ec9c19ccc2f9.png (564Γ—958)

  4. page 341: β‰ˆ 100pi

    [Wayback/Archive] 354252334-af2618ce-969a-4aab-9b80-4f0be3c6e540.png (564Γ—958)

I found the above via these two Reddit posts:

  1. [Wayback/Archive] Beautifully written math textbooks which don’t lack rigour : math which has a wealth of books if you want to go really deep into mathematics in an inviting way
  2. [Wayback/Archive] Infinite loop : ProgrammerHumor which showed a photograph of the LaTeX index joke.

The last brings us back to…

Programming book index puns

The Turbo Pascal and LaTeX books were not alone containing index jokes. Below are a quite a few more.

Finding on-line PDF versions of some of these books was not easy, and for some completely failed. So this blog post is also the result of quite a journey (:

The Art of Computer Programming (1968–) 3rd edition has a Circular Definition pun

This started with the 2020 post [Wayback/Archive] Jan Wildeboer 😷:krulorange:: “And no, Stroustroup did NOT do this in the C++ book and also no, Knuth didn’t do this in AOCP :)…” – social.wildeboer.net.

AOCP and TAOCP of course reference the seminal book series “The Art of Computer Programming” on which Donald Knuth started the working in 1962 and is still being published.

Jan’s post turned out to be incorrect: actually I think this seminal book started the series of recursion jokes. Not just the 1997 current/3rd edition of TAOCP Volume 1 (Fundamental Algorithms) has this index joke as for instance referenced on Donald Knuth – Wikipedia:

To demonstrate the concept of recursion, Knuth intentionally referred “Circular definition” and “Definition, circular” to each other in the index of The Art of Computer Programming, Volume 1.

  1. [Wayback/Archive] Jeroen Wiert Pluimers: “@jwildeboer I finally had some…” – Mastodon
    @jwildeboer I finally had some time to check out more on the history of these book index puns (having gained back energy after the refurbishing and move last winter exhausted me a bit too much):
    Donald Knuth did put a recursion joke in The Art of Computer Programming – Volume 1: Fundamental Algorithms.
    – Index and Glossary page 631: “Circular Definition”
    – Index and Glossary page 633: “Definition, Circular”
    1/

    [Wayback/Archive] 1a220a41350a019c.png (696Γ—984)

    [Wayback/Archive] 79f71f237ec59fbf.png (696Γ—984)

    Screenshots from [Wayback/Archive] seriouscomputerist.atariverse.com/media/pdf/book/Art%20of%20Computer%20Programming%20-%20Volume%201%20(Fundamental%20Algorithms).pdf

  2. [Wayback/Archive] Reclus: “@jwildeboer It’s also in the german edition.…” – Sunbeam City 🌻 which I regrettably could not find on-line copies of: help on this is much appreciated.
  3. [Wayback/Archive] Jeroen Wiert Pluimers: “@jwildeboer I need to check ou…” – Mastodon
    @jwildeboer I need to check out the first and second edition of The Art of Computer Programming – Volume 1: Fundamental Algorithms as well, as given https://en.wikipedia.org/wiki/Donald_K…nuth I expect this to be in the first edition which makes me think he started this whole series of index puns.
    In the end, a blog post will come up with more of these jokes as I think they are historically very interesting and it is remarkably hard to actually find the materials to make photos/screenshots from.
    2/2

    That’s why I wrote the blog post you are reading now (:

And indeed, that joke started in the very first edition of Volume 1, and stayed in the second edition as well:

  1. [Archive] fundamental algorithms the art of computer programming : Free Download, Borrow, and Streaming : Internet Archive, 1st edition, 1968
    Index and Glossary page 619: “Circular Definition”

    [Wayback/Archive] 354348871-7f21edd1-9f81-4313-bf9a-613fd52f9b0a.png (532Γ—830)

    Index and Glossary page 621: “Definition, Circular”

    [Wayback/Archive] 354348686-96aa5f23-705f-4fb4-955a-bb9d1894c43e.png (532Γ—830)

  2. [Archive] The art of computer programming : Knuth, Donald Ervin, 1938- : Free Download, Borrow, and Streaming : Internet Archive, 2nd edition, 1973 (ISBN 0201038099)
    Index and Glossary page 619 “Circular Definition”

    [Wayback/Archive] 399323411-c8e2e628-3a2a-4daf-89dc-4de3788e7d06.png (687Γ—1057)

    Index and Glossary page 621: “Definition, Circular”

    [Wayback/Archive] 399323991-2db1498a-a37b-4ac1-bcd3-afddfbff7865.png (687Γ—1057)

    Currently this book is listed as “Borrowing Unavailable” (see [Wayback/Archive] Why are so many books listed as β€œBorrow Unavailable” at the Internet Archive – Internet Archive Help Center); hopefully this will either change or I get help sourcing another 2nd edition. It wasn’t available on [Wayback/Archive] Library Genesis – search: knuth the art of computer programming volume 1 either.

Can you imagine being able to order the first volume and subsequent volumes for USD 19.50 each, and Addison-Wesley keeping your address on file for even the 7th volume to be released? I wonder how many did that, as that was exactly what the introduction brochure promised one would be possible: [Wayback/Archive] www-cs-faculty.stanford.edu/~knuth/brochure.pdf [Wayback PDF View/PDF View]

…

[Wayback/Archive] 354241269-ff5f6347-bf2c-423b-b2eb-05f492fa6009.png (678Γ—299)

[Wayback/Archive] 354240561-b85d69e8-307b-4667-ba93-395855a515b3.png (515Γ—326)

[Wayback/Archive] 354240659-0b5f3033-6f82-459a-8ec1-02ce70d506e8.png (506Γ—327)

BTW: if you like Donald Knuth and his work, be sure to watch the series of short videos at [Wayback/Archive] Donald Knuth (Computer scientist) – YouTube, one of the many series of the channel [Wayback/Archive] Web of Stories – Life Stories of Remarkable People – YouTube.

Finally, Donald still maintains a few web-pages himself related to TAOCP, for instance:

The 1988 K&R book “The C Programming Language (2nd ed.)”

K&R of course are Brian W. Kernighan and Dennis M. Ritchie, who wrote the famous book “The C Programming Language” in 1978. The second edition added some 30 pages, including a recursion pun in the index which Jan pointed me at in [Wayback/Archive] Jan Wildeboer 😷:krulorange:: “Had to verify. And yes. Kernighan and Ritchie really did this. TIL :)…” – social.wildeboer.net (a long list of reactions, some with other books covered further below)

[Wayback/Archive] 110d041ae71691df.jpg (900Γ—1200)

[Wayback/Archive] 575e0ebe9cd46f78.jpg (900Γ—1200)

If you want to see for yourself, check out page 269 at the non OCR-scans [Wayback/Archive] cslabcms.nju.edu.cn/problem_solving/images/c/cc/The_C_Programming_Language_(2nd_Edition_Ritchie_Kernighan).pdf [Wayback PDF View/PDF View] or [Wayback/Archive] raw.githubusercontent.com/AzatAI/cs_books/master/The.C.Programming.Language.2nd.Edition.pdf [Wayback PDF View/PDF View].

Note that the index is not present in:

Despitethe 1978 first edition not having this entry, did have “squirrel” in it:

  1. [Wayback/Archive] HAMMER SMASHED FILESYSTEM πŸ‡ΊπŸ‡¦: “@jwildeboer oh i see, gentlema…” – the Octodon

    @jwildeboer oh i see, gentleman got the heretic edition

    [Wayback/Archive] 5a4474b34995c7c9.jpeg (1109Γ—1478)

    [Wayback/Archive] 55263f2fff16446e.jpeg (1109Γ—1478)

  2. [Wayback/Archive] Kernel Bob: “@lkundrak @jwildeboer The first edition does have an index entry for “squirrel”, though.…” – chaos.social
  3. [Wayback/Archive] HAMMER SMASHED FILESYSTEM πŸ‡ΊπŸ‡¦: “@kbob confirmed! ” – the Octodon

    [Wayback/Archive] a8e94fa6809affa9.jpeg (554Γ—415)

    [Wayback/Archive] ac1d1ed131ab4bf7.jpeg (554Γ—415)

  4. [Wayback/Archive] Kernel Bob: “@mahmoudajawad It was a proofr…” – chaos.social

    @mahmoudajawad It was a proofreading error. The text included the phrase, “[…] alloc, to provide space for squirreling the words away”. I think an automated process found and indexed `squirrel`, and the human proofreader didn’t notice.

  5. [Wayback/Archive] Andy Wootton: “@lkundrak @kbob @mahmoudajawad That’s my instinct too but “squirrel” isn’t in ‘The Jargon File’, though “squirrelcide” is: …” – Fosstodon

    [Wayback/Archive] squirrelcide

    squirrelcide: n.

    [common on Usenet’s comp.risks newsgroup.] (alt.: squirrelicide) What all too frequently happens when a squirrel decides to exercise its species’s unfortunate penchant for shorting out power lines with their little furry bodies. Result: one dead squirrel, one down computer installation. In this situation, the computer system is said to have been squirrelcided.
  6. [Wayback/Archive] Kernel Bob: “@lkundrak @mahmoudajawad Yeah,…” – chaos.social

    @lkundrak @mahmoudajawad Yeah, I was thinking about that paper. In any case, the squirrel didn’t make it into the 2nd Edition.

    (see the K&R book reference below for the explanation about “squirrel”)

Translated versions of The C Programming Language

It looks like most translated editions of this book lack the recursion pun.

[Wayback/Archive] Jyrki :paw_nonbinary:: “@jwildeboer neat, even the German version of that edition does that :D…” – pouncetodon

[Wayback/Archive] 2b692099cb493b66.jpeg (1662Γ—1247)

Translations which certainly didn’t understand the original joke and removed it:

The Elements of Programming Style, co-authored by Kernighan

1988 wasn’t the first time that Brian W. Kernighan pulled an index joke, he and P. J. Plauger did in 1978 as well, this time with the second edition of The Elements of Programming Style had the recursion joke.

Note this is recommended reading for any programmer: many concepts of maintainable code stem from this book. At some 170 pages, it is relatively easy to remember a lot of things from as well.

  1. [Wayback/Archive] bcl: “@jwildeboer Ah darn, Kernighan didn’t do it in “The Go Programming Language”. I guess I’ll pencil it in.…” – Infosec Exchange
  2. [Wayback/Archive] bcl: “@jwildeboer but he did do it in β€œThe Elements of Programming Style”…” – Infosec Exchange

    [Wayback/Archive] 5370fbaa694d4d89.jpeg (1109Γ—1478)

    [Wayback/Archive] b861e8c31bf614bd.jpeg (1109Γ—1478)

You can verify this for instance in [Wayback/Archive] Elements of Programming Style.pdf [Wayback PDF View/PDF View] at page 166, of which I created this screenshot [Wayback/Archive] 354285919-8b987290-bea4-488f-9985-c1f60e407b19.png (671Γ—999)

Note it wasn’t in the 1974 first edition, which you can verify at [Archive] The elements of programming style : Kernighan, Brian W : Free Download, Borrow, and Streaming : Internet Archive (to live view that page, first borrow the book from The Internet Archive):

Page 145: “Recursion, 53”

[Wayback/Archive] 354331898-98e85014-47a8-447a-a0fc-7832851a9673.png (571Γ—905)

The Unix Programming Environment, Kernighan and Pike, 1984

A few more years in the future, the recursion joke appeared again, this time in the 1984 book The Unix Programming Environment by Brian W. Kernighan and Rob Pike.

Besides the joke, you might like to know that back in the days, things were moving at rapid pace. As a result:

The book was written before ANSI C was first drafted; the programs in it follow the older K&R style. However, the source code available on the book’s website has been updated for ANSI C conformance.

In addition, it asked you if you really understood you were adding many features to the cal program: [Wayback/Archive] Mike Taylor πŸ¦•: “@jwildeboer There’s always a d…” – Sauropods.win

@jwildeboer There’s always a dry humour just beneath the surface in Kernighan’s book. In Kernighan & Pike’s “The UNIX Programming Environment”, one set of exercises has you add a sequence of a features to the “cal” program, then finishes with the question: When should you have stopped adding features to `cal’?

This can be seen at page 138:

[Wayback/Archive] raw.githubusercontent.com/tcd/tupe/master/the-unix-programming-environment-kernighan-pike.pdf

[Wayback/Archive] 354830184-8fe28d0a-027a-4dca-a6c9-36410efd2abd.png (653Γ—958)

Back to the index pictures you were waiting for (:

Later I found [Archive] Full text of “UNIX Programming Enviornment”, which is exceptionally well done OCR of the book and very useful for searching phrases. It’s under [Archive] UNIX Programming Enviornment : Brian W. Kernigan, Rob Pike : Free Download, Borrow, and Streaming : Internet Archive which also has an OCR-PDF with searchable text at [Archive] UNIX Programming Enviornment – unix_programming_environment_text.pdf.

C Traps and Pitfalls: joke re-use

Given the number of books about C, it is no surprise other authors on the same topic re-used the same joke, despite some by now wondering who was first (which is one of the reasons I wrote this blog post: teaching younger periods about computing history).

The next example is from C Traps and Pitfalls, a 1988 book by Andrew Koenig who was a very productive author of papers (50+ in the 1980s and 1990s!), so it is no wonder the book is actually based on his paper [Wayback/Archive] C Traps and Pitfalls.pdf which in turn is based on his 1977 paper “PL/I Traps and Pitfalls”.

The page screenshot:

Index page 146: “recursion 88, 146”

[Wayback/Archive]

I got the screenshot from the OCR PDF at [Wayback/Archive] altair.pw/pub/doc/unix/C%20Traps%20and%20Pitfalls.pdf, but you can borrow the book (though not as PDF) form [Archive] C traps and pitfalls : Koenig, Andrew : Free Download, Borrow, and Streaming : Internet Archive.

The wondering toot: [Wayback/Archive] WGAvanDijk: “@jwildeboer Who copied it from whom? (: …” – Mastodon

@jwildeboer
Who copied it from whom? πŸ™‚
Andrew Koenig wrote the book “C Traps and Pitfalls” and did the same recursive page number mentioning in the index. His book is from 1988/1989, and the second edition by Kernighan & Ritchis is from those years too.

[Wayback/Archive] 32d42be2b53f82f8.jpeg (1200Γ—1631) [Wayback/Archive] b2920f0b97b4c412.jpeg (1173Γ—1768)

Wait, no Stroustrup book humor?

Back to [Wayback/Archive] Jan Wildeboer 😷:krulorange:: “And no, Stroustroup did NOT do this in the C++ book and also no, Knuth didn’t do this in AOCP :)…” – social.wildeboer.net, it seems that usually Bjarne Stroustrup if a serious person:

[Wayback/Archive] SpeakerToManagers: “@saustrup @jwildeboer In my years on the ANSI C++ standards committee I think Stroustrup told 1 or 2 jokes. He always seemed a very serious and determined person.…” – Mastodon 🐘

But at least one he pulled off a good April 1st joke (:

[Wayback/Archive] The Jazz Butcher Social Club: Joel Webber j15r@mastodon.j15r.com “@jwildeboer OTOH, Stroustrup did publish this hilarious gem in ’98: www.stroustrup.com/whitespace98.pdf (note the j15r mastodon server of the original toot went to bit heaven, so the above is a link to a copy of the toot):

[Wayback/Archive] whitespace98.PDF – whitespace98.pdf [Wayback PDF View/PDF View]

Generalizing Overloading for C++2000

Bjarne Stroustrup
AT&T Labs, Florham Park, NJ, USA

Abstract

This paper outlines the proposal for generalizing the overloading rules for Standard C++ that is expected to become part of the next revision of the standard. The focus is on general ideas rather than technical details (which can be found in AT&T Labs Technical Report no. 42, April 1,1998).

There is C++ index humour though

The [Wayback/Archive] Draft C++ Standard: Contents (maintained at [Wayback/Archive] GitHub – timsong-cpp/cppwp: HTML version of the current C++ working paper) has two funny index entries in [Wayback/Archive] 14882: IndexΒ pointing to [Wayback/Archive] [zombie.names] with tables of names which are reserved:

  • brains, names that want to eat your, [zombie.names]
  • living dead, name of, [zombie.names]

The first one via [Wayback/Archive] θ°·ι›¨εŒε­¦ on X: “@vxunderground Here’s the index of C++ standard… “

[Wayback/Archive] GTywHNyaIAADkno.jpg (616Γ—1199)

[Wayback/Archive] Tweet JSON

Common LISP the Language, second edition, Guy Steele

Like TAOCP, this 1990 book is also listed as “Borrowing Unavailable”: [Archive] COMMON LISP : the language : Steele, Guy L., 1954- : Free Download, Borrow, and Streaming : Internet Archive.

It however has an index entry “kludges” in the print version:

[Wayback/Archive] jwatt: “@jwildeboer A good one from Common LISP the Language 2ed, Guy Steele…” – BSD Network

[Wayback/Archive] 377ea8b81a4cb23c.jpeg (499Γ—696)

[Wayback/Archive] Suzanne Paley: “@jwildeboer I quite like this one……” – Universeodon Social Media

[Wayback/Archive] dbe727bb28442ad5.jpeg (1247Γ—1663)

[Wayback/Archive] ae15bbb45a1aeac2.jpeg (1247Γ—1663)

It is not in the electronic version, for the same reason I mentioned above: the print version had a manually maintained index. See:

  • [Wayback/Archive] Common Lisp the Language, 2nd Edition

    This document contains the complete text of the book

       Common Lisp the Language, 2nd edition
       by Guy L. Steele, Thinking Machines, Inc.
       Digital Press
       1990 paperbound
       1029 pages
       ISBN 1-55558-041-6  $39.95
    

    in html format.

  • [Wayback/Archive] Index

    This index, which was compiled by Tom Bylander <bylander@ringer.cs.utsa.edu>, replaces the original minimal index compiled from the latex sources. We will eventually replace this page with a form-based GLIMPSE index.

    This index includes links for most Common Lisp functions (and other entities) to the portion of the online Common Lisp manual where they are defined. Since the index was automatically generated from the online manual, some functions may not be included in this index. Also, the links do not jump directly to the function definitions; instead, they connect to the beginning of the sections where they are defined. Finally, please note that it is sometimes useful to go the previous section or the beginning of the chapter to get an introductory explanation (maybe even a simple example) of what is going on.

  • [Wayback/Archive] Index

    This index was produced from the latex sources and is inferior to the ones in the paperbound version. We will replace this page with a form-based GLIMPSE index in the near future. –mark

The reason for the “kludges” entry was very well explained by [Wayback/Archive] A Road to Common Lisp / Steve Losh

It’s also important to realize that while Common Lisp might be very practical, the need to accommodate existing users and dialects means that there are plenty of ugly parts. If you buy a paper copy of the second edition of Common Lisp: the Language and look up “kludges” in the index you’ll find this:

Photo of a page of CLtL2's Index, listing "kludges" as pages 1 to 971

Common Lisp is not a beautiful crystal of programming language design. It’s a scruffy workshop with a big pegboard wall of tools, a thin layer of sawdust on the floor, a filing cabinet in the office with a couple of drawers that open perpendicular to the rest, and there’s a weird looking saw with RPLACD written on the side sitting off in a corner where no one’s touched it for twenty years.

Too bad [Wayback/Archive] Common Lisp: The Language – preview-9780080502267_A26574230.pdf [Wayback PDF View/PDF View] had no index pages: only the first 53 pages of the book.

[Wayback/Archive] Library Genesis – search: Common Lisp the Language Steele all got me documents like [Wayback/Archive] download.library.lol/main/320000/9ed42de1b022d561d78e9c07d098f518/Guy%20Steele%20-%20Common%20LISP.%20The%20Language-Digital%20Press%20(1990).pdf which do not have the term “kludges” in their indices.

Therefore: any help for a PDF of the hardcopy book is appreciated.

The 1988 sqlroff manual

I don’t have a picture from it, but here are some tweets and other information hoping someone can help me out on this:

Mixing math and Programming: The Javaβ„’ Language Specification, 1st edition

This is the only edition that references the Taxicab number 1729, which is world famous among math lovers:

The name is derived from a conversation ca. 1919 involving mathematicians G. H. Hardy and Srinivasa Ramanujan. As told by Hardy:

I remember once going to see him [Ramanujan] when he was lying ill at Putney. I had ridden in taxi-cab No. 1729, and remarked that the number seemed to be rather a dull one, and that I hoped it was not an unfavourable omen. “No,” he replied, “it is a very interesting number; it is the smallest number expressible as the sum of two [positive] cubes in two different ways.”

It immediately reminded me of a professor I really like, especially because their field is both in math and science communication: . Let me show their explanation of their love for the number 1729: [Wayback/Archive] Ionica chose a number (and we made it difficult) – News – Maastricht University

1729 is my favourite number, because it has a story associated with it. The numeral represents someone who also saw stories behind numbers. When I look into a certain topic, like numbers, I start to love it more and the other way around. That process fascinates me.

She had a post on Mastodon on 1729, but that regrettably disappeared. You can find it in part at the Archive of John Wilson’s post below:

@tug @jwildeboer
Your post reminded me of someone, so what is the chance they wrote about 1729 today!
https://mastodon.social/@ionica/111750326024706992

Mathstodon
Ionica Smeets (@ionica)
Attached: 1 image Hoe het kwam dat ik tegen een theezakje over 1729 vertelde.

Ionica is actually the reason I know about the background of the number 1729: following her on social media helped me learn to understand why I appreciate some numbers more than others.

Anyway: 1729 can be written as 121212 + 1 = 1728 + 1, or as 101010 + 999 = 1000 + 729, which makes it a special.

Back to the book: [Wayback/Archive] John Wilson: “@jwildeboer The 1st edition of…” – mastodon.me.uk

@jwildeboer The 1st edition of the Java Language specification is full of this sort of thing
Ramanujan, Srinivasa, 224
On page 224 is an example with
class Super { static int taxi = 1729; }

It all disappeared in the 2nd edition

And the images you were waiting form which are actually are three, as of course in addition to Ramanujan, Hardy was referenced: he was first in the index:

[Wayback/Archive]Β java-langspec-1.0.pdfΒ  [Wayback PDF View/PDF View]

Index page 786: “Hardy, Godfrey Harold, 224”

[Wayback/Archive] 354807757-631b619b-bc99-4290-83b0-990df738768b.png (796Γ—999)

Index page 803: “Ramanujan, Srinivasa, 224”

[Wayback/Archive] 354808026-101e7588-ca46-475e-b95f-33c32651cc89.png (796Γ—999)

Page 224: “class Super { static int taxi = 1729; }

[Wayback/Archive] 354807715-6f495d11-21dc-403e-9dcc-30a9ba9635d4.png (763Γ—958)

Programming Perl, best known as the Camel Book

Back in 1991, Larry Wall (creator of the programming languages Perl and Raku) and Randal L. Schwartz published the famous “Camel Book” titled “Programming Perl” (nicknamed because of the O’Reilly cover image, the first edition nicknamed “the pink camel” because of the pink book-spine).

This book does not have index jokes (or more likely: I missed them) but is very humorous in is use of language, likely coming from Wall’s background in linguistics. That background also shaped the languages, which for some are difficult to learn, and others to adore them.

I will just give one example of the book, as it is high on the various lists of various Larry Wall quotes, for example:

The screenshot:

[Wayback/Archive] Programming Perl, 4E – Programming.Perl.4th.2012.pdf [Wayback PDF View/PDF View]

Programming Perl, 4th Edition, Tom Christiansen, brian d foy, Larry Wall, Jon Orwant, 2012.

Preface page xxvii

“We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris.”

[Wayback/Archive] 357928751-5ce94684-1e7d-4b42-b054-ea9fb466d10e.png (730Γ—959)

Luckily, the first edition and second edition are available for on-line borrowing at the Internet Archive:

The first edition did not have the “laziness, impatience, and hubris” fun. Starting with the second edition, this fun began.
[Wayback/Archive] Programming Perl : Wall, Larry : Free Download, Borrow, and Streaming : Internet Archive.

Programming Perl, 1st Edition, Larry Wall, Randal L Schwartz, 1991

[Archive] Programming Perl : Wall, Larry : Free Download, Borrow, and Streaming : Internet Archive

Programming Perl, 2nd Edition, Larry Wall, Tom Christiansen & Randal L. Schwartz; 1996

Preface page xiv

Preface page xiv

[Wayback/Archive] 357943066-2d83b7c8-c11a-4574-9e2f-faec1a435356.png (634Γ—973) [Wayback/Archive] 357942563-9234ab30-3d4a-4732-b591-6e43f4f33926.png (684Γ—973)

Most of the Camel Book editions is full of wit in many senses of the word, so be sure to read this book: it is still relevant, as like Delphi, Perl – after revolutionizing data handling and processing – also found its niches (not limited to bio-informatics as BioPerl plays a big role in for instance the Human Genome Project). In addition, Programming Perl is the only book for a specific language I know of that covers a very broad range of application including programming (of course), system administration, web development, internet security, etc.

Definitely recommended is the long read [Wayback/Archive] Slightly Skeptical View on Larry Wall and Perl which is part of [Wayback/Archive] Nikolai Bezroukov. Portraits of Open Source Pioneers: Essays on early history of open source), and a shorter read is at [Wayback/Archive] Exploring Larry Wall’s Legacy and Programming Innovation | IT-Jobs.

If you like more of Larry’s humour, check out his conference talks, articles, community posts, etc. For instance this 1999 [Wayback/Archive] Perl, the first postmodern computer language.

Note I got reminded to all this Perl fun by [Wayback/Archive] Peter Heppner: “@jwildeboer Try Larry Wall’s Perl Book, same sense of humor. The good ole days……” – NRW.social.

In addition to a computer linguist, Larry is also a devote Christian. Not much of that can be found into Perl, though this blessing with bless is a good example:

[Wayback/Archive] bless – Perldoc Browser

bless tells Perl to mark the item referred to by REF as an object in a package. The two-argument version of bless is always preferable unless there is a specific reason to not use it.

See perlobj for more about the blessing (and blessings) of objects.

bless returns its first argument, the supplied reference, as the value of the function; since bless is commonly the last thing executed in constructors, this means that the reference to the object is returned as the constructor’s value and allows the caller to immediately use this returned object in method calls.

CLASSNAME should always be a mixed-case name, as all-uppercase and all-lowercase names are meant to be used only for Perl builtin types and pragmas, respectively. Avoid creating all-uppercase or all-lowercase package names to prevent confusion.

Also avoid blessing things into the class name 0; this will cause code which (erroneously) checks the result of ref to see if a reference is blessed to fail, as “0”, a falsy value, is returned.

Outside programming and math

Having returned back to math, it is worth mentioning that outside our comfort zone there is a wealth of index puns as well.

If you like those, start at [Wayback/Archive] National Indexing Day 2020: some of the best and funniest index entries I know – Paula Clarke Bain which I found via [Wayback/Archive] lippardβœ…:donor:: “@jwildeboer Other index humor …” – Infosec Exchange

@jwildeboer Other index humor here (there is also academic footnote humor): https://baindex.org/2020/03/31/nationa…

Oldest one?

A math one actually might be the oldest recursion pun. And indeed it is a math book, which actually started out as a paper, similarly to the 1989 “C Traps and Pitfalls” by Andrew Koenig by his 1997 paper “PL/I Traps and Pitfalls”: the late Paul Halmos wrote the 1942 paper Finite-Dimensional Vector Spaces (since a while removed from the Internet Archive because Spring-Verlag loves money) which was published in Annals of Mathematics Studies, no. 7.

Do not confuse Annals of Mathematical Studies (published by Princeton University) with with Annals of Mathematics (also published by Princeton University) as that is a different thing. We are after on-line [Wayback/Archive] Annals of Mathematics Studies | Princeton University Press, but it lacks #7 (it would be too convenient to include no. 7, right?) and various other issues.

Of course #7 it is available for instance at [Wayback/Archive] de Gruyter: Annals of Mathematics Studies. They have it as eBook (not even the original paper book!) [Wayback/Archive] De Gruyter: Volume 7 in the series Annals of Mathematics Studies – Finite Dimensional Vector Spaces for a whopping USD 327. “Luckily” [Wayback/Archive] Finite Dimensional Vector Spaces | Princeton University Press, has for USD 83.

In 1947, that #7 evolved into a regular book, which is special as Paul Halmos referened another mathematician Gerhard Hochschild (who also passed away this century:Β  in 2010, some 4 years after Paul Halmos): [Wayback/Archive] Finite_Vector_Spaces-Halmos.pdf (non-OCR PDF 1958 edition) [Wayback PDF View/PDF View].

Steven Molnar pointed to this index entry in this thread:

  1. [Wayback/Archive] Steven Molnar: “@WGAvanDijk @jwildeboer Paul H…” – Urbanists.Social

    @WGAvanDijk @jwildeboer Paul Halmos did essentially the same thing far earlier in Finite Dimensional Vector Spaces (1958). In the index on page 198 appears the entry:

    Hochschild, G. P., 198

    The story is that Hochschild asked Halmos if he would be mentioned in the book, but I’m not sure if that part is true.

  2. [Wayback/Archive] WGAvanDijk: “@MolnarSteven On page 198 the …” – Mastodon

    @MolnarSteven
    On page 198 the reference indeed appears:
    download.tuxfamily.org/openmat

  3. [Wayback/Archive] Steven Molnar: “@WGAvanDijk Thanks. I have a h…” – Urbanists.Social

    @WGAvanDijk Thanks. I have a hard copy around here somewhere, but I didn’t have the energy to look for it. BTW, Halmos also used a misleadingly amusing title: The finite dimensionality of the vector spaces is almost never used in the development, which is quite abstract. Similarly, his Naive Set Theory could more accurately be called Axiomatic Set Theory.

Since the above book is the 1958 edition, I tried finding the 1947 edition and found these editions on the Internet Archive:

  1. 1942 (Borrow Unavailable) [Archive] Finite dimensional vector spaces : Halmos, Paul R. (Paul Richard), 1916- : Free Download, Borrow, and Streaming : Internet Archive
  2. 1947 (Borrow Unavailable) [Archive] Finite dimensional vector spaces : Halmos, Paul R. (Paul Richard), 1916- : Free Download, Borrow, and Streaming : Internet Archive
  3. 1948 (Downloadable) [Archive] Finite Dimensional Vector Spaces : Halmos Paul R : Free Download, Borrow, and Streaming : Internet Archive

    It also has a full text download which you can use for searching: [Archive] Full text of “Finite Dimensional Vector Spaces”

  4. 1958 (Borrow Unavailable) [Archive] finite dimensional vector spaces : paul halmos : Free Download, Borrow, and Streaming : Internet Archive
  5. 1958 (Downloadable) [Archive] Halmos, P. R. Finite Dimensional Vector Spaces. ( Springer Verlag)( 205s) : Free Download, Borrow, and Streaming : Internet Archive

    The is another copy of the one referenced by @WGAvanDijk, and has a full text download to: [Archive] Full text of “Halmos, P. R. Finite Dimensional Vector Spaces. ( Springer Verlag)( 205s)”

Later I found two more PDFs that are text-readable:

Which means the oldest edition I could find that is on-line readable for me, is the 1948 one which indeed already had the index joke:

archive.org/download/dli.ernet.233504/233504-Finite%20Dimensional%20Vector%20Spaces_text.pdf / https://archive.org/download/dli.ernet.233504/233504-Finite%20Dimensional%20Vector%20Spaces.pdf

Finite Dimensional Vector Spaces, 1948, by Halmos, Paul R. (Paul Richard)

Page 198: “Hochschild, G. P., 198”

[Wayback/Archive] 357337200-efacf303-f3ab-439c-bc36-cb565592258b.png (668Γ—990)

From old math to new math: Humble Pi

Only 5 years ago, Matt Parker released a math book that immediately became a Sunday Times #1 bestseller: Humble Pi, which you can even get signed at [Wayback/Archive] Humble Pi by Matt Parker (signed) – Maths Gear – Mathematical curiosities, games and gifts.

Besides that, the other specialty is the index: the entries have very accurate references:

[Wayback/Archive] IMG_20240801_103038.jpg (505Γ—673)

(via discord)

It has “A Comedy of Maths Errors by Matt Parker” as subtitle for a reason (:

Back to Borland

The Borland Turbo Pascal manuals were the first ones I knew had an index joke. The reason is that Turbo Pascal 7.0 introduced the Object Pascal Language Guide. Turbo Pascal 6.0 did not yet have that:

Turbo Pascal 6.0 with Objects[Wayback/Archive] Borland Pascal, Turbo Pascal Version Information

Includes: Two 720K diskettes labeled:
"INSTALL/TURBO VISON/COMPILER, VERSION 6.0", PART# 11LB-PAS04 BOR 1855

“HELP/BGI/UTILITIES”, PART# 11LB-PAS04 BOR 1855
plus the following printed materials:
User’s Guide, 259 pages (Installation, Integrated Environment, Tutorials, Command-line Compiler), Part# 11MN-PAS02-60 BOR 1850
Programmer’s Guide, 370 pages (Language Definition, Library Cross-Reference, Assembly Language, Error Messages), Part# 11MN-PAS05-60 BOR 1851
Library Reference, 176 pages (Run-Time Library), Part# 11MN-PAS03-60 BOR 1852
Turbo Vision Guide, 411 pages (Cookbook, Object Reference), Part# 11MN-PAS04-60 BOR 1853
No-Nonsense License Statement
Runtime Library source Code order form
System Requirements:
IBM PS/2 and IBM Personal Computers and 100% compatibles
PC-DOS (MS-DOS) 2.0 or later
512K RAM minimum (256K for command-line version)
Two floppy disk drives
Mouse support requires Microsoft Mouse or compatible, driver version 6.0 or later

The only Delphi version I could find the same “recursive loop” pun in was Delphi 1.0, which extended the Object Pascal Language Guide with many new Delphi language features:

[Wayback/Archive] Object Pascal Language Guide – Object Pascal Language Guide.pdf

Index page 287

[Wayback/Archive] 356704153-d42c2880-c591-4fcd-b04a-1f8c9469a202.png (747Γ—1000)

I tried finding a Delphi 2 edition of the Object Pascal Language Guide of which I could not find a PDF, but did find it is part of the Computer History Museum collection as [Wayback/Archive] Object Pascal Language Guide | 102785693 | Computer History Museum

Title Object Pascal Language Guide
Catalog Number 102785693
Type Document
Description Borland Delphi Object Pascal Language Guide version 2 manual for Windows 95 and Windows NT
Date 1996
Publisher Borland International, Inc.
Extent 228 p.
Category Manual
Collection Title Peter R. Jennings papers
Series Title Published materials
Credit Gift of Peter Jennings
Lot Number X7876.2017

[Archive] Object Pascal language guide : Borland Delphi for Windows 95 and Windows NT : version 2.0 : Scotts Valley, CA : Borland International : Free Download, Borrow, and Streaming : Internet Archive has these wrong:

  • Version: should be 3.0
  • Publication date: should be 1997 (instead of 1996)

Delphi 3 still has the Object Pascal Language Guide (it is in fact the book the Internet Archive has on file for borrowing in electronic form of the above “version 2.0” link), but it does not have the recursion joke any more:

https://archive.org/details/objectpascallang00scot/page/n251/mode/1up

Index Page I-15

[Wayback/Archive] 356709651-5a18778e-8c30-4874-b0e2-63b353aac760.png (550Γ—733)

If anyone has the Delphi 2 manual, please let me know as I would love to post a screenshot of an index page with “recursion” on it.

After Delphi 3, I found these PDF language guides (found the name “devcommon.pdf” in my blog post MESSAGE directive Delphi) – I will mention translated documentation PDF files in a future blog post:

The 2009 RTL and documentation joke

In 2009, during the Codegear years, the Delphi R&D team did add one more joke. This time not to the documentation, but to the run-time library: the EProgrammerNotFound exception was added.

I blogged about this before in EProgrammerNotFound exception in Delphi? – Stack Overflow, and about Embarcadero killing most of their old on-line documentation in The Delphi documentation site docwiki.embarcadero.com has been down/up oscillating for 4 days is now down for almost a day., but the old Codegear docs website still contains [Wayback/Archive] Rad Studio 2007: Welcome and [Wayback/Archive] Delphi and C++ Builder 2009 Help Update 2: Welcome to Help.

The latter contains the very non-descroptive entry [Wayback/Archive] EProgrammerNotFound Class:

[Wayback] scr.png (PNG Image, 1024Β Γ—Β 768 pixels)

In the mean time it got a bit less dense because of a new small paragraph at [Wayback/Archive] System.SysUtils.EProgrammerNotFound – RAD Studio API Documentation

Nonstandard way to indicate software faults.
You can use EProgrammerNotFound as an alternative to indicate software faults detected at run time.

[Wayback] scr.png (PNG Image, 1024Β Γ—Β 768 pixels)

A few things I learned

In kind of random order

  • Not just the programming languages influenced each other, the book authors and indexers did too
  • Many books are available as PDF on-line, though some from not so clear sources.
  • The Internet Archive has many books online, but their PDF content is not indexed by Google Search, so these books often do not turn up in search results.
  • Science book publishing is a mess
  • As of late last century, and especially this century, programming languages hard contain index jokes any more
  • It was quite hard to find threads on social media or other on-line information about these jokes (usually just a single picture, mostly without referencing the actual book it was from)

Further reading

Computer manuals apparently have even more humor than most computer language books: [Wayback/Archive] The strangest computer manual ever written | Hacker News

Book indexing is a craft, and they write humorous posts too: [Wayback/Archive] Book Indexing, Part 2: Infinite Loops and Easter Eggs – Writer, Editor, Helper. It references a page of which in the current online copy the images are gone, but luckily they are still present in the archived versions at [Wayback/Archive] Index Humour.

Online forums, especially ones with editable posts, have taken over the recursion humor. For instance [Wayback/Archive] I would have thought you’d link to news.ycombinator.com/item?id=35574446 | Hacker News.

It is which is part of this comment tree [Wayback/Archive] I almost never comment here anymore but, well, here we are. Says something about software people that we find such fascination with recursion…. | Hacker News and pointed to me by [Wayback/Archive] Evan Light (looking for work): “@jwildeboer Relevant: news.ycombinator.com/item?id=35569670…” – Ten Forward.

Pingback

Not all of the above posts survived time, as also observed in this pingback thread: [Wayback/Archive] LIBRANET.de | clacke: exhausted pixie dream boy πŸ‡ΈπŸ‡ͺπŸ‡­πŸ‡°πŸ’™πŸ’› @ LIBRANET.de

Most of the original thread was archived in [Wayback/Archive] LIBRANET.de | Display: Had to verify. And yes. Kernighan and Ritchie really did this. TIL πŸ˜€.

--jeroen

4 Responses to “Old programming books had cool little “puns” in their references, modern lack them in their indices. On the why, and history of them.”

  1. Hallvard Vassbotn's avatar

    hvassbotn said

    Wow! You have been busy..!! :-DBtw, small typo (I hope):

    page 341: β‰ˆ 100pi

    That should be “page 314”, of course

    • jpluimers's avatar

      jpluimers said

      Thanks for catching that! Fixed it now (:

      Moving to a way november 2023 finally allowed me to recover further and start doing what I love a lot: do Delphi stuff and write blog posts.

      It finally allowed me to take up writing this blog post, also as a test on how I felt about writing again.

      Indeed it took quite some work: about half a year last year on and off about an hour a week or so, after making a note in 2020 this was an interesting topic.

      Glad I did it and people like it. Thanks!

  2. dennis's avatar

    dennis said

    Great read! Still, the recursion loop index ist my favourite :-)

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.