APL Quotations and Anecdotes

http://www.jsoftware.com/papers/APLQA.htm


It has been said that APL has quite a character set. The following are a collection of stories from or about these interesting characters, arranged in roughly chronological order. Additional stories can be found at:

   • Ken Iverson Quotations and Anecdotes
    http://keiapl.org/anec
   • Eugene McDonnell Quotations and Anecdotes
    http://www.jsoftware.com/papers/eem/anecdotes.htm

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.

— Fred Brooks, Vector, 2006-08
 

 

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.

— Roger Hui, Remembering Ken Iverson, 2004-11
 

 

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, 2008
 

 

“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 Kueffel&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.
 

 

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, Radin, 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.
 

 

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.

— Eugene McDonnell, 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.

— Eugene McDonnell, 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.

— Eugene McDonnell, The Socio-Technical Beginnings of APL, 1979
 

 

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.

— Jim Brown, Vector, 2006-08
 

 

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
 

 

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.

— Ian Sharp
 

 

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.

— Paul Berry, Vector, 2006-08
 

 

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.

— Adin Falkoff, 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.

— ACM, Grace Murray Hopper Award
 

 

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.

— Lib Gibson
 

 

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.

— Leslie Goldsmith
 

 

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 fall of 1970 I was introduced to Iverson Notation, to express algorithms. I was impressed by its brevity and unambiguity. For the first and only time, I enjoyed homework.

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?”

“APL.”

“What’s that?”

“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.

— Brian Oliver, It’s APL’s Birthday! Or is it?, 2011-11-27
 

 

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 ( _1+2^19937x) — but in any case, Jeffrey had succeeded in printing out this lengthy number, and left a copy of the pages of digits on several people’s desks. The next morning, Ron Frank came in, looked at the copy on his desk, circled a digit towards the end of the long number and wrote, “Are you sure about this digit?” and put it back on the desk Jeff was using.

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.

— Joey Tuttle
 

 

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.

— Zbigniew Stachniak, York, MCM70 & the angst of being there first,
2010-10-17
 

 

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.

— Roger Hui
 

 

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 apparently 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?”
 

 

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.

     Dramatis Personae
Me    Atkins techie
Sally  Atkins client support
Steve  Atkins client support
Alpha-male Rank-Xerox
Sidekick0  Rank-Xerox
Sidekick1  Rank-Xerox

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.

— Anonymous
 

 

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.”

— Alan Perlis, Almost Perfect Artifacts Improve only in Small Ways:
APL is more French than English
, 1978-03-29
 

 

19. A language that doesn’t affect the way you think about programming, is not worth knowing.

89. Though the Chinese should adore APL, it’s FORTRAN they put their money on.

— Alan Perlis, Epigrams in Programming, 1982-09
 

 

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, Transcript of
Question and Answer Session, 1978-08
 

 

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!

— Eugene McDonnell, Recreational APL: Pyramigram, 1980-09
 

 

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
“constrained bridge hand generator”
 

 

[Commenting on the empty vector:] I think we have the Arabs to thank for inventing zero, but I know that we have Dr. Iverson to thank for inventing nothing.

— Donald McIntyre, 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 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.

— Eric Iverson

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.

— Bob Bernecky

[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.

— Zbigniew Stachniak, Inventing 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
Reference Manual
, 1981-03
 

 

APL Blossom Time — A History in Verse

A nostalgic reminiscence of the early days of APL, remembered to the tune of The Battle of New Orleans.

Back in the old days, in 1962,
A feller named Ken Iverson decided what to do.
He gathered all the papers he’d been writing fer a spell
And he put them in a little book and called it APL.
 
Well… 

He got him a jot and he got him a ravel
And he revved his compression up as high as she could go
And he did some reduction and he did some expansion
And he sheltered all his numbers with a ceiling and a flo’.
 

Now Sussenguth and Falkoff, they thought it would be fine
To use the new notation to describe the product line.
They got with Dr. Iverson and went behind the scenes
And wrote a clear description of a batch of new machines.
 
Well…

They wrote down dots and they wrote down squiggles
And they wrote down symbols that they didn’t even know
And they wrote down questions when they didn’t know the answer
And they made the Systems Journal in nineteen sixty-fo’
 

Now writing dots and squiggles is a mighty pleasant task
But it doesn’t answer questions that a lot of people ask.
Ken needed an interpreter for folks who couldn’t read
So he hiked to Californ-i-a to talk to Larry Breed.
 
Oh…

He got Larry Breed and he got Phil Abrams
And they started coding Fortran just as fast as they could go
And they punched up cards and ran them through the reader
In Stanford, Palo Alto, on the seventy-ninety-oh.
 

Well a Fortran batch interpreter’s a mighty awesome thing
But while it hums a pretty tune it doesn’t really sing.
The thing that we all had to have to make our lives sublime
Was an interactive program that would let us share the time.
 
Oh…

They got Roger Moore and they got Dick Lathwell,
And they got Gene McDonnell with his carets and his sticks,
And you should’ve heard the uproar in the Hudson River valley
When they saved the first CLEANSPACE in 1966.
 

Well, when Al Rose saw this he took a little ride
In a big station wagon with a type ball by his side.
He did a lot of teaching and he had a lot of fun
With an old, bent, beat-up 2741.
 
Oh…

It typed out stars and it typed out circles
And it twisted and it wiggled just like a living thing.
Al fed it a tape when he couldn’t get a phone line
And it purred like a tiger with its trainer in the ring.
 

Now, there’s much more to the story, but I just don’t have the time
(And I doubt you have the patience) for an even longer rhyme.
So I’m ending this first chapter of the tale I hope to tell
Of how Iverson’s notation blossomed into APL.
 
So…

Keep writing nands when you’re not writing neithers,
And point with an arrow to the place you want to be,
But don’t forget to bless those early APL sources
Who preserved the little seedling that became an APL tree.
 

Dedicated to the pioneers of APL with respect and affection by J.C.L. Guest

— Mike Montalbano, A Personal History of APL, Appendix A:
APL Blossom Time, 1982-10
 

 

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!

— Gitte Christensen, 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.

Amdahl     Fortune     Miniframe     Sun
AT&T Gould NCR Tower Torch
Bleasdale HP9000 Perkin-Elmer Uniqx
Cadmus ICL Perq Pyramid VAX
Diab DS90 MASCOMP Ridge Zilog

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.

— Eric Iverson
 

 

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 effort. 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:

(a)  Read the material on issue X.
(b) Do a sample of the exercises.
(c) Execute some obvious instances of X at the terminal.
(d) Pose questions about X of the form “What if … .” Execute them at the terminal. Between the results obtained and a re-reading of the text one will soon say, “Ah, that is why this happened and I now understand issue X.”

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,
Third Edition, Wiley, 1983-08
 

 

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.

— Brian Oliver
 

 

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.

— Gitte Christensen, Vector, 2006-08
 

 

Ken named APL/J primitives carefully, resulting in names that are apt, short, and mnemonic, for example, ceiling, floor, ravel, nub.

During a discussion on Latin squares and Greco-Latin squares, Ken wondered out loud why they were called “Greco-Latin squares”. 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’!”
 

 

Brooker: It is not obvious to me that these two symbols for FLOOR and CEILING have a great deal of mnemonic value.

Iverson: Yes, but once you have read it, you can remember it.

— Kenneth E. Iverson, Formalism in Programming Languages,
Discussion, 1964-02
 

 

If x is any real number, we write

    x = the greatest integer less than or equal to x (the “floor” of x);
x = the least integer greater than or equal to x (the “ceiling” of x).

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,
Volume 1, Section 1.2.4, 1968
 

 

We start by covering the floor (greatest integer) and ceiling (least integer) functions, which are defined for all real x as follows:

    x = the greatest integer less than or equal to x;         (3.1)
x = the least integer greater than or equal to x.

Kenneth E. Iverson introduced this notation, as well as the names “floor” and “ceiling”, early in the 1960s [A Programming Language, page 12]. He found that typesetters could handle the symbols by shaving the tops and bottoms off of ‘[’ and ‘]’. His notation has become sufficiently popular that floor and ceiling brackets can now be used in a technical paper without an explanation of what they mean. Until recently, people had most often been writing ‘[x]’ for the greatest integer ≤ x, without a good equivalent for the least integer function. Some authors had even tried to use ‘]x[’ — with a predictable lack of success.

— Graham, Knuth, and Patashnik, Concrete Mathematics,
Section 3.1, 1989
 

 

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.

— Adin Falkoff, APL\360 History, 1969-07-11
 

 

The three columns of Table 1 provide the APL symbol, a name for the symbol, and a transliteration scheme for use with the ASCII character set ...

  Pike  
  Spike
  Pine
  Spine

— Kenneth E. Iverson, A Dictionary of APL, 1987-09
 

 

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.

— Eugene McDonnell, A Perfect Square Root Routine, 1986-07
 

 

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.
 

 

Reasons for Liking

•  It’s kind of cute, possessing a radial symmetry.
It denotes a function for which conventional mathematical notation [1] does not have a good symbol:
   ⍟y   ←→  ln y  or  log y
x⍟y  ←→  logy
It alludes to 0=1+*○0j1 , the most beautiful equation in all of mathematics [2], relating in one short phrase the fundamental quantities 0, 1, e, π, and 0j1 and the basic operations plus, times, and exponentiation.
It is a visual pun — the symbol looks like the cross section of a felled tree, i.e. a log [3].

— Roger Hui, My Favorite APL Symbol, 2013
 

 

The two hardest problems in programming are naming things, garbage collection, and off-by-one errors.

— Raul Miller, J Forum message, 2013-01-21
 

 

There are 10 kinds of programmers, those who understand binary and those who don’t.

— John Scholes
 

 

Chapter 1: History and aims of the I-APL Project

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.

Project Aims

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.

Progress

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,
I-APL Instruction Manual, 1989
 

 

DE — Paul called it “development environment” and said he’d originally called it “development environment language” but changed the name when he found he was unaccountably losing files!

— 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.

— Joey Tuttle
 

 

How do you get to X from New York? You head west until you smell it, then head south until you step on it.

— Eugene McDonnell, New York born and raised
 

 

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.

— Anon, 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, Appendix A. Incunabulum,
1992-01-27
 

 

Years later, talking about “the one-page thing”, Arthur Whitney quipped that he still wanted to do it in one page, but using n-point font. (The value of n increases with each retelling of the story.)
 

 

Why “J”? It is easy to type.

— Roger Hui, An Implementation of J, Preface, 1992-01-27
 

 

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 aphorism 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.
 

 

When I mentioned “computer science”, Ken said, “Any field of study that has the word ‘science’ in it probably isn’t.” This is how mathematicians make friends.

— Arthur Whitney, Vector, 2006-08
 

 

It’s well-known that a lot of programming languages come from Alberta. Probably less well-known is the fact that good languages, like APL, come from northern Alberta. Java is from Calgary.

— Arthur Whitney, Vector, 2006-08
 

 

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.”

— John Scholes
 

 

Lifetime Warranty

As a present or former student, you have the right, always and forever, to come and see me, to call me, to e-mail me, to talk to me, to ask for letters of recommendation, to ask questions — about your courses, your degree, your future schooling, your career, your life; I will never be “too busy” to see you.

The fine print
•  You may always come and see me. However, this may involve making an appointment to be sure I’m available.
•  You may ask anything. However, I may not be able to give you the answer or I may not know the answer. If so, I will tell you.
•  Once an appointment has started, you have priority over other students. For example, if we have an appointment, and another student drops by, your appointment takes priority.

— Lee Dickey, Lifetime Warranty
 

 

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!

— Joey Tuttle
 

 

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.

— John Scholes, Vector, 2006-08
 

 

My attempt: An array is a function from a set of indices to numbers, characters, …
A rank-n array is one whose function f applies to n-tuples of non-negative integers.
A rank-n array is rectangular if there exist non-negative integer maxima (s0, s1, …, sn-1) such that f(i0, i1, …, in-1) is defined (has a value) for all ij such that (0≤ij)^(ij<sj). (s0, s1, …, sn-1) is called the shape of the array. etc. etc.

This definition accommodates:
  • APL/J rectangular arrays
  • J sparse arrays
  • Infinite arrays
  • Associative arrays (dictionaries)

APL rectangular arrays up to now have been implemented by enumerating the array elements in row major order (for indices (0, 0, …, 0), (0, 0, …, 1), etc.). But we know that there are ways to represent a function other than enumerating the domain and range of the function.

— Roger Hui, e-mail to Jim Brown, John Scholes, and
Bob Smith, 2010-10-12; What is an Array?, 2010-12-29
 

 

First-thingy in A: An opration [sic] that for A, an array, returns an array B, defined as follows: …

— International Standard ISO/IEC 13751:2001(E),
Programming Language Extended APL, 2001-02-01, page 22
 

 

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.

— Roger Hui, 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! Tuttle-Tale, Scholism, Kromberger, Hui-Story, …
 

 
BC You have this four-year itch to write a new programming language, so you’re coming due. Are the constraints on the problem any different? What’s the new language going to look like?
AW     It will probably be 95 percent the same. It’s the same semantics: noun, verb, adverb—same data types, same functions. But I like to try different things under the covers. For example, I like to try different memory allocation schemes. It’s all call by value but reference count[ed], which is kind of amazing when you think about it, so there’s no garbage collect. Everything is reference counted; when it’s free, you know immediately so you get good reuse. Under the covers, I play with different things. For example, if you’re doing a vector operation and the reference count is one, well, then reuse the vector. I also always try to make the code smaller.
BC Are you actually redoing the implementation, or are there going to be semantic differences as well?
AW The implementation is 100 percent new. I write everything from scratch, so the C code is entirely different but the semantics are about 95 percent the same.
BC You start over in terms of your C code? You take all that and throw it out?
AW Yes, completely.
BC What does it feel like to part with all that code that’s so lovingly created?
AW I love starting from scratch—and it’s stupid because doing the parser, tokenizer, and printer takes me months.
BC Do you find that you can come up with a better solution?
AW I think they’re getting a little bit better, but I think I’m converging.
BC Is that advice you would give to practitioners: to throw out more?
AW Yes, but in business it’s hard to do that.
BC Especially when it’s working!
AW But I love throwing it all out.

— Bryan Cantrill, A Conversation with Arthur Whitney, ACM Queue,
Volume 7, Issue 2, 2009-02
 

 

Ken told me of an “indefensible” attack: “APL/J is easy for you because you guys are geniuses.” I mean, what was he going to say?

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?’ ”

— Dick Lathwell, Dad & My APL Box (8:28), 2009-04
 

 

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.”
 

 

The surgeon operated on the son and yet is not the father. How is that possible?

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.
 

 

Gitte Christensen is a good cook and whenever she was in residence at Dyalog House we would be treated to a delicious dinner.

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, and announced, “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, defined H=: %@>:@(+/~)@i. , then executed timer '%. H 100x' . When the expression completed successfully after 115.521 seconds, I shouted across the desks to John, “John! 2 minutes!”
 

 

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.”
 

 

An e-mail exchange from 2010-08-17:

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

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

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

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

Dick Lathwell 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 and entered )save 1 cleanspace . The implementation of our supervisor (I guess these days we would say kernel) was such that an interval timer interrupt was required to enter the scheduler, so I momentarily enabled the clock.
 

 

The committee of the APL2010 conference in Berlin invited me to give a 10-minute address 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.)

— John Scholes
 

 

John Scholes was most apologetic while advising a young colleague about some care that should be taken, and quoted from the prolific poet Anon y Mous:

    Teach not thy parent’s mother to extract
The embryo juices of the bird by suction.
The good old lady can that feat enact,
Quite irrespective of your kind instruction.

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 definition in English and one of the meanings is, “teach one’s grandmother (how) to suck eggs.”
 

 

A week before the Dyalog Christmas party, Karen Shaw sent an advisory:

  For those attending the dinner, the restaurant/hotel have advised that the dress code is smart casual… I suggest you Google it if you are unsure what that is!  

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 (a grocery store). 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:
     

A muse is a compound of “musons”; the elementary particles of consciousness; the atoms of our mental world. More complex patterns, such as our views on politics, religion, country music, and so forth, are constructed from clusters of these units.

An example of a muson might be the fleeting intention to buy more trash-can liners. In isolation, the muson is typically temporary and inconsequential; anything smaller does not register on EEG.

The human mind is characterized by its ability to build large and enduring structures from such particles, while other animals get by with much simpler combinations. For a dog, memory-of-rabbit is about as fancy as it gets.

Some meditation regimes may be seen as the attempt to dwell for extended periods within a single muson. The most successful exponent of this turns out to be the common oyster (Ostrea edulis), which spends its entire mental life within the sole muson of which it is capable.

Although there is no direct human equivalent of the oyster’s muson, an approximation might be something midway between an appreciation of sea water and a vague yearning for locomotion.

)

— John Scholes, 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”):

  Two,
Two-to-the-two,
Two-to-the-two-to-the-two,
Two-to-the-two-to-the-two-to-the-two,
Two-to-the-two-to-the-two-to-the-two-to-the-two, …

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.

— John Scholes, Natural Number Arithmetic
 

 

An exchange on the J Programming Forum on 2011-01-25 and -26.

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 [35]:

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│
└─┴──┴───┴────┴─────┴──────┘

— Roger Hui, 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.)
 

 

On 2011-09-16 a problem was posed to the J Forum, to find the sums of all possible consecutive elements of a vector. I quickly derived a solution:

x=: 3 1 4 1 6

3   1   4   1   6
3 1   1 4   4 1   1 6
3 1 4   1 4 1   4 1 6
...

That is, multiple applications of the infix.

   f=: >:@i.@# +/\&.> <
   f x
┌─────────┬───────┬──────┬────┬──┐
│3 1 4 1 6│4 5 5 7│8 6 11│9 12│15│
└─────────┴───────┴──────┴────┴──┘

In APL:

   g ← {(1+⍳⍴⍵) +/¨ ⊂⍵}
   g x
┌─────────┬───────┬──────┬────┬──┐
│3 1 4 1 6│4 5 5 7│8 6 11│9 12│15│
└─────────┴───────┴──────┴────┴──┘

Marshall Lochbaum produced a superior solution within an hour:

   <@(+/\) \. x
┌──────────┬────────┬──────┬───┬─┐
│3 4 8 9 15│1 5 6 12│4 5 11│1 7│6│
└──────────┴────────┴──────┴───┴─┘

That is, apply +/ on prefixes of suffixes. Prefixes of suffixes (and suffixes of prefixes) are best visualized by using box (<):

   <\ \. 'abcde'
┌─┬──┬───┬────┬─────┐
│a│ab│abc│abcd│abcde│
├─┼──┼───┼────┼─────┤
│b│bc│bcd│bcde│     │
├─┼──┼───┼────┼─────┤
│c│cd│cde│    │     │
├─┼──┼───┼────┼─────┤
│d│de│   │    │     │
├─┼──┼───┼────┼─────┤
│e│  │   │    │     │
└─┴──┴───┴────┴─────┘
   <\. \ 'abcde'
┌─────┬────┬───┬──┬─┐
│a    │    │   │  │ │
├─────┼────┼───┼──┼─┤
│ab   │b   │   │  │ │
├─────┼────┼───┼──┼─┤
│abc  │bc  │c  │  │ │
├─────┼────┼───┼──┼─┤
│abcd │bcd │cd │d │ │
├─────┼────┼───┼──┼─┤
│abcde│bcde│cde│de│e│
└─────┴────┴───┴──┴─┘

 

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.

— Bob Smith, NARS2000
 

 

Dear Colleagues:

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 Roy Sykes
 

 

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.”
 

 

I was at uni with this bloke, and can vouch for his OCD credentials.

— Jay Foad, extolling the programmer of some software
he was recommending
 

 

I’ve always said that APLers are nicest group of people on the planet … it’s just a shame that they’re not necessarily of this planet.

— Andy Shiers
 

 

Stupid questions …

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.

— John Scholes, Declarative Programming
 

 

This is the obligatory empty array entry.

Jay Foad: JS pointed me at some papers by Trenchard More. I liked this bit:

   

We know from experience that empty collections differ according to type. An empty box of eggs differs from an empty box of apples: one hold no eggs; the other, no apples.

N.B. I disagree with him.

John Scholes: This spawned a whole genre of “empty-array jokes”. The one I remember is:

    Diner: I’ll have the strawberries and cream please, but without the cream.
Waiter: I’m sorry sir, that dish is off the menu today, the cream wasn’t delivered.
Diner: Then, could I have it without custard, instead?

Roger Hui: http://www.jsoftware.com/papers/eem/Empty_Array_Jokes.htm

John Daintree: I was expecting an empty page …

Andy Shiers: An empty page, or an empty HTML page?
 

 

Too productive for your own good?

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.

— Stephen Taylor, Iverson College, 2013
 

 

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.

— Stephen Taylor, Iverson College, Cambridge, Aug 2011
 

 

My memory of this one is even more hazy because by this time I was feeling giddy. It went something like:

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.
 

 

A vignette from Iverson College 2013:

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 High Street 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.
 

 

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. …
 

 

They say never quarrel with a newspaper, because they will have the last word, and I suppose the same applies to chairmen.

— Kenneth E. Iverson, The Evolution of APL,
Transcript of Presentation, 1978-08
 



Compiled and edited by Roger Hui (who also contributed the items not explicitly attributed).

created:  2010-09-18 12:00
updated:2014-04-09 12:10