Essays/APL's Birthday

From J Wiki
Jump to navigation Jump to search

An e-mail exchange from 2010-08-17. (The contents have been lightly edited.)

Catherine Lathwell:

I've seen references to the fact that APL has a birthday, but not the actual date. If I had to pick, I would pick 1962 when A Programming Language was published. What do you consider APL's birthday?

Roger Hui:

In 1991 there was an issue of the IBM Systems Journal, Volume 30, Number 4, labeled "Twenty-fifth Anniversary APL". So that'd make 1966 the birth year. The birthday and time are also known, sometime in November, sometime during the Thanksgiving weekend, so that'd make it between November 24 and 27 in 1966. I remember the Thanksgiving part because I remember reading someone's article saying that the APL implementers were workalcoholics, working even during the holidays. (Don't you remember Dick being away that weekend? :o )

The precise time is known because in the old days, instead of doing )clear , you do )load 1 cleanspace (or maybe the system did that under the covers), and that cleanspace had a saved timestamp that was carefully preserved from one release to the next, from one version to the next, from one APL to the next. Actually, I fired up my APL2 just now and:

       )load 1 cleanspace
SAVED 1966-11-27 15.53.59 (GMT-7)

You didn't ask, but the precise birthday of J is also known.

One summer weekend in 1989, Arthur Whitney visited Ken Iverson at Kiln Farm and produced—on one page and in one afternoon— an interpreter fragment on the AT&T 3B1 computer. I studied this interpreter for about a week for its organization and programming style; and on Sunday, August 27, 1989, at about four o’clock in the afternoon, wrote the first line of code that became the implementation described in this document.

(The two birthdays are not comparable. The APL birthday is when the implementation first worked; the J birthday is when the implementation began.)

Dick Lathwell responded on 2010-08-20 (link):

Trivia trivia: The timestamp on 1 cleanspace is actually 1 second later than the original. Some time after the implementation of )clear , Adin dropped 1 cleanspace .  He then had second thoughts, so I set the time and date of the model 50 to the original timestamp with the clock disabled and started APL and entered )save 1 cleanspace .   The implementation of our supervisor (I guess these days we would say kernel) was such that an interval timer interrupt was required to enter the scheduler, so I momentarily enabled the clock.

See also

Contributed by Roger Hui.