2024 non-fiction. Zinoviev introduces the core functions of seven
programming languages that are now, for various reasons, little-known.
That's the best and the worst part of the book, really, that it
is primarily a teaching document: to achieve thing X you use feature Y
with syntax Z. This is great as a foundation for learning more about a
particular language; however, what I was more interested in was
twofold, first some history of how the language was used, and second
how its features differ from those of more modern (mostly C-descended)
languages and what one might usefully take from them when coding
elsewhere.
The languages in question are Forth, Occam, APL (which may challenge
your etext device), ALGOL/Simula, SNOBOL, Starset and m4. The first
five could all reasonably be said to have come and gone; Starset was a
late Soviet development, rendered most interesting by its use of
unordered sets as the primary data structure; and m4 is of course
widely used in the Unix world, but rarely by humans.
There are surprisingly many small errors which I'd have expected an
editor to pick up: for example the SNOBOL chapter includes:
LE(n1, n2). Fails if the numbers are not equal.
even though NE (which actually does this) is listed in the same
paragraph; and an attempt to explain any/all functions (in Starset):
∃ ::= min(bool(exp(var)) for var in $set); # True if any is true
∀ ::= max(bool(exp(var)) for var in $set); # True if all are true
gets, as you can see, the min
and max
the wrong way round. (1 is
true, 0 is false.) Often a box with a light bulb icon, showing a
connection between the language under discussion and something more
modern and familiar, just reiterates text from the previous paragraph.
So for me there were quite a few frustrations, but some of them were
from the book's not being quite what I wanted it to be, which is not
the book's fault. It does a great job of explaining how these
languages function, and if one wanted to start playing with them (as I
have with PostScript) that would be jolly handy; it does rather less
to account for why these are germane points now, for reasons beyond
"here's where it started, and then another language took the idea and
did it better".
Mentioned by Simon Cozens on
Mastodon.