Late, great Ken Iverson
Whatever Happened to APL?
by John C. Dvorak
(originally appeared circa 1998)
The first language I learned to code should have been FORTRAN. It was taught in college in my day and was the only computer-related subject being taught back in the dark ages. I found it boring and eventually gave up on it and the language I actually learned first was, of all things, APL. Some people say this accounts for my odd sense of humor and bizarre outlook on life.
APL, was invented by Ken Iverson from 1957-1960 and means, simply, A Programming Language, although it was originally dubbed Iverson Notation when Iverson developed it at Harvard. It was designed to modernize math notation. A group in Canada is trying to rename it to Array Processing Language which describes it better since that’s what it does best. It was invented as a simple way to describe mathematical ideas. Various little symbols — called primitives — could then be strung together to quickly form algorithms. According to the ACM, “APL’s interactive environment encourages experimentation and facilitates rapid prototyping and modification of programs and applications. APL is one of the most concise, consistent, and powerful programming languages ever devised.”
APL has a number of interest characteristics in its original form. First of all it manipulates matrices like nothing else. Second it uses these alien and odd characters for functions and procedures. These include overstrikes and other oddities. A special keyboard and character set is actually needed. Because there are so many unusual characters the keyboard originally did not allow for lower case letters. Only upper case is used making the printouts rather old-fashioned. Worse, it’s traditional not to be just upper case, but upper case italic making it look even worse. Aesthetics is not part of this language. Finally the language is interactive. SO you can sit at the keyboard and use your computer like the most powerful calculator you can imagine.
One other noteworthy feature is the power of computation that can be compressed into a single line of code. In every University there is some professor who is an APL nut. On the door of the Professor will always be a comparison of something like 20 lines of Fortran then one line of APL that does the same thing. Unfortunately the line is cryptic as is most APL code. APL fans say that APL does NOT HAVE TO be cryptic and it’s unfair to characterize it thus. Fact is, it’s cryptic.
Some of the drawbacks to APL were corrected by the newer version of the language simply called “J.” — also developed by Iverson with Roger Hui. J manages to use the normal keyboard and keys rather than all the odd little characters found in the original implementation of APL.
Doing a Whatever Happened to APL (or J) is somewhat ludicrous because nothing ever happened to the language. It cropped up and found popularity amongst a few programmers and is still popular amongst a few programmers. The growth is not there for this language or any other old-fashioned language it seems. This is a shame. Even 10 years ago people who bought computers assumed that they were going to have to learn some amount of programming. The early iterations of BASIC for microcomputers was a godsend to those who didn’t want to learn the time-killing assembly languages. Other nifty languages appeared too. From 1975 to about 1984 everyone did some programming. With dBASE and spreadsheet macros some of this became watered down. Much individual programming was also circumvented by both the Macintosh and Windows. Instead of talking to the computer you programmed to API’s. This was harder than writing a few lines of code since you actually had to KNOW the API’s. This put most programming into the hands of professionals who began to boost Pascal, then C and now C++. Visual BASIC also came into the picture and it was unlike old-fashioned BASIC.
APL was a small player during this change over and pretty much got shoved aside completely, which is probably good for the language. Unlike BASIC which was steamrollered with no following left, APL went underground and stayed there where it still exists. Go to a good search site and look up APL and you’ll find thousands of sites supporting it. Try finding the same number supporting, say, Northstar BASIC or MS-BASIC. There a few if any.
The fact is that computers have become too complicated for users to do any real programming without layers of protection to keep them from messing up the flaky operating system. So the interest in APL or any other arcane language is flat. That is to say that the number of APL users is not increasing with the growth of the market.
This may change with the introduction of two products. The first is APL2 from IBM. The old APL story goes that the language originally ended up at IBM and was never marketed but someone took notice of the fact that IBM engineers were all using it. A similar piece of folklore floats around about VM, the mainframe operating system. The story goes that someone came up with the bright idea of selling it as an afterthought. IBM continued to sell APL and then moved to APL2, a more advanced and business-oriented version of the language. Recently a Windows 95, Win-NT version of APL2 was released. The code written for this language can be run on just about every platform making it completely portable. According to IBM the portability includes: language compatibility, application text display, object library support, business graphics, DB2 access, and network communication. Other features include 2 GB workspace, concurrence, the ability to call other languages, device independent printing and other goodies. The drawback is that the language is $1500 making it only suitable (again) for a professional.
Enter J. This language uses the standard ASCII character set for the notation and has some added features. Visit the Jsoftware website at www.jsoftware.com for various versions of the language and a lot of good reasons to consider it. One curiosity of this site is that the web programming is done in J! Fascinating.
J is portable and runs on: Acorn Archimedes, AT&T 3B1, Apple Macintosh family, Atari ST, DECstation (MIPS-based), DEC VAX (ULTRIX & BSD), Interactive 386/ix, IBM RISC/6000, IBM PC family, MIPS R3000, NeXT, Philips P9070, Silicon Graphics SGI Irix, Sun 3, Sun 386i, Sun 4 (SPARC), HP95, and MS-DOS. Recently a version for WIndows 95/NT was released.
You can also find many small implementations online of APL to try out. After researching this article I think I may go and relearn this fascinating language.
[note: Ken Iverson died in 2004]