Christian Tellechea, Apprendre à programmer en TeX (Learning programming in TeX), http://www.lulu.com/us/en/shop/christian-tellechea/apprendre-%C3%A0-programmer-en-tex/paperback/product-21816783.html. Paperback, 580 pp., Lulu, 2014. Revision of 21/9/2014.
This book is in French and let me say right out that it deserves an English translation.
There are many books on TeX, as a typesetting tool (e.g., see list at [1]). Very few are dedicated to TeX as a programming language. Not a functional or general-purpose language, rather the kind of “programming language with a documentation language, thereby making programs more robust, more portable, more easily maintained, and arguably more fun to write than programs that are written only in a high-level language” (preface of [2]).
Tellechea’s book could be seen as a rewrite of a subset of The TeXbook [3]. However it avoids everything concerning, e.g., mathematical formula setting and focuses only on matters that are used today, e.g., to write (LA )TeX macros. Furthermore it uses a new framework, since it is a tutorial manual (even if, in the end, it can also be considered a reference manual, since it offers complete coverage of its chosen topics).
In the first hundred or so pages, the author explains the very low-level concepts such as catcodes, commands, active characters, arguments, developments, expansions, … At first glance, this part appears a bit verbose or slow, and you can’t see the forest for the trees. Nevertheless, this is probably the best way to make sure these concepts are fully understood by people not familiar with such a language. The odds are that even experienced macro users will learn something!
The second part describes numbers, recursion and control structures. Exercises allow the readers used to conventional programming to write macros to simulate their conventional structures such as for… do… or various forms of if then else fi.
Boxes, dimensions and input/output are studied in the following chapters and exercises answer everyday needs (lists, stacks, grids, etc., not to mention curve drawing without waste of memory or time!), as well as classical algorithms.
A final part revisits all the material in the context of long and thoroughly-commented examples such as the layout of paragraphs.
This book is easy to read and progressive. It leaves no question unanswered, and the exercises are useful both to understand the underlying concepts and to be reused in our programs.
As I said at first: a most worthwhile book to be translated into English.
[1] Books about TeX and Friends,
http://tug.org/books
[2] Donald E. Knuth, Literate Programming, CSLI Lecture Notes, no. 27, Stanford, 1992.
[3] Donald E. Knuth, The TeXbook, Reading, Massachusetts: Addison-Wesley, 1984.