FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
DrDobbs Portal Blog: APL Follow Up
EDITOR'S EYE

The World of Software Development.

by Jon Erickson
February 09, 2007

APL Follow Up

In comemmoration of the recent 40th (or is it 50th?) anniversary of the APL programming language, I recently wrote a short article entitled APL and Oranges. I was surprised by the mail I received which was more interesting and more informative than the original article.

For instance, there was this note from Devlin Gualtieri:

I enjoyed your editorial on APL in the February, 2007, issue of Dr. Dobb's Journal. I used APL in the early 1970s. It ran on an IBM 360, and then an IBM 370, while I was at Syracuse University. I enjoyed it enough to use it later while at Allied-Signal through a dialup service. I published an APL computer program for modeling of magnetic bubble materials ("Computer Program Description: SPECS," I.E.E.E. Trans. Magnetics MAG-16, 1440-1441 (1980)), but I haven't used it since.

It's true that a typical APL program resembles programs submitted for the Obfuscated C Contest. But it's also true that it functions as a nice mathematical calculator, since it's interpreted, and it preceded Mathematica in that respect. I write all my code in C, now, with brief excursions into other languages, but for some tasks I wish I still had APL.

Then there were those APL typeballs, like the one that Mark Dresser still owns (but which I bet is gathering dust):

I actually have one of those APL typeballs that was installed on an IBM 2741 Selectric Terminal I acquired as surplus many years ago while a student.

I never did end up doing much with the terminal. It had a serial interface that ran at 134.5 baud (not 110, not 150, but 134.5!) Allegedly this was based on a careful study that determined that this was as fast as the mechanics would go without excessive wear.

About the time I figured out how to slow it down to 110 baud that a standard UART could be made to talk to, CRT terminals became affordable and I got rid of the monstrosity but kept the typeball along with other curiosities like nixie tubes, mag core memory...

But does knowing APL make you an old programmer, wonders John Russo? No, but I bet it makes you a good programmer:

APL was one of the first languages that I used in a professional environment. I first used it on terminals that used paper instead of CRTs, then on special CRT terminals that supported APL and had the special characters on the keys. Finally, I moved to a PC that had a special chip so that I could get the APL characters. I had to memorize which character was associated with which letter because I had a regular keyboard. I didn't think that anyone used APL any more. Does this make me an old programmer?

Paul Tremblet had a lot to say -- about APL, the typeballs, and more:

Your column on APL tugged at my heartstrings. I first learned APL in 1970 on the IBM 1130. It was distributed as a Type II program. As a chemistry major studying physical chemistry, I found the language immensely useful in studying planes of symmetry as part of a course entitled "Chemical Application of Group Theory" (although, when asked in the cafeteria where we were headed next, we often answered "to group therapy").

You mentioned the selectric typeball. Now there was a marvel! Did you know that the physical position of the characters on the ball corresponded to a "tilt-rotate" code. Bits in the byte that represented the character determined how the ball was tilted/rotated relative to a reference point to position the ball so that the proper character hit the ribbon. If you examine a typeball (and if you don't have one lying around, maybe Michael Swaine does since he seems to enjoy the history of computing - you might even want to share this with him), you will notice that every upper case letter is 180 degrees away from its lower case counterpart. Examine it some more and the whole code set will become obvious. This, of course, was true only for the "normal" typeball. When it came to APL, all bets were off (although I'm sure there was some logic involved). If I remember correctly, the number of characters in the APL character set was greater than the number on the ball so some characters were formed by overstriking. I have this vague recollection of having to hold down a special "overstrike" key on the keyboard as I typed a two-character sequence (even more fun than using trigraphs to type C code on an EBCDIC terminal that did not have certain characters such as a square bracket or curly brace).

The last time I had actual experience with APL was in the 1980s when I was approached by one of the MVS systems maintenance programmers who was waving a piece of paper contained what he thought was output from a printer on drugs and asking what the heck it was. I told him it was APL (so now he though I was on drugs) and asked him where he got it. He replied that he had received it from IBM as a patch that he should apply to the Graphical Data Display Manager (GDDM) subsystem. To me, it made perfect sense that such a system should use APL. It did, after all, involve performing numerous operations on matrices; and things like matrix inversion, which in any other language is complex and ugly, is trivial in APL. The maintenance programmer in question, being accustomed to received patches as PTF or PUT tapes (or sometimes punched cards) was now puzzled over how exactly to apply the patch. When he asked me how and I told him he should simply type it in, he really was ready to send me off to the padded room. Fortunately, I knew we had some of those black-on-orange quad screen IBM terminals (forget the model number) and because I was curious by nature, I had discovered that they had selectable character sets and one of the available sets was APL. I reprogrammed one quad of his terminal. He was happy that the patch got applied. I was happy I got to play.

Jeff recalls doing coding on a Selectric typewriter. Do they even make those any more?


It was with interest I read your editorial on APL. Still working in the industry at age 66, I find little that references what was done back in the '60s -- other than rock-and-roll. I worked for IBM then and I can remember using APL to crunch statistical data arrays. APL handled it well with very little coding. Keeping the meaning of the symbols straight was sometimes a chore. And all the coding done on a Selectric typewriter. A lot has happened in the past 40 years to get us to where we are today. I think we forget about many of the tools that enable us today

And Larry Baker had to occasion to attend a very cool ACM session. Lucky guy.

I had the privilege of attending the first ACM SIGPLAN History of Programming Languages (HOPL) Conference, June 1-3, 1978. Not only did Ken Iverson talk about APL, John Backus discussed Fortran, Alan Perlis and Peter Naur discussed ALGOL (where Peter Naur acknowledged John Backus' contribution of the syntax definition notation, Backus Normal Form, which later came to be known as Backus-Naur Form after his additions to BNF for ALGOL), John McCarthy discussed Lisp, Jean Sammet discussed COBOL, Thomas Kurtz discussed BASIC, and Ralph Griswold discussed SNOBOL. Other languages were presented by either their authors or significant contributors, but those were the big one for me. (C, C++, and Ada weren't around long enough by that time to qualify for inclusion; they were included in the Second HOPL Conference in 1993. By the way, HOPL III is coming up in June, 2007.) Text of the papers and transcripts of the talks appeared in the ACM Monograph History of Programming Languages, edited by Richard L. Wexelblat, ISBN 0-12-745040-8. I'm not sure it is still in print.

Thanks to you all for contributing to the history of programming languages. Just think, in another 40 years people will be saying the same thing about Java, Ruby, Python, and other antiquated programming languages.

Posted by Jon Erickson at 11:17 AM  Permalink





January 2008
Sun Mon Tue Wed Thu Fri Sat
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    


BLOGROLL
 
INFO-LINK