APL Quotations and Anecdotes
It has been said that APL has quite a character set. The following are a collection of stories by or about these interesting characters, arranged in roughly chronological order. Additional stories can be found at:
For narrative reasons, there is a slight overlap between the present collection and the other two collections.
Ken regularly stood up to Howard Aiken, and Aiken stood six-foot-three and had Spockean ears and pointed tufts of hair and when he reared up and looked down at you, you thought you were looking at the Devil. And when he growled at you, you thought that too. Never mind: Aiken had the characteristic that if you stood up to him he respected that, and if you didn’t he just trod you underfoot. Ken stood up to him.
Ken’s manner was always argumentative, but argumentative with an effective expression: “Perhaps one ought to think about it this way ” This was in contrast with Aiken’s “Goddamit it’s gotta be so-and-so, all right?” Ken was firm in his views but he was reasonable. He satisfied the old Latin motto, Numquam incertus, semper apertus—never uncertain, always open.
Unsurprisingly, Ken stood up for what he believed in. He once spent a few hours in jail after being arrested during a protest against the Vietnam War. In the same cell was Garry Wills, the historian and author.
Remembering Ken Iverson, 2004-11
Eugene McDonnell was very interested to know more about the previous story.
What happened was that a bunch of people from Watson Research went down to protest
in separate groups.
Ken and Eugene were in different groups, and Eugene had not heard about
the jail part until reading about it in 2004.
Eugene said he never got to go to jail because his group was not so rowdy.
I left Harvard with offers from IBM Research and Bell Laboratories. Fred Brooks (who had joined IBM somewhat earlier) advised me to choose IBM because computers were their primary concern. After I joined the IBM Research Division, Fred advised that I stick to whatever I really wanted to do, because management was so starved for ideas that anything not clearly crazy would find support. In particular, I was allowed to finish and publish a book on my notation, (A Programming Language, Wiley, 1962), as well as Automatic Data Processing, with co-author Fred Brooks (Wiley, 1963).
Kenneth E. Iverson,
Kenneth E. Iverson,
“I am indebted to my wife for assistance in preparing the final draft”, so says the last sentence of the Preface to A Programming Language. The acknowledgment only hints at the heroic effort involved: Jean typed the text and hand-drew the special characters and symbols using a Keuffel&Esser Leroy Lettering Set. As well, she participated in the proofreading of several “final” drafts, reading out every comma, period, slash, dash, etc. while Ken followed in the galley copy.
Jean also compiled the index of the book
with the aid of punched cards.
In 2009, while putting A Programming Language on-line I encountered a difficulty with exercise 1.30 on page 67.
1.30 Show that for a homogeneous tree H, μ(H) = y ⊥ y, where = ν(H).
What’s the problem? In the text, the letter y superscribed with the arrow had a tiny blob of ink between the arrowhead and the y itself. My copy of the book was printed in 1989 by a xerographic process, leading me to think that the blob was a production flaw. But every jot, dot, tilde, and twiddle is significant in the book, so I could not rule out entirely that the blob is significant.
I soon enlisted the assistance of Joey Tuttle who has
an original imprint.
Under high magnification, it can be seen that the blob was indeed a flaw,
present in all copies of the book.
(Check your copy.)
Ken presented his paper Formalism in Programming Languages in August 1963 at a Working Conference on Mechanical Language Structures, Princeton, N.J. The list of conferees is full of famous and soon-to-be famous names, and a few future Turing Award winners (Backus, Curry, Dijkstra, Floyd, Iverson, Newell, Perlis, Wilkes). The paper also records the discussion that occurred after the presentation, ending with an exchange between Ken and Dijkstra, in which Ken’s reply to Dijkstra’s question was a one-liner.
The question immediately preceding Dijkstra’s question was posed
by S. Gorn of the University of Pennsylvania:
“Does your generalized operator notation for matrices lead
to a simpler proof of the generalized Laplace expansion of determinants?”
In reply, Ken launched into a page’s worth of carefully reasoned argument
full of intricate notation. With anyone else,
one would say that the answer was most likely composed afterwards
and then inserted into the written record.
Since this was Ken, it may just be possible that
his reply was ex tempore.
Talk about starting at the top. Working for and with Ken Iverson was my first job out of college. Roger [Moore] and I were introduced to Iverson Notation at the same SRI chalk talk. I didn’t do anything with it at the time, but a while later an IBM maverick technical guy and rhyming philosopher, Michael Montalbano, started hanging around Stanford’s brand-new computer science department. He was writing linear programming algorithms in the Notation, then hand-translating them into Fortran for his business-school students. He gave some informal lectures on the Notation; Phil Abrams and I attended enthusiastically.
IBM announced the IBM System/360 on April 7, 1964. Shortly after, Mike handed me a new IBM Systems Journal that had articles by the System/360 architects — and holy cow, one by Ken Iverson, Adin Falkoff, and Ed Sussenguth that precisely defined the whole 360 line in 18 pages of Notation, plus commentary: “A Formal Description of System/360.”
Phil and I devoured it. Once past the steepest part of the learning curve, we gave a series of seminars to other students. I found a few typos, which I mailed to Ken.
Then Ken came to visit, touring several institutions to talk about the Formal Description and his notation. I listened, argued once or twice, and handed over my latest errata. Ken thanked me, and said, “Larry, these are pretty minor. Why don’t you find something seriously wrong?”
Nothing could have fired me up like that challenge. I scoured the article. Late at night I sat in bed, with the fold-out pages resting over my recent bride’s nose (a nuisance) and eyes (appreciated). I got lucky. The Memory Access program had a race condition between requests from the Processor and Channel programs.
Next day at lunch I showed Ken what I’d found. Mid-afternoon Mike came by my office. “Larry, Ken’s taking the Lord’s name in vain. He came back from lunch saying ‘That sonofabitch Breed! Why didn’t we talk to him before we published this god-damned thing?’ ” And I knew that I had to go to work for him.
comment in It’s APL’s Birthday, or is it?,
Then I got A Formal Description of System/360 by Falkoff, Iverson, and Sussenguth — an amazing piece of work which later became known as the grey manual. I thoroughly enjoyed time spent on this document and came to appreciate that symbolic notation really can be used for describing real as well as formal systems. I didn’t find any fault with this document but I hope Larry Breed correctly describes how he found an error and told Ken about it at lunch at Stanford, being careful to bring it up when Ken had cake in his mouth.
In January of 1973, when I was 27 years old, I was a graduate student in physics. A few months earlier, I had taken some time off from the University of Oregon in Eugene and had moved to New York City. I spent the fall semester there taking physics courses at CCNY while supporting myself by teaching “Physics for Nurses” at Hunter College on the Upper East Side of Manhattan. However, by the end of the fall term, I decided I should return to Eugene and complete my Ph.D. there. The previous summer, I’d driven cross-country in my silver-colored 1956 Mercury Monterey, which I affectionately called “Q”, short for “quicksilver” (an ancient word meaning “mercury”) — shown in two attached photos, one taken way back in 1971, and the other in 2006 (yes, I still own Q today!) So, back to our tale I was now taking Q (or rather, Q was now taking me) back the other way — back across the amber waves of grain, the purple mountains’ majesty, across the fruited plain, from sea to shining sea.
Q and I tended to drive very late at night, and one night in the middle of darkest Iowa, at about 1 AM, there was a sudden extremely intense downpour, so I stopped at a truck stop to wait it out. Under the bright lights I had a coffee, and when the storm had somewhat abated, I went back out to Q and started off again. It was still raining, but not nearly as hard. Right as I was about to get back onto the freeway, I spied a rather pathetic totally drenched figure standing on the side of the road thumbing a ride, and he looked young and not in the least threatening, so I pulled on the reins of my steel steed and came to a halt, and told the sopping-wet fellow to hop in. He was probably in his late twenties, like me, and he had red hair, unlike me, and at that most wet juncture in his life, he was very relieved to get a ride.
So we got to talking, and after a while I mentioned that I had grown up on the Stanford campus. My traveling companion said that his brother had been at Stanford some years earlier, so naturally I asked what his brother had studied there, and he said that he was a computer person. Back in those days, this was an incredible rarity. In fact, Stanford had only one single computer when I, as a high-school kid, had started programming it, in 1960. So I said, “And what was his name?” And my still-shivering seatmate replied, “Roger Moore”.
Well, what do you know — Roger Moore! I remembered good old red-haired Roger extremely vividly from my undergraduate days at Stanford, in the early sixties. Back then, there was a small coterie of recursion-crazed math nuts — today they would be called “geeks” or “nerds”, but back then those words did not exist — who hung around all day and all night in the basement of Encina Hall, where the legendary Burroughs 220 was located, and who talked endlessly about the subtleties and beauties of ALGOL (a brand-new computer language of the time, and truly ALGOL was a wonderful and important breakthrough in computer science). This delightful, nerdy band included my friends Larry Breed, Larry Tesler, Charlie Brenner, Roger Moore, Bill Strachan, and myself (and probably a couple of others, but, like Q, my memory is a wee bit rusty after all these decades).
So of all things, in the middle of my life in the middle of a storm in the middle of the night in the middle of nowhere in the middle of the North American continent, Q and I had picked up the brother of someone I had hung out with some ten years earlier. Small world indeed.
Douglas Hofstadter, A Q Tale, 2009
I remember quite well the day I first heard the name APL. It was the summer of 1966 and I was working in the IBM Mohansic Laboratory, a small building in Yorktown Heights, NY. The project I was working on was IBM’s first effort at developing a commercial time-sharing system, one which was called TSS. The system was showing signs of becoming incomprehensible as more and more bells and whistles were added to it. As an experiment in documentation, I had hired three summer students and given them the job of transforming “development workbook” type of documentation we had for certain parts of the system into something more formal, namely Iverson notation, which the three students had learned while taking a course given by Ken Iverson at Fox Lane High School in Mount Kisco, NY. One of the students was Eric Iverson, Ken’s son.
As I walked by the office the three students shared, I could hear sounds of an argument going on. I poked my head in the door, and Eric asked me, “Isn’t it true that everyone knows the notation we’re using is called APL?” I was sorry to have to disappoint him by confessing that I had never heard it called that. Where had he got the idea it was well known? And who had decided to call it that? In fact, why did it have to be called anything? Quite a while later I heard how it was named. When the implementation effort started in June of 1966, the documentation effort started, too. I suppose when they had to write about “it”, Falkoff and Iverson realized that they would have to give “it” a name. There were probably many suggestions made at the time, but I have heard of only two. A group in SRA in Chicago which was developing instructional materials using the notation was in favor of the name “Mathlab”. This did not catch on. Another suggestion was to call it “Iverson’s Better Math” and then let people coin the appropriate acronym. This was deemed facetious.
Then one day Adin Falkoff walked into Ken’s office and wrote “A Programming Language” on the board, and underneath it the acronym “APL”. Thus it was born. It was just a week or so after this that Eric Iverson asked me his question, at a time when the name hadn’t yet found its way the thirteen miles up the Taconic Parkway from IBM Research to IBM Mohansic.
A Source Book in APL, 1981
In a time-sharing system, the key to good performance lies in the way the external storage devices are used. Here the contrast between the TSS and APL systems was most remarkable. On TSS, one could look through the glass windows of the disk devices and watch the motion of the arms. These jerked rapidly back and forth, swooping over wide areas of the disk faces, with the appearance of someone in the grip of St. Vitus’ dance. On the APL disks, one arm would be moving quite regularly, like the escapement mechanism of a clock, as it went from one track to the adjacent track, then to the next track, and so on, over fifty or so tracks in several seconds, and then retracted to the beginning and started the cycle over again. Sometimes the total excursion was more, sometimes less; it was so regular that an experienced person like Roger Moore, who was principally responsible for the APL supervisor, could tell how many users were signed on by watching it.
The Socio-Technical Beginnings of APL, 1979
One of the most characteristic conveniences of the system is the cue chosen for the user to make a new entry. On other systems being developed at this time, this user cue varied from one kind of character sequence to another: on one system a question mark would be printed, on another, a rather long-winded time stamp, on another, the word “READY”. In keeping with its general policy of informing the user as briefly as possible, the signal APL uses to indicate that output display has finished, or that computer processing is over, is succinct indeed. No printing characters appear at all: six spaces are sent, moving the cursor or printing element to the right, and the keyboard is unlocked for a new input. To me, that six-space cue is one of the key items in APL’s elegance. Larry Breed recalls that it was Ken Iverson who suggested it.
The Socio-Technical Beginnings of APL, 1979
Early in the J implementation Ken suggested that the prompt should be 3 spaces instead of 6. There are suggestions and there are suggestions, and this suggestion was made in a tone which brooked no argument. So I made it so.
Later, k one-upped us by doing a one-space prompt.
In 1966 Eugene went into a sporting goods store in Peekskill, NY to buy a soccer ball. The salesman showed him ones that cost $10, others that cost $14, and finally the professional version for $28. (Even $10 was a lot of money in those days.) Presented with this array of choices, Eugene can not decide, explaining to the salesman that it was for his daughter Julia. The saleman said, “Oh, for girls we have some over here for $7.” Eugene immediately responded, “I’ve decided! I’ll take the $28 one.”
One of the best known epiphanies in Western culture is possibly that of Saul on the way to Damascus. My own epiphany in programming languages was much less dramatic than Saul’s. I was not going anywhere, there was no blinding light or voice from above, nor did I fall down. It was in 1965 or 1966, and I was sitting quietly in my office in the Department of Computing Science at the University of Alberta thinking about the commonly occurring statistical problem of classifying a number of observations given the left-hand end of the first frequency class, the class width and the number of classes. This is a problem I had already handled in other languages but now I was trying to program it in a new language called Iverson’s notation or APL.
Kenneth Iverson, APL and J:
Ken’s name next came to my attention when a friend and I took our wives to a dinner meeting of the local ACM chapter. I always felt there was no way to impress a woman like an ACM meeting. In fact, we did go for a social evening and didn’t even make note of the speaker who was someone I never heard of anyway. It was Adin Falkoff with a portable (by some extended meaning of that word) 2741 terminal which he dialed into Yorktown and showed us APL.
I was absolutely blown away by the whole presentation. Adin typed in “2 space 3 backspace backspace plus” and pressed return and it typed “5”. He called it visual fidelity. I recall our wives were not so impressed by this as they were apparently able to work out this result in their heads without use of a terminal and phone line.
Born in Dublin, 1932, Ian Sharp graduated in engineering from Cambridge University, spent four years in OR for United Steel Companies. In 1960 he came to Canada and became chief programmer responsible for software development at Ferranti-Packard, Toronto. In 1964 he formed I.P. Sharp Associates.
Canadian Datasytems, 1970-02
I.P. Sharp Associates was founded by the FP6000 programming team and one other in 1964. Directors: Ian Sharp, Roger Moore, Ted McDorman, and Don Smith; three others: David Oldacre, Brian Daly, and James McSherry. The preceding seven joined in December 1964 at various dates. In spring 1965, David Butler, an engineer from the non-FP6000 part of Electronics Division, joined. Butler was more interested in military business than any other employee.
Ian, Brian, and Jim McS painted the new office at DeMarco Building at Keele & Lawrence.
Roger Moore was returning from the US to Canada. The customs officer at the border questioned him about some boxes of punch cards in his possession. Roger avoided further complications by explaining to the officer that the punch cards were used rather than new.
Graham Driscoll had a reputation for being direct
and taking unusual approaches to solving problems.
Once an entranceway was temporarily blocked by a car.
Driscoll overcame the obstacle by opening one car door,
got into the car, and
exited the car and the entranceway through the other door.
The early APL group at IBM had a deep and abiding interest in words,
in their correct use and in their etymology.
Once, someone uttered in frustration, “Horseshit!”
Graham Driscoll immediately responded,
“ ‘Horse’ is Middle English, and comes from the Old English hors;
‘shit’ too is Middle English, and comes from everywhere.”
Ken made a great many appearances at schools and universities, to explain how he thought students could and should make use of computers, and in particular, how they could start right away, using APL. At some of these guest experiences, I got to serve as his assistant, and I felt a bit like Robin getting to carry Batman’s bag. But listening to Ken give those demonstrations, I marvelled at the spontaneous and natural way he seemed to talk. Especially I loved the way he deftly handled questions from the audience. He seemed endlessly able to respond to their queries with neat examples and appropriate jokes. Only after I had listened to these presentations many times, did I begin to catch on to how he did this. He carried around in his head a huge fund of examples, jokes, aphorisms, stories, but he kept them in reserve. He didn’t offer them. He waited until a listener’s question happened to set up one of them, and then he sprang it forth. It sounded just like something he’d thought of that instant in response to what the questioner had asked.
Seeking to counter the popularity of Dartmouth Basic (running on teletypes and a remote GE computer) at the prestigious Hotchkiss School in Connecticut, IBM V.P. Arthur K. Watson, who was a Hotchkiss trustee, had APL terminals and access to the Yorktown APL\360 system installed for Hotchkiss students. The students loved it, and carefully steered newbies to the Basic teletypes so as to maximize their own APL time.
Larry Breed, How
We Got to APL\1130, 2004-05-10
Q: I have read some other discussions where you and other people suggested that one of the interesting applications was using APL to teach programming and mathematics at the elementary and high school levels.
Adin: We did some of that, particularly at the beginning, and we had a little fun with it.
At that time we only had typewriter terminals and we made some available to some local private schools. There was one in particular where problem students were supposed to be taught, and we gave them exercises to do on the typewriter and turned them loose.
The fun part was that we found that some of these students who were supposed to be resistant to learning broke into the school after hours so they could do more work on it. They were using typewriter terminals hooked to our time-sharing system.
Masterminds of Programming, 2009
The ACM Grace Murray Hopper Award is given to the outstanding young computer professional of the year, selected on the basis of a single recent major technical or service contribution. The candidate must have been 35 years of age or less at the time the qualifying contribution was made.
The 1973 Grace Murray Hopper Award goes to Larry Breed, Richard Lathwell, and Roger Moore, for their work in the design and implementation of APL/360, setting new standards in simplicity, efficiency, reliability and response time for interactive systems.
Grace Murray Hopper Award
A slightly different version of this photo appeared
on the front page of
the I.P. Sharp Newsletter, 1978-11 to -12, volume 6, number 6.
The caption on the photo had the following sentence:
It is believed to be the first time all six “originators of APL”
have been in the same place at the same time;
it is probably the first time that all six have worn jackets and ties
simultaneously and the first time Ken and Adin have been observed
to smile simultaneously.
I interviewed with Ian, who seemed satisfied, but he told me, “You’ll have to talk with Roger.” He made it sound as if Roger was some sort of demigod. Which was not far from the truth. I was led to an elfin, rumpled-looking character who was smoking a cigarette and staring and muttering at a listing. Roger Moore.
I introduced myself and said Ian had sent me over about the compiler job. Roger was more interested in the problem than in me, I think. I got frustrated sitting there, while he smoked and muttered and looked at the code, so I asked him to explain the problem to me, then pitched in. I don’t recall what we were looking at; it was probably the IPSCOBOL compiler code. After an hour or so, I said I had to leave to go on another interview, so I asked him where we stood on the job. “Oh, oh, yeah, I guess we can use you.”
Generating IPSCOBOL test cases was part of the job. The more interesting part was analyzing the compiler output for correctness. Both of those tasks screamed for automation, which led to my learning APL.
It was early in my first week at I.P. Sharp in Ottawa when Ian Sharp arrived for a visit. Ian’s standard modus operandi was to sit with employees in silence until they spilled whatever was on their mind. It was a great way of finding out what was really going on in the company. This day was no different, and I was searching for something to say. Since I had never seen APL before, I asked Ian whether there was an APL course coming up soon. He responded there was one scheduled the next week. When I asked if I could take it, Ian responded, “You’re giving it!” I was a highly motivated learner, to say the least. It was perhaps the best course I ever gave, as I was certainly at no risk of cramming too much information into the course.
Lower Canada College in Montreal was fortunate enough to have been introduced to APL when John Brown, then head of the Mathematics Department of the school, met Ken Iverson at an IBM conference in the late 60’s. John excitedly brought IBM’s APL to the School, and this was later replaced by a connection to SHARP APL (then APL Plus). Everyone used the same account number, and so had access to everyone else’s information. Some people, including myself, started to reason about how one could protect workspaces and files (when these were released in 1970) from prying eyes. We started to think beyond (workspace) locks and (file) magic numbers, and this led to techniques for monitoring application security, trapping snoopers, encrypting data, hiding programs, etc.
The first Mailbox (the term “e-mail” hadn’t yet been coined) was developed by Larry Breed at STSC during a period in time when IPSA and STSC collaborated on many language and environmental features. Larry’s Mailbox was actually the world’s second electronic mail application that I know of, the first having been written in 1971 by Frank Bates III of Mobility Systems. Frank’s application demonstrated the efficacy of communication through this medium, but was not a robust, commercial application and was not secure. In early 1972, Larry set out to build something that was.
There was something appealing about trying to break into a messaging system. For one, you can learn a lot trying, and even more when you’re successful. Additionally, Larry had introduced some novel changes into the APL interpreter to allow name masking, and this made the allure still greater—even mysterious. After having penetrated numerous other applications running on the mainframe, it wasn’t hard to convince myself to try to break into the Mailbox. I did this successfully on many occasions, using a variety of techniques that I developed. Each time, I would report what I had done to David Keith, branch manager of the IPSA Montreal office, and eventually that hole would be plugged and I’d move on to find a new one. Years later, Larry told me he was late for the annual STSC Christmas party in 1972 because he was busy fixing my latest reported vulnerability.
One Saturday in 1973, I recall being at the School browsing through everyone’s messages when I came across one written by David Keith about a confidential sales prospect. The message was addressed to Ian Sharp and a few senior managers in the company. It went on for some time about the nature of the opportunity and the likely next steps in securing it. In conclusion, David reiterated the confidentiality of the matter and, almost prophetically, added “that goes for you snoopers at LCC, too!” It was a mirthful moment.
A couple of months later, David Bonyun of I.P. Sharp, then System Librarian and in charge of all public libraries, contacted me and asked if I would write a new Mailbox that was functionally similar to the existing one but “Leslie Goldsmith proof”. Doing this would certainly bring to bear all that I had learned about trying to protect data at LCC.
My first version of 666 BOX was written as a part-time activity in the late summer of 1973. IPSA did not have access to the source for the version they had been running, so it was written from scratch. Although it underwent many significant changes over the coming years, dramatically increasing its capacity and later introducing cross-domain message transfer, I’m not aware of any successful attempts to penetrate it.
It came time to negotiate the remuneration for the mailbox work.
Ian Sharp offered a fixed sum; Leslie Goldsmith countered with a royalty approach
of one penny per message.
The negotiations demonstrated the financial acumen of both parties:
if Leslie had prevailed he would eventually
have received several orders of magnitude more than the fixed sum.
A constant source of irritation was the universal attitude of all telephone companies to the idea of electronic mail. It was regarded as a huge threat to the considerable income that they all derived from Telex traffic. Telex was an ultra-low speed communication system among Teletype terminals. The service was introduced in the mid 1940s as the solution to all corporate data transmission requirements. No significant improvements or upgrades were made to that service over the next 30 to 40 years. The first real threat came with the advent of electronic mail, or at least that was how electronic mail was perceived. The first reaction of any monopoly to a perceived threat is to ban it outright, and that is more or less what the telephone companies of the world did. As a company we had no serious intention of offering a general inter-company communications facility that might have competed with Telex. We were mainly interested in an internal communication system among employees and a mechanism to communicate with our customers. Assuaging paranoia was almost a full time job and was probably the subject of more meetings around the globe than any other single issue.We never did succeed completely in allaying suspicion, and many phone companies were sure that we were eating their Telex lunch, even though they had no evidence of it. As a gesture of goodwill, we modified our Email software so that it was not possible for one customer to communicate with another, but that was largely a waste of time since they did not really believe that we had done that. In Germany the Bundespost invented a tariff which they said we must apply to all Emails and send them money each month. Since we did not have revenue from electronic mail in Germany, we never sent them “their share” and eventually the issue atrophied.
It was of course the proliferation of computers and private corporate networks which caused the erosion of Telex use. More and more people started to use electronic mail and the telephone companies were simply over-powered by the tidal surge of individual as well as corporate usage. It is doubtful that as many as 1% of the present population of Email users has any idea that just a few short years ago the whole thing was illegal.
Ian Sharp, I.P. Sharp Associates
and the Telephone Monopolies, 2005
In the spring of 1971, I took a survey class about programming languages—a different one each week. I was standing outside a classroom and overheard two classmates:
“What’s the language this week?”
“It’s Iverson Notation on a 2741 typewriter terminal.”Instant love. Not only my favourite language, but no more punch cards. Little did I realize then that it would set my life’s career path.
It’s APL’s Birthday! Or is it?, 2011-11-27
Al Rose was one of the best stage acts I can remember. I attended a gig of his somewhere in London in the early ’70s. Al had an IBM golf-ball APL terminal. As a finale, he said, “I have The Book of Psalms here — what do you want to know?” There was a long pause, until someone in the audience asked, “Which word occurs most often?”
Al put his head down and thought for around a minute (which is a very, very long time when you’re on stage). Then he typed in a fairly long APL expression. There was a pause. Then the typewriter started clattering out a list of the unique words and their counts in order of frequency. It brought the house down.
The best thing about the experience was the look on the Fortran programmers’ faces :-)
Jeffrey Shallit was a summer intern
at the IBM Philadelphia Scientific Center in 1973.
He was working on some high precision computations using APL.
I can’t remember whether it was a precise evaluation
of pi to several thousand places,
or perhaps Mersenne prime #24
That afternoon, Jeff came in and discovered the note and raced into Ron’s office saying, “How do you know that digit is wrong??” To which Ron calmly replied, “I have no idea if it is correct or not — I was just asking if you were sure ”
I was (am still) impressed with Jeffrey’s work because he did it in an 80KB APL workspace. Hard to imagine these days when it is routine to work with a hundred thousand times that much memory Although I note that J only consumes 80704 bytes to calculate _1+2^19937x and that’s impressive too.
My usual metric for the progress in Big Iron was based on the size
that a disk drive had to be, in order to kill you if it fell on you.
By the end of my physical contact with that hardware, in the mid ’80s,
it was up to
Ken encouraged me to collaborate with John Thorstensen, a graduate student in astronomy, on a program called STARMAP. The idea was to explain the movement of the stars and planets across the sky and to do it by writing programs that clearly stated the simple formulas that described their motion. When we asked for approval to publish this example of didactic programming we got back from the publications review committee a message that said, “Permission denied. This paper discloses proprietary algorithms that are the intellectual property of IBM.” I sent in an appeal saying, as diplomatically as I could, Don’t be silly. This is an APL restatement of Kepler’s function from about 1610. But then we got a new rejection. This time it said, “Permission denied. This is not original work.”
Paul Berry, Expository Programming, 2006
In August 1973, MCM sent Ted Edwards to the APL Congress in Copenhagen with a prototype of the MCM/70. What was unusual about that MCM/70 was that it was mounted in an attaché case and was operating on batteries. Edwards was not only able to board the plane with this unusual device but also reviewed his presentation using that MCM/70 during the flight to Copenhagen. This constitutes another “first” for MCM: the first portable computer operated during a flight. And, of course, that “laptop” was running MCM/APL. The MCM/70 story was picked up by the Danish daily Politiken on 1973-09-28.
MCM70 & the angst of being there first,
My career in APL started as a summer student at IPSA Calgary in 1975, where Arthur Whitney was a summer student the year before. On my first day on the job Ian Sharp happened to be visiting, and the whole office went out to lunch with Ian. During lunch I expounded on matters far and wide. Ian watched me for a while, then turned to Lib Gibson, IPSA Calgary branch manager, and asked, “Isn’t Arthur Whitney coming back with us this year?”
It was years before I realized that I had been put down.
Working at IPSA, with its far-flung offices and its
Mailbox, it was possible to “know”
a person for years without ever meeting the person.
Well into my IPSA career, I asked Lib Gibson, “Is Leslie Goldsmith
a guy or a girl?”
In 1975 or 1976 the IPSA Calgary office barbeque took place at a lake about 10 minutes away from Lib Gibson’s house. We gathered at the house, then walked over to the lake carrying the food, drinks, dishes, cutlery, etc. Frank Arthur and I had the cooler.
The cooler was awkward and heavy and I kept having
to switch hands. After a while Frank asked me to let go,
then proceeded to put the cooler on his head
and walked the rest of the way with the cooler
balanced on his head.
This was a skill he learned in his native Ghana.
In those days we had IBM 2741 terminals that connected to the IPSA mainframe in Toronto via acoustic couplers and modems, dialed through ordinary telephones. Those phones were not supposed to receive incoming calls, but once in a while did ring due to incorrectly dialed numbers. On such occasions, Fred Appleyard would pick up the phone and say, “Beverly’s Bordello.” And sometimes Frank Arthur would pick up and say, “Cathy’s Cathouse.”
One time, instead of ending the call quickly,
the caller asked, “What number did I dial?”
Modem technology introduced around 1960 was the Western Electric 103A. It used frequency shift keying and could run at 300 baud. Original terminals were 2741s and clones at 134.5 baud. I cannot remember exactly when ASCII support was introduced. APL ASCII was helped by the daisy wheel printer technology which ran at 30 cps (provided you didn’t feed it with wrong character sequences like N⍴'E0').
Prior to IPSANET it was expensive to provide 300 bps service outside of Toronto. A wider bandwidth time-division multiplex channel was required which increased costs. With packet switching support for higher speeds became possible. I think IPSA was widely deployed in 1978 (check rogerdmoore.ca/INF) with 134.5/300 bps autospeed ports on the Alpha and 3705. Checking May/June 1978 network topology suggests that TDM links were gone in 1978.
1978 was during the Vadic v WE 212A wars. Both provided 1200 bps over dial-up lines; only Vadic could be acoustically coupled. I think there were some 1200 bps network ports in 1978. As these ports became more common, we discovered that the exact Alpha hardware configured did not really support 1200 bps. I spend a couple of weeks looking the source of the problem. The problem was associated the bloody awful transmit shutdown scheme in the Advanced [sic] Micro Device 9551 chip. Commercial async chips (unlike IBM 3705) were incapable of transmitting an invisible idle (start bit at mark and data=all marks). With the 9551 turning off transmit mode immediately jammed transmit data at mark. This meant Alpha software had to send two dummy characters after last character from a packet. In normal 9551 transmit operation a new character was requested in the middle of stop bit transmission. For a characters other than last Alpha hardware would supply a new character in between instructions. When count expired on the data transfer there was an interrupt. If interrupt was serviced by shutting down transmit mode while the stop bit was being transmitted, everything was OK. If interrupt service was delayed then transmission of start bit of next character would start. A small delay would result in a visible blip on transmit data which would probably be ignored by the modem. Transmitting half of the start bit would be visible to modem and end user. Thus delay of interrupt by (1/1200 sec) would guarantee a noise character at user terminal. Shorter delay might give garbage.
Solution was global switch to Intel 8251 chip which had a much more civilized approach to transmit shutdown. With 8251, shutting down transmit mode disabled further requests for more characters but allowed buffered characters in chip (usually two) to be transmitted. This network wide hardware change which occurred one node at a time was required to properly support 1200 bps.
When I was in my early twenties, for a while I happened to be the only person in Atkins Computing who knew any APL. I was a techie, working in “Systems”, supporting the Sigma operating system, including the new Sigma APL (which was written in wonderful Metasymbol).
Atkins was keen to sell time-sharing CPU cycles to Rank-Xerox, who had indicated an interest in APL and wanted to evaluate our “APL Training Course”.
I was detailed to give an “Introduction to APL” course for evaluation. Come the day, I found myself in the conference room with a blackboard. I don’t think the company owned an APL terminal at that time; we used $I $R $TAK $DRP on a KSR-33 teletype.
Can you spot what’s wrong with this picture? No? I’ll tell you.
Me: I was profoundly shy at this point in my life and found any sort of public speaking almost impossible. I had been to an all-boys school and (for all intents and purposes) an all-male math faculty, and so blushed and stuttered in the presence of g-g-g-irls. I was in the room to try to teach APL.
Sally: was the “Company Glam”: long blonde hair, long legs, the whole package. Her job was to soothe the predominantly male customer base, and she was very good at it. Whenever Sally walked in, my throat swelled up and I found it hard to breathe. Sally was in the room to be cute, not to learn APL.
Steve: hated me. He had a low opinion of technical people and saw my being exposed to clients as trespassing on his territory. He would be giving the next APL course “properly”. Steve was in the room to trip me up, not to learn APL.
Alpha-male: in his fifties, was the sort of guy the financial services industry likes to use in adverts because their mere appearance commands respect. He had greying beautifully-coiffured hair and wore a very expensive suit. (My father wore an old blue suit to work but it was shiny in places and he often slept on the sofa in it.) Equally daunting for me was Alpha’s BBC/Royal accent and perfect diction. He was of a species different from mine. Alpha brought just his presence to the room; he was not there to learn APL.
Sidekick0&1 had shadowy bit-parts. They didn’t do or say much. They were in the room, I suspect, to agree with and to make Alpha look good, not to learn APL.
I started shakily; “APL was invented by Dr. Kenneth Iverson; APL works back to front, well not really, well sort of ”
Half an hour in, no-one had uttered a word. This is because none of them considered themselves participants; they were just there to observe. I was dying and close to tears. I struggled on for an hour or so: the shape of a zero is empty but the shape of an empty is zero because the rank of a vector is one and the rank of a one is a zero and
And then there was a glimmer of light. Alpha leaned towards Sidekick1 and said something to which Sidekick1 nodded and smiled. At least they were alive! I grabbed the opportunity like a life-belt and asked if I could clarify something. Alpha looked me straight in the eye and said: “I thought you used the word ‘Wank’.”
From the perspective of modern-day sensibilities, it’s hard to imagine just how shocking this utterance was. This was a word that I would have found difficult to say to my drinking buddies, let alone at work, let alone in front of clients and, most especially, let alone in front of a lady. I just didn’t know how to react. I was literally speechless.
And then it dawned on me: they were here to evaluate the training; it was a psychological test to see how I would react to extremely adverse conditions during my course. I made a snap decision to react firmly. I said “No, I used the word R-R-R-ank”. I may have raised my eyes skywards in a gesture of disdain.
My mind had turned to mush. I stumbled on until just before lunch but I was more or less sleepwalking. Part of me had stopped functioning. The others seemed to recover a little and all but Alpha managed a question or two. And then, just before we broke for lunch, he attracted my attention and said with perfect diction: “I’m sowwy, I weally didn’t understand that.”
His original bombshell had been little more than a feeble joke that “rank” was a technical word in APL and that they were from Rank-Xerox.
For years afterwards, I woke up in a hot sweat in the middle of the night. My only consolation being that anyone with such a speech impediment should weally have avoided employment with Wank-Xewox.
We got the contract, perhaps only because Alpha over-compensated for the public insult I had bestowed on him. I don’t know what happened to Steve and Sally. I was never quite the same again.
A second precious property I’ve found, with respect to APL, is the term that I’ve used in that little article that was printed in SIAM NEWS — the word “lyrical”. I find that programming APL is fun. It’s charming. It’s pleasant. I find that programming is no longer a chore, and one of the reasons it’s not is the fact that there are always so many choices available to me. Whereas, the people in structured programming tell me if you put enough structure in programs, everybody in the room here will write the same ALGOL program or PASCAL program. Thus, it’s going to be easier to read — but also dull.
God made us all different. No two of our minds work exactly alike, and one of the great powers of English is that those of us who learn to sharpen our wits on it, and use it properly, can say things differently from other people. And hence, it’s a pleasure to read English when it’s written by someone who has that talent. The other day I was reading a newspaper, an article by somebody in the arts who said if Shakespeare were alive today he’d be writing for TV. And I said to myself when I read that, “Not so. If Shakespeare were alive today, he’d be a programmer, and he’d be writing one-liners in APL.”
Almost Perfect Artifacts
Improve only in Small Ways:
85. Though the Chinese should adore APL, it’s Fortran they put their money on.
Epigrams in Programming,
JAN Lee: I have a question from Peter Wegner from Brown University. “Both SNOBOL4 and APL achieve their attractiveness in part by their lack of declarations; that is, declarations force the programmer to plan ahead, and the attractiveness of SNOBOL and APL is due to the fact that programmers need not plan ahead. Should we encourage this attitude amongst programmers?”
Kenneth Iverson: Well, as I said at the outset, the ones that I wanted to duck, I’d ask Adin. You want to grab that one, Adin? The answer is no—he doesn’t want to. But he’s going to.
Lee: Basically, the question is that no declarations are required in either SNOBOL 4 or APL and that seems to be against the trend of software engineering.
Adin Falkoff: Right, and the second part of the question is—isn’t that going to cause programmers to suffer some kind of mental debilitation.
Lee: I think that’s a good paraphrasing.
Falkoff: And I’m reminded of a conference on programming systems for mathematics that was held in 1966 or 1967, in which the question was, “Should we have interactive systems because that’s going to cause a degeneration of the mathematical ability of the populace?” I think that the presence or absence of declarations has very little to do with the acceptability of the language. I think there are good technical reasons for not having them. By and large they tend to be redundant, and therefore incur many new rules, and thereby make life more complicated.
Falkoff and Iverson,
The Evolution of APL,
The 1979 ACM Turing Award goes to Kenneth E. Iverson, for his pioneering effort in programming languages and mathematical notation resulting in what the computing field now knows as APL, for his contributions to the implementation of interactive systems, to educational uses of APL, and to programming language theory and practice.
The A.M. Turing Award, the ACM’s most prestigious technical award, is given for major contributions of lasting importance to computing. Recipients are invited to give the annual Turing Award Lecture. The award, sometimes referred to as the “Nobel Prize” of Computing, was named in honor of Alan Mathison Turing (1912–1954), a British mathematician and computer scientist.
ACM, Turing Award
Ms. Alvord conducted APL contests for her students for several years and permitted nonstudents to enter the contests as well. An engaging thing about her contests was that she awarded an official-looking medal to the winner. I can remember how proud I was to receive my first medal. (To appreciate this story you should realize that at the time I had been using APL for a dozen years and was working in IBM’s prestigious APL design group.) Well, the day after I received the medal in the mail at home, my colleague Paul Berry was on the same commuter train to our office in Philadelphia. With great pride I showed my medal to Paul, who looked at it and said, “Oh yes, my son Michael has two of those.” Talk about put-downs!: Michael Berry (now in the Boston office of I.P. Sharp Associates) was then a high-school junior!
Recreational APL: Pyramigram,
In the summer my family would all be at the shore in Sea Isle, NJ. I was the youngest of my cousins. My grandmother would look at me and say “JoeJackRosalieBarryPennyLinda” and I thought it was my full name. However, she was usually looking for a fourth for bridge. The older generation played bridge all day every day. Rosalie always got snagged and would spend the day inside. I realized that I should not become a bridge player or I would never get in the ocean. So I have maintained my resistance to the game or I would become addicted. It is sort of like a self designed “Bridge Anonymous”. I’ll watch your responses but I’m unwilling to go beyond dealing the cards. I’ve resisted studying the hands. Good Luck getting takers.
Linda Alvord, responding to a
J Forum message on a
APL Users Meeting, 1980-10
Bill Gates had recently dropped out of Harvard and was keen on the possibilities of the coming wave of personal computers. This was before the IBM PC, but not much before. He had some knowledge of APL and thought of it as a possible language for the new machines. He was traveling across North America talking to anyone who would talk to him. Ian was on his list because of APL. Ian talked with lots of people who had crazy ideas. Gates happened to be the one who turned out to be right.
He cold-called Ian and asked for a meeting. Shortly after that meeting started Ian called me and asked if I would join them. The three of us chatted pleasantly in Ian’s office for some time. Then I gave Gates a tour of the data center and the development offices. I introduced him to whomever happened to be around and that included Bob. As far as I remember that was the end of it.
Gates came into my office, and we talked a bit about development work. I asked him where they were going with APL. He said that they had tried building an APL interpreter, but gave up on the idea, because it spent all its time looking up names in the symbol table. I told him that was precisely why nobody did it that way, instead tokenizing APL code so that such time-consuming actions were performed only once. He shrugged that off, and switched the topic to his new project, a graphical front end to DOS, based on the Xerox work. That front end was Windows, of course.
[Editor note: The timing of Bill Gates’s
visit to IPSA Toronto differs considerably between
the two recollections.
At the time, whether “recently dropped out of Harvard”,
“before the IBM PC”,
or “a graphical front end to DOS, based on the Xerox work”,
Gates was not as notable as he is now
and his visit was not seen as significant,
and so the participants are now unable to recall the date and other details more precisely.
I suppose we can ask Bill Gates.]
APL could have become a dominant language for the microcomputer if only some software company had developed an APL interpreter for early microcomputers based on popular microprocessors such as the Intel 8080 or Zilog Z80. In the 1970s, those who identified microcomputers with BASIC and viewed that language as an insignificant programming toy, could have entered the microcomputer market earlier by choosing an APL-based machine. In view of the popularity of APL, such a company could have derived substantial profits from selling its APL software — the same way Microsoft was paying its bills with the sales of BASIC. In fact it was Microsoft’s co-founder and APL’s vocal supporter Bill Gates who wanted to do just that. Microsoft had been developing its own APL interpreter since 1976, perhaps under the influence of IBM’s introduction of its APL-based IBM 5100 computer. “Equivalence with the 5100 was my goal,” explained Gates in his March 1979 interview for ETI Canada [“APL: Good for the Brain”]. After the success of Microsoft BASIC, first offered to the owners of the Altair 8800 microcomputers in mid-1975, “APL seemed like a great follow-on product,” continued Gates. However, in 1976, Microsoft was still a small software company carefully addressing market needs. Fortran got higher priority and by the end of 1976, only one person was left at Microsoft to continue the APL work. Microsoft Fortran was introduced in June 1977 and COBOL the following year. It was not until 1979 that Microsoft announced its APL-80 interpreter for the Intel 8080 and Zilog Z80 platforms. It was to be out in April 1979 and compatible with IBM’s APL.SV software. But in the end the Microsoft APL-80 proved to be vaporware and by the early 1980s, it was Microsoft’s BASIC and not APL that was installed on the majority of personal computers.
the PC, 2011, p. 184.
An APL conference in the late ’70s
or early ’80s had conference bags emblazoned with red printing,
which due to poor quality rubbed off easily.
At one point Brian Daly, IPSA Canada country manager,
turned to Morgan Smyth, IPSA Toronto branch manager,
looked him up and down and, while gesturing
at the front of Smyth’s pants, said,
“I trust that’s not lipstick?”
This reference manual describes STSC’s Nested Array System, an experimental research implementation of APL developed to explore extensions to the APL language. Among other proposals this system offers nested arrays, arrays in which each position can contain an array of any rank. Nested arrays can conveniently represent data which is difficult to represent in conventional APL data structures.
The purpose of this research is to develop extensions to APL which will make APL programmers more productive. The concepts in this manual can also be used to model processes which will later be rewritten in APL or another language. Explore and evaluate these concepts and use them to extend your thought tools.
The process of implementing the Nested Array System has focused on producing a fully functional system rather than an efficient system. Operating efficiency will be addressed at a later time.
STSC currently plans to offer the research implementation until January 1982. Selected features from this system will be provided in STSC’s production APL*PLUS VM System.
Among the many people whose ideas are included in this system are J.A. Brown, Kenneth E. Iverson, Michael A. Jenkins, E.E. McDonnell, Trenchard More, and Bob Smith. The Nested Array System was implemented by Bob Smith.
I would like to thank those who spent many hours reviewing earlier versions of this manual: Tom Edelson, Paul Jackson, Bob Korsan, Gene Mannacio, Bob McGhee, Don Scheer, and Roy Sykes, Jr. I am especially grateful to John Gilmore, Graham Prindle, Laurie Russell, Barbara Schick, and Bob Smith who contributed many useful items.
Carl M. Cheney, Preface,
APL*Plus Nested Array System
A nostalgic reminiscence of the early days of APL, remembered to the tune of The Battle of New Orleans.
Dedicated to the pioneers of APL with respect and affection by J.C.L. Guest
A Personal History of APL,
However, all was not grim in those early years, and one gets an insight into the sense of humor which still abounds in the APL world. The Great Inner Products Contest was announced in the January 15, 1971 issue. Readers were encouraged to submit their “favorite and most expressive use of the inner product”. Among the so-called rules of the competition:
Volume II, Number 6, March 17, 1971 reveals that the APL community could meet challenge with characteristic tongue-in-cheek:
Not all was fun and games, however. Mike Jenkins introduced the new matrix inversion primitive, domino, to the APL community in Volume III, Number 4, February 10, 1972. This landmark paper is often referred to, and can still be used today to gain insight into this function. And domino can be used in interesting and mysterious ways, too. At the [APL82] meeting in Heidelberg, Timo Seppälä of TMT-Team Oy, Helsinki, was asking people if they knew the shortest expression for computing the average of a vector. (Think about it and then look for the answer at the end of this introduction.)
APL QUOTE-QUAD: The Early Years,
John was well-known for being eccentric. He once rode to the STSC offices in Bethesda on a motorcycle, long hair streaming back from his head, wearing a skirt. At that time Bethesda was booming with construction and he elicited wolf whistles from the construction workers in the area as he went by.
Bob Smith and Mary Stanley
At the APL83 conference in Washington DC, Dyalog APL Version 1.0 was presented to an unsuspecting audience for the first time: the first second-generation APL interpreter, implemented on Unix — the operating system for the next generation of computers. Dyalog APL was clearly ideally positioned for the emerging markets of the future!
Dyalog at 25,
2008-09, page 1
David Crossley: Our schedule was to have a working interpreter within twelve months, with the objective of presenting Dyalog APL to the world at the APL83 conference in Washington DC. We monitored progress and revised our estimates at monthly intervals, or sometimes on an ad hoc basis. We met our objective and presented our product at Washington in April 1983, complete with user manuals, on a number of Unix platforms kindly loaned by the manufacturers.
One rather large and heavy minicomputer arrived rather worse for wear, having been dropped by the delivery people! Our sponsors were not amused — and neither were we.
Not all the scheduled features were complete, but certainly the essential features — and a great deal more beside — were achieved.
John Scholes: Pete [Donnelly] used to organise the conference booths, I think. I spent most of the time at APL83 behind a curtain coding, because we had problems with the compactor. It’s surprising Pete still has any hair left, with the organising and borrowing of machines, making sure it all arrived and had Unix on it. It was horrific.
Dyalog at 25,
2008-09, page 17
Peter Donnelly: This was entirely my fault. I was desperate to win a benchmark and at the time the Gould was the fastest Unix box on the market. This might have been the port where the normal mechanism to detect the end of a pipe (EOF) didn’t work, so Geoff ended the message sent to or from an AP with the string reteerts ffoeg .
John Scholes: I always had it in mind to phone Dyalog support one April Fool’s Day, with a heavy mid-European accent, claiming to be Mr Reteerts Ffoeg. “I hev problem vis APs on Gould 3000; ven send my name across the interface, APL hengs ”
So the Gould took — I don’t know how long the Gould port took; it could have been months. Typically they were — Geoff may have a different view, but probably — they would be a month. People would say: Have you got it on so-and-so? And Geoff and I used to mutter in the background and suggest that we say if you want it, charge them twenty grand a port. But, as I said, every two men and a dog with a garage used to invent a Unix machine and someone would come along and say, can you port your APL to it; if you port APL to this machine we’ll buy it. We’d spend a couple of months porting to it, they’d go out of business, and we’d cross it off and carry on.
Pete has a wonderful poster — there’s a photograph somewhere — of one of our booths at one of the exhibitions. It says, Dyalog APL is now available on — machine after machine — and none of these machines exist anymore. They came and went. Near the top was a “Bleasdale”, named after the company’s founder, Eddie Bleasdale.
Geoff Streeter: On the list of machines is the ICL Perq, which was rebranded “Three Rivers Perf”. It may not exist anymore, but it was the forerunner of the Apple Mac. I remember being stunned at the interface, complete with a tablet and “puck”. These days, think Wacom for that sort of tool. The Perq was strange because pointers to “words” were 4 bytes but pointers to characters were 6 bytes. That caused some fun.
The Gould port was not a long port. It was, however, a stressful one. The only serious problem was the alignment-of-doubles issue. Still, solving that paid enormous dividends later, when every RISC chip turned out to have the same constraint. Intel 686 (Ppro) and later also ran faster with doubles aligned on 64-bit boundaries.
Dyalog at 25,
2008-09, page 23-24
One time during the Brezhnev era, Jim Ryan visited Moscow, but forgot to bring toothpaste. He went down to the hotel front desk to buy some. After taking a rouble from Jim, the desk clerk took out a tube of toothpaste. But the rouble didn’t buy you a tube of toothpaste. Instead, what you got was a squeeze from the tube, and you were supposed to have a toothbrush with you to receive it. Since Jim did not have a toothbrush with him, the clerk proceeded to squeeze out toothpaste onto his finger.
APL is both a programming language and a system that supports the writing, editing, using, saving and sharing of programs. It is appropriate to think of them as one since all use of APL involves both in an integrated way.
The two are interactive and mediated from terminals so that personal involvement is continual and natural and — for computer systems — relatively effortless. As this books so admirably illustrates, one can “sneak up” on the mastery of APL starting from an almost negligible investment in language and system techniques. At the other extreme, once one has mastered APL one has accomplished something of permanent value and benefit: programs of great value and interest can be written by one person that in other languages would require a team!
The power of the APL language comes from its direct manipulation of aggregates of data in the form of arrays. Everyone recognizes that computers excel when aggregates are manipulated, where the descriptive details of a function do not grow with the size of the aggregates being manipulated, and where one description suffices to cover a large population of aggregates. Most other languages require their programs to penetrate these structures, manipulate the components individually even in order to achieve a uniform effect. It is not surprising that APL programs are significantly shorter and more lucid than programs in most other languages. In programming, clarity is not a consequence of discursiveness or low information density in the program text.
Because of its power in aggregates and component manipulation, APL has many more primitive functions than other languages. Rather than adding to complexity, this multiplicity actually simplifies. When a typical processing need arises, APL has a primitive function that naturally performs it. Learning the properties and uses of these primitives adds but a little to the labor of APL mastery. Shortly after encountering a function one sees how it “falls in” with others already understood and soon it begins to participate in program construction in a natural way.
Programmers are surprised and pleased to discover that all APL primitive functions get used and that none are arcane and of questionable utility. Even more, one soon acquires skill in combining these functions artfully into phrases commonly called “idioms”, that are frequently used and that extend every progrogrammer’s arsenal of programming constructions. No other language supports such a rich development of idioms, or even permits one to think idiomatically.
It is often said of APL that it provides too much choice for programmers — there are too many ways to perform desired functions, and among a group of APL programmers the same task will often lead them to create quite different programs. Consequently, reading APL programs is not trivial. Considering that APL text is often one-third to one-fifth the size of equivalent text in another language, APL programs turn out to be as understandable as those in other languages. The very richness of the set of APL functions that makes its mastery so challenging makes the learning of other languages much easier once APL is learned.
APL has its own operating system and the use of APL is much the same (but alas not identical) on all computers, from the smallest and cheapest to the largest and most expensive. Unlike BASIC, for which each computer has its own idiosyncratic version, APL is a paragon of constancy between machines.
The workspace in which the user’s APL traffic is organized is a natural, simple and friendly environment in which to compute. Its permanence is set by the individual user and can comfortably be thought of as an immense personal blackboard. Indeed, each user has a large number of such blackboards identified by chosen names and between which the user can flit and transfer data and function. Best of all, a workspace can be frozen, suspended in time, saved and resumed in the future as though no time has passed. A collection of workspaces forms a library and the user has access to both public and private libraries to which he has been granted access.
More idiosyncratic than the workspace, APL supports large files — but differently on most machines. A recent development in APL is heterogeneous nested arrays. Their value is unquestioned, but the permanence of their definition and form within the APL language is still under study. Like all living languages APL changes, but more slowly and carefully than most others. Unlike most other languages APL affects the way one thinks about programming: familiarity with BASIC or PASCAL does not automatically translate over to expertise in APL.
This is not a book on programming or even programming in APL. Instead, it is a carefully organized journey through the APL language and system. The journey is amazingly smooth and painless. The book reads very well. One does not have to be a computer specialist to understand the material. The exercises are by and large elementary, though a few difficult problems are scattered throughout. No book on APL can present a complete specification of the APL language and system and still be readable. However, this book, in conjunction with an APL system, provides the basic spectrum of insights into APL behavior:
By the time one has read the book, the details of APL behavior will have become so engraved in one’s skull that one will think naturally at the programming level but perform at the primitive function level. One will have become an APL programmer.
Alan J. Perlis, Foreword to APL: An Interactive Approach,
Probably the most interesting case involved a large customer in Copenhagen, who approached the national phone company with a request that they needed local dial connections in all the locations where they had subsidiary companies, which included North America, the Far East, Australia, Japan and numerous locations in Europe. They needed such a network in order to remain competitive in their very competitive world. The phone company told them that such a network was currently beyond their capability, but could well be available at some time in the future. So with only a minor push from the Danish government, the phone company agreed to the temporary installation of our full software system including communications, pending the availability of a locally-provided solution.
As a face saver the national PTT would like to be paid for all traffic in each direction on the line between the customer’s site and our office in Copenhagen. We agreed to that, and since the PTT had no means of measuring that traffic, we offered to do it for them and provide the monthly information that they needed in order to bill us. We did that, but no invoice was ever received.
Ian Sharp, I.P. Sharp Associates
and the Telephone Monopolies, 2005
Joey Tuttle keeps meticulous records of his e-mails
and has a way of quickly and accurately finding
old messages. His reputation
in this regard was such that
sometimes Ian Sharp would ask Joey for copies of
old messages in which Joey was either the sender
or a recipient.
Precise dates in this collection are made possible mostly
because Joey was able to retrieve the relevant messages.
David Steinbrook and I became friends while he was in Philadelphia, and I was running the IPSA Miami branch. Aviation business took me to PHL several times. Anyway, for a reason I forget, David came to Miami. As the genial host that I was, I took him to the beach. He said he had never seen the ocean before. That blew me away. He was a genuine individual with musical skills beyond normal comprehension.
Jack Ramsay (Tom Selleck): I just sort of fell into it by accident. I kind of liked it, so I took some night courses in robotics, APL. All of a sudden, I just seemed to know more about it than anybody else.
Runaway (film), 1984
Ken visited us now and again and I remember once I was struggling with translating his An Introduction to APL into Danish. I told Ken that I was completely unable to come up with a good translation for the APL function ravel, which had previously suffered the prosaic name “make list of” in Danish. [He said,] “You should use the word you use when you have knitted something and you then undo the knitting — when you are removing the structure and are left with the thread.” Suddenly the term ravel made sense to me in a completely different way.
During a discussion on Latin squares and Greco-Latin squares,
Ken wondered out loud why they were called
I suggested that it was because
they used Greek and Latin letters
(and “Latin squares” because they used Latin letters),
but that it was only my guess.
Ken responded in an exasperated voice,
“I bet you are right! That makes as much sense
as the name ‘lambda calculus’!”
Iverson: Yes, but once you have read it, you can remember it.
Kenneth E. Iverson,
in Programming Languages,
The notation [x] is often used elsewhere for one or the other of these functions, usually the former; the notations above, which are due to K.E. Iverson, are more useful, because both functions occur about equally often in practice. The function ⌊x⌋ is sometimes called the entier function, from the French word for “integer”.
Donald E. Knuth,
The Art of Computer Programming,
Kenneth E. Iverson introduced this notation,
as well as the names “floor” and “ceiling”,
early in the 1960s
Graham, Knuth, and Patashnik, Concrete Mathematics,
Another notational step that was taken at that time, and this has to do with cleaning up the syntax, was the dropping of the closing symbol for absolute value, floor, and ceiling. I have observed that in certain ivory towers of pure mathematics they have adopted the floor and ceiling symbols still with the pair about them, and I estimate that in roughly another decade they will get around to dropping the second.
APL\360 History, 1969-07-11
A search of the literature found no mention of the term “bubble sort” earlier than A Programming Language (1962). I can believe that Iverson invented the name. Page 217 of A Programming Language says:
The result is to bubble each item upward in the sequence until it encounters an item with a smaller (or equal) key and then to leave it and continue bubbling the new smaller item. In particular, the smallest item is bubbled to the top.
It is consistent with his use of previously non-technical but descriptive,
picturesque, and mnemonic terms in technical subjects.
“Floor” and “ceiling” from the same period
are other examples which come to mind.
Kenneth E. Iverson,
A Dictionary of APL,
There is no reason why the square root function couldn’t be part of APL. In fact, when I designed the APL printer trains for the IBM 1403 printer, I included the radical symbol √ on the train, in the expectation that one day this function would be added to APL. It would be a scalar function. In its monadic use √⍵ would give the square root of ⍵ . In its dyadic use ⍺√⍵ would give the ⍺-th root of ⍵ . For example, 3√⍵ would give the cube root of ⍵ . Anyone using APL informally (for example, in writing a mathematics text) could use this symbol.
A Perfect Square Root Routine,
The “goodies bag” for the APL85 conference in Seattle included a jigsaw puzzle of about 1000 pieces. The pattern (composed by Paul Berry) consisted of APL error messages in various natural languages and “APL ’85” rendered in large yellow strokes, interpersed in a random arrangement of APL characters. As is customary, the pattern on the puzzle itself was reproduced on the box. I did not open this trophy for a long time, and when I rejoined IPSA in 1986 I left it on a table in my office, unopened.
Roger Moore was in the adjacent office, and he’d occasionally drop by to discuss the network shared variables work he was doing with my office mate (Richard Potyok). On such occasions he would (I later realized) look longingly at the unopened puzzle, but he was too gentlemanly to say anything.
On Friday 1986-06-29 I finally opened the puzzle and started to work on it. Roger soon noticed and immediately pitched in. We made short work of the parts with the APL error messages and of course the big “APL ’85” was pretty easy. The remaining random APL characters proved more challenging.
After a while Roger derived a better method
than random search:
first, sort the remaining puzzle pieces
according to the characters around the
domino (⌹) character.
(He printed out ⎕av to use in the sorting.)
Then, find a domino character on the box,
look at the characters around it,
and locate the correct puzzle piece in the
sorted piles of puzzle pieces.
Why ⌹ ? It is the character
with “the most ink”, such that it is
easier to recognize a fragment of that character
on a puzzle piece than any other character.
Using this method, the puzzle was almost done by
Saturday evening and finished soon thereafter.
Roger Moore was a vice president of I.P. Sharp Associates.
What were Roger’s responsibilities as vice president?
I’ve heard it said by different people that
“Roger Moore is the vice president in charge of Roger Moore”.
In the 1990s I used to ride my bike on the Martin Goodman Trail or the Sunnyside Boardwalk on the shores of Lake Ontario. Sometimes I would see Roger Moore on the trail, also on a bike. You can tell it’s Roger from a ways off because only he would be wearing a short-sleeve white shirt and tie.
More recently (2016), Roger has been
seen playing Pokémon Go
while wearing shirt and tie.
Favorite APL Symbol,
J Forum message,
At the International APL conference in Manchester in July 1986 an idea of Paul Chapman’s was taken up by a group of enthusiasts. The idea was that it would be possible to write a full ISO compatible APL interpreter in 25K which would run on school and home computers. The I-APL project was founded with a committee of five: Ed Cherlin, Editor of APL Market News, and Anthony Camacho, then secretary of the APL Association, were to be joint chairmen; Norman Thomson and Howard Peelle were to be education officers and David Ziemann was the technical expert. Fundraising began that summer and by October there was sufficient to authorise Paul to begin work.
The project aims were to write and issue and APL interpreter which would run on as many school and home computers as possible, and be available in any part of the world. There would be no charge for the software but there would have to be some charge for the medium and for copying and also for the books which would go with it. The project and its supporters believe that if APL is to grow it must be made available in schools. Experience has taught us that efforts to interest school teachers cease to be effective as soon as the teachers discover that APL would be very expensive for them to try. By removing the cost barrier it was hoped that many people could be persuaded to try APL and that many APLers would be encouraged to introduce APL to teachers. The project has always seen the production of the interpreter as the first step and probably not the hardest step in the difficult job of getting APL into widespread educational use.
Paul Chapman finished the interpreter on 4 July 1987 and debugging, optimisation, improvements and customisation to the PC occupied the next six months. Version 1.0 was issued in January 1988 and we sold out of manuals in August 1988. Version 1.1 was completed in October 1988 and cures all the V.1.0 bugs reported to us as well as adding some new facilities. The most important of the new features is the option to send output to the screen through the BIOS; this allows PC clones whose display is not hardware-compatible to scroll the display correctly, though slower than the standard version.
The job of porting I-APL requires intimate knowledge of the operating system and reasonable competence at producing machine code programs for the chosen machine. What a porter has to do is to write an interpreter for the specially invented language DE in which the APL interpreter is written, and link it to the operating system of the machine for input from keyboard, for output to screen, printer, etc. and to give at least )SAVE and )LOAD access to the filing system for workspaces.
Anthony Camacho, Paul Chapman, and David Ziemann,
Anthony Camacho, J Forum message, 2013-12-05
In early 1988 a new Toronto city by-law required that every company establish a smoking policy, consisting of designated areas on the company premises where smoking is permitted. (And if no smoking policy can be agreed upon, then no smoking is permitted on the premises.) After much discussion at IPSA, the designated smoking areas were some common rooms and Ian Sharp’s office. When Ian heard of this, he bristled at the idea of his office being an exception and asked to have it removed from the list.
Roger Hui and Joey Tuttle
A party was held at Dick Lathwell’s house to celebrate Agness Lathwell’s birthday. During the party there was a knock at the door with a delivery of a dozen roses. Everyone assumed that they were for Agness, but it developed that the flowers were from Hal Carim to Marie Vilmansen, on the occasion of the first anniversary of their divorce. The gesture immediately put every man in the party in jeopardy with their wife/partner/girlfriend.
A+ is a descendant of the language “A” created in 1988 by Arthur Whitney at Morgan Stanley. At the time, various departments had a significant investment in APL applications and talent, APL being a language well-suited to the manipulation of large arrays of numbers. As technology was moving from the mainframe to distributed systems, there was a search for a suitable APL implementation to run on SunOS, the distributed platform of the period. Not happy with the systems evaluated, Arthur, motivated by management, wrote one geared to the business: large capacity, high performance. He was joined in his efforts as the language took on graphics, systems’ interfaces, utility support, and an ever-widening user community. Over the course of the next few years, as the business began to reap tangible value from the efforts, the pieces were shaped into a consistent whole and became A+. The “+” referred to the electric graphical user interface. An A+ development group was formally created in 1992.
A+ soon became the language of choice for development of Fixed Income applications. It offered familiarity to the APL programmers, the advantages of an interpreter in a fast-paced development arena and admirable floating-point performance. A significant driver was that many of Morgan Stanley’s best and brightest were the developers and supporters of the language. Through their practical application of technical values, they instilled fervent enthusiasm in talented programmers, regardless of their programming language backgrounds.
The History of A+
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.
Arthur’s one-page interpreter fragment is as follows:
Roger Hui, An Implementation of J,
An Implementation of J,
The J dictionary
begins thus: “J is a dialect of APL, a formal imperative language.”
In talking about the difference between a language
and a dialect, Ken often cited the
that a language is a dialect with an army and a navy.
On 1993-03-17, I was working for Morgan Stanley in New York City. On that day I was scheduled to fly to London, so I took a taxi into work with my luggage from Larchmont to the MS offices in mid-town Manhattan on 49th Street. I arrived at work at around 0700. At around 0800 I got up from my desk to get a snack from the canteen. As I did, I realized that I didn’t have my wallet.
Wracking my brain for what could have happened, I realized that I might have dropped my wallet as I got out of the taxi after paying the driver. I telephoned the taxi company on the chance that they may have it. Then I did a naive thing, a Canadian kind of thing. I went downstairs to the street to look for it.
And there it was! Just sitting there curbside, plain as day, in mid-town Manhattan for about an hour. And it was full of cash too, on account of my going to London later that day.
You don’t have to be Irish to be lucky on St. Patrick’s Day.
One time, on returning to New York from London (perhaps the same trip that began so auspiciously as recounted in the previous anecdote), I took a cab ride from JFK to mid-town Manhattan which cost $90. How so?
As I exited Customs and Immigration and headed towards the long line-up for taxis, I was met by a person holding a clipboard saying, come this way sir. I went that way and met a driver in a nice suit who reached for my suitcase and directed me to a nice car parked nearby, no lining up required. Shortly after another passenger joined me in the car, and the car was underway. Before it left the terminal complex I realized that I made a mistake, but it was too late. The car went through some industrial areas not normally on the way to mid-town Manhattan, but I did reach my destination without incident. Of course by that time the driver can charge whatever he liked. He liked $90.
Viewed from a couple of decades removed, I can appreciate the scam for its expert exploitation of psychology: The mark had just been on a long flight, then conditioned by following instructions — do this, go that way, show your papers, etc. The subtle intimidation by driving through an industrial area was a deft touch.
A few weeks later,
I traveled to San Francisco on a speaking gig with the Bay Area APL Group.
There, I took a city bus from SFO to Palo Alto.
It was an enjoyable ride in brilliant sunshine along El Camino Real, stopping at California Avenue which was only a short walk
from where I was staying at the Hotel California.
The fare was $1.80,
something like that.
In the autumn of 1996, Jim Goff took me for dinner to a tiny (only six or seven tables in a small room) Thai restaurant in Philadelphia. After dinner, I entertained Jim with a description of the “Deuce” machine, a development of Alan Turing’s “ACE”.
I described how programming consisted of arranging instructions around and around the “mercury delay lines” memory, interleaved to give the last instruction time to execute before the next one passed under the read-head. I probably used my arms to show this arrangement.
If you didn’t leave enough of a gap between instructions, the processor would have to wait for the next one to do a complete lap before it could be executed. I probably gesticulated while explaining this.
The machine sported a large dial (which I probably illustrated with my hands) showing the “efficiency” of the running “programme”. 100% efficient meant that the processor was never kept waiting for the next instruction. I made a joke that it would be useful for modern computers to have an efficiency dial! I probably laughed at my own joke.
I was about to explain Deuce’s beautiful and elegant boot sequence when I detected flagging interest from my audience. (I’m sensitive to this sort of thing.) Looking up, I noticed that the woman at the next table seemed to be somewhat distressed. She said, “Do you know we’ve just been robbed? Didn’t you see the man with the gun?”
Then the tiny restaurant filled with large policemen: “Was it a big gun or a small gun?”
Apparently, the robber had gone from table to table demanding cash and jewelry. Perhaps he was perplexed by the strange, crazy man, talking gibberish while waving his arms around and giggling, and so left us alone.
Postscript. I told this yarn to a group of APL implementers at one of the Minnowbrook conferences. At the end of the story, after a thoughtful pause, someone responded: “I started programming on a three-operand addressing machine.”
The fine print
Lee Dickey, Lifetime Warranty
After a satisfying Thanksgiving dinner Eugene McDonnell and his family went for a walk around the neighborhood. As they passed by the Jobs residence Eugene caught a glimpse through a window of people enjoying dinner around a table. But Steve Jobs can be seen in another room, tapping at a computer. Eugene thought to himself, “Isn’t that too bad! Can’t even enjoy a Thanksgiving dinner.”
The following week came the Pixar IPO,
which sold 6.9 million shares at $22/share.
Steve Jobs’ 80% holding of Pixar stock
was valued at $1.1 billion after the IPO.
Eugene McDonnell, New York born and raised
In January 1999, Ken and Jean Iverson visited Eugene McDonnell in Palo Alto. Eugene held a dinner party in their honor on the thirteenth. In attendance were Eugene and Jeanne McDonnell, Ken and Jean Iverson, Arthur Whitney and Janet Lustgarten, Jim and Karen Brown, Paul and Sachiko Berry, Charles Brenner and Sarita Berry, Larry and Beverly Breed, Harry Saal, Ken’s nephew Derrick Iverson and his wife and new baby, David Steinbrook, Joel Kaplan, Dick Dunbar, Joey Tuttle (who flew in from Boston), and one more.
One of the events of the party was to have been a telephone call from Kyosuke Saigusa in Japan. During the party, Eugene went to make the phone call to Japan as prearranged. He came back a few minutes later, perplexed, saying that he only managed to reach Mrs. Saigusa, who said that Mr. Saigusa was not available.
At that point Saigusa-san walked in through the front door, explaining that he was not available by phone from Japan because he was there in Palo Alto.
“Um, APL’s only data type is the array ”
“Er, APL’s primitive functions take arrays as arguments ”
Someone in the audience piped up: “that’s just as well, then.”
In Scranton in 1999 during one of the sessions I was sitting next to Ken, and he leaned over and said to me—in his impish way—John, what is an array? Now I knew better than to rush into an answer to Ken. I guess I’m still working on my answers to that question.
My attempt: An array is a function from a set of indices
to numbers, characters,
APL rectangular arrays up to now have been implemented
by enumerating the array elements in row major order
Roger Hui, e-mail to Jim Brown, John Scholes, and
International Standard ISO/IEC 13751:2001(E),
As others have recounted, Ken was deeply interested in words, their use and their etymology. He indeed did read the dictionary, and kept a copy of the American Heritage Dictionary (along with other dictionaries) by his easy chair for ready reference. He especially encouraged me to consult the section on Indo-European roots in the back of the AHD, which makes deep and uncommon connections between words.
Many of Ken’s relatives and friends received from him the AHD as a present. I myself did not because I’d already owned one years before I met Ken. In fact, I gave him the third edition of the AHD as a present.
I think nothing I had ever done impressed Ken quite as much as when I found the word “rhematic” (meaning, pertaining to the formation of words), a word he had been searching for for some time. Thus the phrase “rhematic rules of J” made its way into the J dictionary.
Remembering Ken Iverson, 2004-11
Since September 2005 considerable time
and energy had been spent on compiling and editing
Ken Iverson Quotations and Anecdotes.
The work received validation of sorts in 2007, when Richard Bookstaber
quoted and used material from it without attribution in his book
A Demon of Our Own Design (pages 44 and 45).
If an item in Ken Iverson Quotations and Anecdotes is a “Kenecdote” (per Eugene McDonnell), and an item in Eugene McDonnell Quotations and Anecdotes is a “Genecdote”, what is an item in this collection? I propose that it be called an “APLore” (pronounced “apple lore”).
I learned just today that “Mooreiana” was
what Eugene had been calling the collection
of Roger Moore stories since 1986 or earlier.
The possibilities are endless!
Conversation with Arthur Whitney, ACM Queue,
Where do you do most of your programming? |
In the garage. I have to. I live in Palo Alto.
You like short programs and simple languages, some might say your languages are cryptic.
Terse, yes. Cryptic, no. I like to simplify things: shorter programs, fewer primitives, smaller systems to run on, all of which makes for more productive, more cost-efficient programming.
Interview with Arthur Whitney, 2004-01-04
I found out recently that Ken actually had a pretty good parry
At one point I remember a vice president trying to convince me to do something in a different way and I kept trying to convince him that the reason we were successful was because we used our own tool. And the IBM vice president said no, it was because I was smart. I remember mentioning that to Ken, and Ken said, “You should have asked him, ‘If you think I am so smart, why don’t you take my advice?’ ”
Dad & My APL Box
Visiting Dyalog staff and consultants
lodged at Dyalog House in Basingstoke.
On more than one occasion,
a few minutes before we were to leave
for the office in the morning,
Morten Kromberg would come downstairs and
iron a blouse for Gitte Christensen.
The first time I saw that, I thought to myself,
“There is a limit to how bad a man can be
who does that for his wife.”
I asked Morten Kromberg this old chestnut and
he got the answer immediately.
Probably, he would have gotten it in any case,
but he has the added advantage that his mother is a surgeon
who actually operated on him.
Apparently his mother is doubly responsible for his good looks:
once by giving birth to him and again by sewing his face back together
after it was cut open in a bicycle accident.
On sitting down to dinner, Gitte would have a first taste
and say, “Well, I got lucky again”,
whereupon the others around the table would dutifully (and truthfully)
respond, “How is it that you are lucky every time you cook?”
The Dyalog office in Bramley
has an open sitting plan
conducive to good communications.
Serious work is carried out in an atmosphere of camaraderie.
One afternoon, John Daintree stood up at his desk, raised one hand,
“Would anyone who believes in telekinesis please raise my other hand?”
On 2009-06-18 John Scholes told me by e-mail of a comment by Robert Sedgewick that it is infeasible to compute the inverse of the 100-by-100 Hilbert matrix. He proved Sedgewick wrong by inverting that matrix using a dfns model of rationals, and thought that J can probably do it reasonably quickly.
On receiving John’s e-mail, I fired up my J system,
I recently purchased a Garmin GPS unit. One of its functions is to record a destination with a label, and on arriving at a programmed destination it would announce by voice, “Arriving at XYZ, on left (or right).”
In June 2010, we drove to the Bay area to visit friends and relatives.
It was a long journey over unfamiliar roads,
so we took the GPS with us.
We visited Arthur and Rita Whitney
and went out for dinner together at a local restaurant.
Afterwards, we drove back to Arthur’s house
with Arthur sitting in the front passenger seat.
As we neared Arthur’s house, the GPS announced,
“Arriving at Arthur Whitney, on left.”
On my right, Arthur retorted, “Technically, that’s incorrect.”
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 birth day 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 workaholics, working even during the holidays. (Don’t you remember Dick being away that weekend? ☺)
The precise time is known because in the old days, instead
of doing )clear ,
)load 1 cleanspace SAVED 1966-11-27 15.53.59 (GMT-7)
responded on 2010-08-20:
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
The committee of the APL2010 conference in Berlin
invited me to give a
on Eugene McDonnell after the chairman’s opening welcoming remarks.
On the first day of the conference,
I arrived early to get the equipment ready,
then paced back and forth in the lecture hall,
psyching myself up for the talk.
A famous name also arrived early a few minutes later.
He came up to me and said quietly,
“I didn’t even know that Eugene McDonnell had died.
Are you going to do something about that?”
At the 2005 Dyalog conference in Helsingør, I gave a light-hearted talk about emulating lists in APL. Contrasting lists with trees, I said that I harbored an adolescent fantasy that, while waiting at the bus stop, I would be approached by a beautiful woman who would ask, “Excuse me, do you know the difference between a list and a tree?” I had a cute answer prepared.
Five years later, at the banquet of the APL2010 conference in Berlin, I was sitting with Flora, my wife, when two stunningly beautiful young women from APL Italiana came to our table. “Excuse me Mr. Scholes, do you know the difference between a list and a tree?”
Amazing! What are the chances of that?
(For the record, a list can be viewed as a unary tree, but let’s keep this to ourselves. There may be more beautiful women out there with a deep interest in data structures.)
The sentiment seemed very similar
to a Chinese phrase dating from the Ming Dynasty,
班門弄斧 , something like
“exercising your axe at Paul Bunyan’s doorstep.”
A search of the phrase on Google found a
in English and one of the meanings is,
“teach one’s grandmother (how) to suck eggs.”
Various humorous messages were sent in response;
the most humorous (and shortest) was from
John Daintree: http://en.wikipedia.org/wiki/Dinner
John Daintree is a master joke teller, and throughout the Christmas dinner regaled the table with jokes, puns, rejoinders. Towards the end of the dinner Ronald Chan challenged JD to tell a joke about “drinks”.
It was late in the evening and everyone has had a few drinks, and JD was momentarily stuck for a joke on “drinks”. He stalled for a minute. Still stuck. Stalled for more time when a joke that I’d heard recently popped into my head, and I came to the rescue:
A countably infinite number of mathematicians
walked into a bar.
The first one ordered a pint.
The next one ordered 1/2 a pint.
The next one ordered a 1/4 pint.
The next one ordered 1/8 of a pint.
The bartender poured two pints and said,
“You guys know your limit, right?”
Several days before this came one of the finest
moments in my “joke-telling career”.
Before returning to Dyalog House we stopped by
the local Tesco.
Ronald Chan commented
that we needed to get some eggs
as there was only one left.
I immediately said, “If you were French
one egg would have been un oeuf.”
I waited years to spring that one.
A number of the notes in this workspace contain sections that are merely the musings of the author. They may not be entirely factual and you should check the content with say, Wikipedia, before repeating them to a discerning audience. For example:(muse:
Notice in the examples below that */5/2 is a number with 19,729 decimal digits. An amusing way to distinguish mathematicians from computer programmers at a social gathering (perhaps a cocktail party or wedding reception) is to sing this little song (to the tune of “The Grand Old Duke of York”):
You will find that after six or seven lines, the mathematicians begin to look bored, while the computer programmers turn pale and start to faint.
Natural Number Arithmetic
Henry Rich: In the old days, turning on debug made my big apps crash. I think it’s been fixed now, but I’m still like Mark Twain’s cat.
Dan Bron: “[It’s] said a person that started in to carry a cat home by the tail was getting knowledge that was always going to be useful to him, and wasn’t ever going to grow dim or doubtful.” — Tom Sawyer Abroad
Roger Hui: I suspect Henry meant the following:
The cat, having sat upon a hot stove lid, will not sit
upon a hot stove lid again.
But he won’t sit upon a cold stove lid, either.
It came time to implement \ (“scan”). On that day (in the first half of 1990), during lunch at Josie’s Cafe on Yonge Street, I asked Ken innocently, “Have you ever wanted to scan something other than reduction?” The question was not even well-formed, because the APL paradigm is so powerful that it usually pushes aside alternative thoughts. Nevertheless, the discussion that then proceeded was productive, and quickly led to the realization that :
Some APL expressions apply reduction implicitly. For example, APL scan applies its left argument reduction to successive prefixes of the right argument. The use of reduction ensured that computations such as sum scan can be effected by primitive function arguments to the operator, and that the overall result could be assembled in APL\360.
With J’s more permissive assembly rules (and the use of boxed arrays), reduction is no longer necessary, and in many cases, inappropriate. Therefore in J, if a reduction is required, it must be specified. Thus +/\ in J computes sum scan and +/\. computes suffix sum scan. The following J example does not use reduction, and is therefore not readily expressed using APL scan:
<\ 'abcdef' ┌─┬──┬───┬────┬─────┬──────┐ │a│ab│abc│abcd│abcde│abcdef│ └─┴──┴───┴────┴─────┴──────┘
Remembering Ken Iverson, 2004-11
One time, I visited Prof. Keith Smillie in Edmonton and had lunch with him. We took a bus returning from lunch. The conversation got to the J mug. Just before Prof. Smillie’s stop, I asked him if he knew what the J expression 1&(|:\.)"2^:2 on the mug did. He paused as he was getting off the bus, turned right around to get back on the bus, and we talked some more about minors.
This story elicited a chuckle from Ken Iverson when I told him about it. (He was the author of the expression.)
The first NARS (Nested Arrays Research System) was designed and implemented in the early 1980s as a testbed for new ideas in APL, principally with nested arrays. A quarter of a century later, it’s time to try again.
The goal of this effort, as with the last one, is to foster new ideas about the language and its implementation.
Language ideas include new functions, operators, and datatypes. To aid in getting your ideas into an implementation, there will be a mechanism for telling NARS that a user-defined APL function represents a new primitive function, operator, or datatype. In order to experiment with your ideas for new extensions, all you need to know is how to write APL programs.
Implementation ideas include algorithms to enhance code space (smaller executable), time space (faster execution times), or expressibility (clearer and more understandable code). A goal of the existing implementation is to be open and easy for others to change so that new ideas may be inserted smoothly.
Moreover, this project is made available as Free Software so, among other things, any developer may pick it up and add new features, and any end user may use it free of charge.
In school and in textbooks it is proven that sorting requires O(n×⍟n) comparisons. I supposed that is why Bob Smith was initially skeptical when I told him that in Dyalog APL you can sort a real vector in O(n) time.
I opined to Dyalog colleagues
that Bob is a smart guy
and if you tell a smart guy that something is possible
(and he believed you)
then he would soon figure out how to do it.
Garth Foster and I are pleased to invite you to the 2011 Minnowbrook APL Implementers Workshop, to be held Tuesday-Saturday, September 20-24, 2011 at Syracuse University’s Minnowbrook Conference Center on Blue Mountain Lake in the Adirondack Mountains of upstate New York. Those of you who have been to previous Minnowbrooks know that this lovely venue is specifically designed for intimate conferences, and the setting is highly conducive to productive and convivial interaction amongst the conferees.
While the focus of the workshop is the design and implementation of APL, we expect other languages to be well-represented both because of APL’s inspiration of or effect on them, and because of their influence on APL. Since our last workshops in 2007 and 2010, much has transpired in the computing milieu which stimulate and challenge us all. This year, we shall explore the strategic view of our parallel paradigm, as well as discuss the various flavors, improvements, and interactions of our languages. With your suggestions, we hope to give our conference a bit more structure than in the past.
The topics we discuss are up to you. At this point, we have no agenda, but we do have a schedule to which we must adhere. Because this is your conference, the agenda is subject to your collective wishes. If past years are any indication, we would expect to have more material from you than our 24 hours of scheduled meeting time allow. The rest will have to be discussed at Evening Seminar. Please keep your presentations (prepared or ad hoc) brief and cogent to allow for plenty of discussion time. Please offer your suggestions in the attached registration form.
This is an invitation-only workshop. Although Minnowbrook can accommodate up to 64 people, we hope to keep the number of conferees to less than half that. The individuals on the distribution list (“To” sorted by first name, “Cc” by last name) are designers, implementers, major users, and legacies of APL, J, K, and extended versions of other languages such as C having array programming capabilities. If we have left someone significant off the list, we apologize and want to hear from you so that we may extend them an invitation.
The Workshop will begin with dinner at 6:00 P.M. on Tuesday the 20th; plan to arrive around 4:00. It will end after lunch at 1:00 P.M. on Saturday the 24th. The nearest major airport is Albany, New York (ALB), about 110 miles away (2:30 by car); next closest is Syracuse (SYR), about 140 miles (3:00). Saranac Lake Regional Airport is about 55 miles away (1:15); or you can simply hire a seaplane and land directly at Minnowbrook’s dock!
Dress is casual. The weather is likely to be balmy during the day, but can get slightly brisk at night (but less so than 2010’s conference); bring a sweater or jacket. There will be plenty of time for recreation, so bring hiking boots, fishing rods, or if you’re brave, a swim suit. See Minnowbrook’s website http://www.minnowbrook.org for full information about the facilities.
The all-inclusive (excepting travel) cost for the workshop is $990 per person for single accommodations, $870 for double (only slightly inflated since 2007). We provide all refreshments, including evening cocktails, wine with dinner, and nightly libations. As this is a personal and non-profit endeavor, Garth and I will collect all funds, and distribute any surplus to attendees after the conference. Please complete and mail the form below to reserve your place at Minnowbrook 2011. If you cannot attend, please let us know promptly by email.
Hereafter, we plan to hold Minnowbrook Workshops in the odd years starting 2013.
We look forward to meeting and renewing our friendships with all of you, and to the congeniality, fellowship, and vigorous discussion which Minnowbrook has always inspired.
Yours very truly,
Garth Foster and
During the first dinner at Minnowbrook in 2011, I met Mary Ellen Foster for the first time (and knew her name by her name tag). For a few minutes I couldn’t decide whether she was Garth Foster’s wife or his daughter. Her identity was confirmed later that evening through the introductions in the first session.
A couple of days later I saw Mrs. Foster reading a book at the patio. By that time I’d finally overcome my reserve and proceeded to describe to her my dilemma on our initial encounter. She put her hand over her heart and said, “Oh, you’ve made my week; no, you’ve made my year!”
When I told the guys about this exchange, they said,
“You smooth talker you.”
Jay Foad, extolling the programmer of some software
During the time we were implementing the very first version of Dyalog, a friend, who was not a programmer, asked me how much of it was coded in APL. I thought he was bonkers.
We now have exactly this internal “magic function” prototyping facility.
When “Visual Display Units” first appeared alongside scrolling paper terminals, a participant on a course I was giving asked me where the writing went when it disappeared off the top of the screen. I explained it was just, well, gone; same place the ticking goes when the clock stops.
We now have scrolling sessions.
On another course, someone asked me what (A B) means, when A and B are variables. I explained that it didn’t mean anything as there wasn’t a function between the A and the B .
We now have vector notation.
Sound bite: A stupid question is a portal into an alternative mindset.
Jay Foad: JS pointed me at some papers by Trenchard More. I liked this bit:
N.B. I disagree with him.
John Scholes: This spawned a whole genre of “empty-array jokes”. The one I remember is:
John Daintree: I was expecting an empty page
Andy Shiers: An empty page, or an empty HTML page?
An American, in a cafe with two friends, orders a cup of tea and an English Muffin. His friend from London points out: we just say 'Muffin'. Later, when he orders a cup of coffee and a Danish, his friend from Copenhagen says: we just call them '' .
I once introduced APL to a grade 9 math class in a one-hour talk, finishing with a simulation of the Monty Hall problem. Well into the problem, a student opined, “I’ve always wanted to have a goat.” Since then, I have taken care to start the problem description with, the object of the game is to win a car.
The Iversonian array languages (APL, J, kdb, q) are so productive that we almost all work either alone or in very small teams. We rarely benefit from the professional cross-fertilisation that is routine in big-team languages.
Our work is mobile, so we are packing it on our laptops and taking it to Oxford University 25-31 August this summer. This is not a conference but a week living and working among array-language colleagues.
We shall be a party of twenty-five with student accommodation at St Edmund Hall: meals in college, wifi in our rooms and in our common work room. No schedule, but meals together, and talks after dinner.
We shall take one day as a play day, perhaps punting up the Cherwell. We will have a formal dinner in Hall on Thu 29.
In 2011 and 2012 we were at Trinity Hall in Cambridge.
The k interpreter occasionally gave wrong answers. It would have been easy to suppose we were looking at a graduate project, did we not remember how Kx makes millions of dollars selling its programming language to a world in which programming languages are largely free.
John Scholes ventured a question: “How do you do garbage collection?” — “No need to do garbage collection. I know where everything is.”
The k binary weighs in at about 50Kb. Someone asked about the interpreter source code. A frown flickered across the face of our visitor from Microsoft: what could be interesting about that? “The source is currently 264 lines of C,” said Arthur. I thought I heard a sotto voce “that’s not possible.” Arthur showed us how he had arranged his source code in five files so that he could edit any one of them without scrolling. “Hate scrolling,” he mumbled.
Iverson College, Cambridge, Aug 2011
Arthur doesn’t like Gmail’s fonts; ( some more steps, which I forget ) therefore, it seems reasonable to write his own operating system in k.
John Scholes, 2012-09-07
Both Eric Iverson and I remember Arthur talking 20 years ago (1990s) about
writing his own operating system.
One of us then asked him, why stop there,
why not do your own chip?
He replied that the chips were good enough.
Arthur was quite taken with the fact that +.× in Dyalog APL and J are faster on sparse matrices. On Friday morning he talked to me again about it, and asked to see benchmarks on 1000-by-1000 matrices with densities of 1 and 0.1.
x←0.5×¯500+?1000 1000⍴1000 y←0.5×¯500+?1000 1000⍴1000 timer 'x+.×y' 2.04966 x←x×0=?1000 1000⍴10 timer 'x+.×y' 0.344815
I suggested that he could also do this because as I recall k does +.× row at a time rather than the traditional row-by-column.
About a minute later, Arthur said, OK, I have it, and showed me the changed code — he’d inserted if(a) into the middle of a dense pack of characters. I quipped that that indicates he isn’t following the TDD methodology, and that he’s only proven it correct but not tested it.
The other people in the Emden room were amused by the exchange.
During IC 2013 I took a walk one afternoon.
As I approached the corner of The High and Longwall
I saw a man grabbing an armload of hoodies from a table
in front of the souvenir shop.
The act was so brazen and nonchalant that it was possible
that the man was a staff person.
I look at him; he looked at me.
I peeked into the shop through the doorway.
The staff showed no concern.
When I looked out on the street again,
the man with the hoodies was nowhere in sight.
At the 2013 Dyalog Conference, Morten Kromberg told me that Valentina Settimi (who made the APL Italiana presentation) has a Ph.D. in math and worked on the Goldbach conjecture for years. Morten then wondered whether she had solved the conjecture. I told him that if she had she wouldn’t be talking to him.
To “impress” Signorina Settimi, and being totally uncouth,
I went to her table and told her that
my Erdős number is 2.
Richard Smith opined that an alternative approach was to offer
her the opportunity of reducing her Erdős number to 3.
At the banquet of the 2014 Jsoftware Conference I sat
at the same table with Leslie Goldsmith and a young colleague
Well into the evening the young colleague asked Leslie,
“Do you program?”
(I suppose there was some doubt because Leslie
was now a senior executive of a company.)
I quietly said that Leslie programmed in APL one of the world’s
first e-mail systems.
Leslie added that it was the world’s
first commercial e-mail system,
and that he did it while a high school student.
The young colleague exclaimed, “Now you are starting to impress me!”
At the Dyalog ’14 banquet, Charles Brenner told me that
there is a legend in his family that his older sister once sat
on Albert Einstein’s lap,
possibly at a lecture or gathering at the IAS
attended by both Einstein and Charles’s father, with daughter in tow.
I suggested to Charles that he should start a legend
that he himself also once sat on Einstein’s lap.
It could have happened as his family lived in
Princeton while Charles was a baby.
A 21st century company waaay back in the last century. Relatively flat and widely dispersed, I.P.Sharp was held together by electronics and camaraderie. And Ian.
The company was blind on race, creed, colour, nationality, sexual orientation, and eccentricity. And gender. I left IPSA with a suspicion that discrimination against women was a myth. Yeah. Right.
An exchange on the Dyalog Forum, re: Explanation of APL Execution Order.
My daughter Rachel loves jokes and riddles, both hearing them and telling them. Over the years we’ve told and retold each other many jokes. Lately we’ve taken to reciting just the punch lines. The “compression ratio” is high.
Spot. Stripes. Next!
Roosters don’t lay eggs. One egg is un oeuf.
She had to stop to ask for directions. Concentrate.
We go at night.
It’s the first day I had me hook.
Now if another person walks into the house it’d be empty.
Skiing, sir. We are out of flies today.
What friend? Praise the Lord!
I didn’t know you could yodel.
I’ve always wanted to play the piano.
Want to ride bikes?
I’d like to have a cheeseburger, a milk shake, and fries please.
It’s the way you tell it.
The other night Henry wasn’t sleeping well so Tania propped up one end of his Moses basket with a book. This morning I noticed that he has been sleeping with his head resting on The Art of Computer Programming, Volume 3 — Sorting and Searching!
The under operator (⍢) proposal includes an obverse operator ⍫ , where f⍫g specifies that g is the “inverse” of f (and vice versa). This should reduce the pressure to extend the interpreter to invert this, that, or the other. For example, if the system can not invert FFT (it’s extremely unlikely to be able to), you can say ×⍢(FFT⍫IFT) for the fast digital multiplication.
f⍫g ↔ f except
that f⍫g⍣¯1 ↔ g⍫f .
Obverse is pretty straightforward.
There are no side effects, no special line labels,
no special syntax in the header, etc.
One reason it’s called “obverse”
instead of “inverse”
is that g doesn’t have
to be an inverse in the mathematical sense.
You can, for example, say
A related idea: J also has adverse: f Adverse g ↔ f
except that if you get an error in applying f then you apply g .
I’d call that “perverse”. ☺
It’s #worldmathsday and the call went out for suitable tweets. The answer is obvious:
0 = 1 + * ○ 0j1
is the most beautiful equation in all of mathematics, relating in one short phrase the fundamental quantities 0, 1, e, π, and 0j1 and the basic operations plus, times, and exponentiation.
What is not so obvious is why and how the equation holds in Dyalog APL. With the vicissitudes of floating point representation, transcendental functions, and (non-tolerant) comparison with 0, one expects that 1+*○0j1 would give a tiny number close to 0 but not exactly 0 and the equation would be false. So in addition to everything else, 0=1+*○0j1 is a subtle show off.
⎕ ← a ← 3 4⍴⍳12 0 1 2 3 4 5 6 7 8 9 10 11 * ○ 0j1 × a ÷ 2 ⍝ show off 1 0J1 ¯1 0J¯1 1 0J1 ¯1 0J¯1 1 0J1 ¯1 0J¯1 * ○ 0j1 × 2e9 + a ÷ 2 ⍝ shameless show off 1 0J1 ¯1 0J¯1 1 0J1 ¯1 0J¯1 1 0J1 ¯1 0J¯1
Dyalog Blog, 2015-12-16
I created a Wikipedia page for Charles Brenner. There are people in Wikipedia going around deleting newly created pages because the subjects are “not notable enough”. I did not have to wait long:
I told Charles that he may be interested to know that Google loves
Wikipedia, and that I expect very soon his Wikipedia page will show up
near the top of any Google search of “Charles Brenner”,
pushing the large number of other Charles Brenners
further down the list.
Charles quipped that making a Wikipedia page is
probably a better course of action than arranging to reduce that number.
On 2016-10-15 I presented A Tour (de Force) of APL in 16 Expressions at Functional Conf 2016 at Bengalore, India. I introduced section E of my talk by saying, “After coming all this way to within 200 miles of Kumbakonam, of course I have to talk about Ramanujan.”
On leaving Bangalore, the passport control officer
I dealt with had “S. Srinivasa” on his name tag.
I asked him if he knew of Ramanujan. He smiled and said yes.
It turned out he was a distant relative of Ramanujan.
The Dyalog APL interpreter has special code to improve the efficiency of certain useful computations. In version 15.0, the current version, there is a “Dan Baronet special”: b⊥b is computed by special code motivated by Dan’s observation that it computes the number of trailing 1s in boolean vector b . With the special code, it is “infinitely faster”.
An exchange on the J Forum on 2017-10-10:
User: I would be genuinely interested in reading about real world applications of J.
Patrick Harrington: Not “real world”, more “out ot this world”.
I use J for most of my exploratory calculations in astrophysics. e.g.,
I first heard of the concept of “holding the pencil” from Ken Iverson and Eugene McDonnell. Even though Ken (and Adin Falkoff) did the design of APL, the implementers, being executors of the last step from the design to the implementation, were in control of the fine details. The battles must have been fierce; see for example this anecdote in KEI Q&A.
So if you are “holding the pencil”, you have the final say
even though you may just be an amanuensis.
The highest compliment I ever received from Eugene McDonnell was
that I “held the pencil with a delicate touch”.
(I realize that some people may not consider it a compliment.)
Kenneth E. Iverson,
The Evolution of APL,
Phil Abrams |
Frank Bates III
Alexander G. Bell
Nicholas Brown Jr.
Brian Daly |
S.Z. de Ferranti
Mary Ellen Foster
Douglas Hofstadter |
Grace M. Hopper
John F. Kennedy
Jane Minett |
J. Arthur Rank
Leland Stanford Jr.
Roy Sykes Jr.
Thomas J. Watson Jr.
Thomas J. Watson Sr.
Compiled and edited by Roger Hui (who also contributed the items not explicitly attributed).