This is Ken Iverson’s Elementary Functions, a book that uses APL to illustrate mathematics.
Ken’s heirs have placed a lot of his works under Creative Commons licenses. After that was done, I’ve made it a point of finding spare copies and having them digitally scanned so that they can be preserved. Algebra: An Algorithmic Treatment is another example.
J Software is kind enough to host the PDFs.
Is there a page collecting links to Ken Iverson’s CC licensed works in PDF? I’d like to post this to an array languages group I visit.
(edit) I think I found the page that collects these documents: https://code.jsoftware.com/wiki/Books
Yep, you found it.
Which array languages group, if I may ask?
It’s a group internal to the Recurse Center. I posted these links and got an invite to pair on some katas in J! I may learn APL after all!
Thank you very much for finding and having this scanned! This looks particularly interesting seeing as it looks like it uses the ‘book APL’ notation from A Programming Language rather than the APL programming language (used in Iverson’s Algebra and Analysis books). This Elementary Functions book was published just after the first APL implementation was finished I think so presumably it was written before / alongside the computer implementation of APL.
What’s “book APL” ? How’s it different? I want to know more!
I can do no better than lorddimwit’s excellent answer :) The book itself is available at softwarepreservation.org here.
There’s some more info on the history in The Design of APL in the appendix on the chronology of APL development. In particular it turns out this Elementary Functions book grew out of a high school course Iverson taught in 1964. The students got to use an experimental partial implementation of APL on an IBM 1620 - must have been quite a course! edit: Actually these historical details are in the preface of the Elementary Functions book too.
APL started life as a “blackboard notation” for teaching and communicating mathematics. It was described in the book A Programming Language. In the title, “programming” wasn’t supposed to evoke “computer programming” so much as “designing algorithms and procedures.”
For the first several years of its existence, APL was purely a pen-and-paper/chalkboard notation.
When Aiden Falkoff wrote the first APL interpreter for a computer, several changes were made to the notation due to the realities of computing hardware at the time.
For example, “book” notation for “floor” is ⌊0.4⌋, whereas in “computer” notation, it’s ⌊0.4.
The book also uses a beautiful schematic representation of algorithms for loops and jumps; the ∇ notation on the computer approximates it but they’re not the same.
Reading A Programming Language to learn computer APL would be a bit like reading Shakespeare to learn modern English. You’d get 85% of the way there and get all the core concepts, but you’d say a lot of things that don’t quite make sense.
Interestingly, “book” APL has some stuff that was never completely put into computer APL.