From Competitive Programming to APL, with Conor Hoekstra.
The first half or so of this article was like reading an anthropological report of a strange culture far away: There were no programming contests when I was getting started out in the field (1967-1976). I rarely had the kind of technical interviews that Hoekstra went through, and did not get any of the five programming jobs I held from 1977 to 1998 through such an interview.
I started reading more closely with
Conor: So, I heard about APL five different times between the year 2010 and 2019.
My first job, beginning in 1977 at what was then the First National Bank of Chicago (First Chicago), was as a programmer/analyst. All of my programming was in done in APL. I loved the language. I used it at three different companies, through the mid-1980s, at which point it started to fade away from my professional life, and after about 1990 I had no contact with it. Hoekstra said:
….you could write in a single line what, in another language, might take literally a hundred. The problem though is that when you went to go back and read that or someone else was trying to read what you did, they could never understand it. And so, it’s sort of got this reputation of being a write-only language.
That paragraph could have been written in 1980.
APL was invented by Kenneth E. Iverson and it first appear as a technical notation in his 1962 book A Programming Language, which now can be read on-line. It first became available in the late 1960s as APL\1130 and (far more important) APL\360 on the respective IBM systems. APL\360 and its successors were multi-user interpreters with their own time-sharing systems, not dependent on what the host OS might provide. In the 1960s and 1970s several companies offered public time-sharing services using APL, one being the Toronto-based I. P. Sharp Associates, which called its version of the language SHARP APL. That was the version I used at First Chicago. I really enjoyed working with the I. P. Sharp personnel. Kenneth Iverson was then working for Sharp. In 1981, after a couple other job shifts, I went to work in Sharp’s Chicago office.
And histories that have could have played out so much differently. In 1982, Bill Gates was doing a whirlwind tour of North America and swung by IP Sharp and Associates in Toronto. And there was a meeting between a few of the IP Sharp folks and Bill Gates. And Bill Gates was getting ready to make the PC amongst APLers and array programmers. There’s this anecdote that Bill Gates for a long time was a big fan of APL and had an APL sort of handbook in his desk.
In the Chicago Office we never heard about this visit.
So, there was a time in history right at the late ’70s where APL was just as prominent as basic. Unfortunately, the folks at IP Sharp and Associates thought that mainframes were … here to stay because that was their business … and didn’t really see what was coming with the personal computer.
They really did not see it coming. The personal computer was coming to destroy the time sharting business. Early in 1983 I,P. Sharp had to lay off a lot of its staff, including a third of the Chicago office. I survived, but the handwriting on the wall was clear. I was soon back at Chicago’s Harris Bank, which I had left for Sharp. Harris was de-emphasizing APL, but I knew I had to diversify my skill set anyway.
And so, the PC that Bill Gates ended up creating came with BASIC, not with APL and never ended up shipping an APL …. But there is an alternate universe where Bill Gates decided to put APL on the PC instead of basic and then we’d be living in a way different world today.
Glenn McDavid might have had an interesting, but very different, career in that universe.
APL is still around. You can experiment with it at tryapl.org. Somehow the response time is not as fast as I remember from SHARP APL. The vast improvements in hardware speed seem to be offset by the complexity of modern software and the Internet. Try-GNU-APL is faster. Several versions of APL are available for download and installation, notably Dyalog APL and GNU APL“.
Of course, if you are really going to use APL, you need an APL keyboard. GNU APL’s APL Keyboard is OK for simple experiments, but would be cumbersome for serious work. Dyalog has APL Fonts and Keyboards which seems more serious. So far I have not found a way to replicate the old APL keyboard layout. I am not sure that is necessary or even desirable in the 21st century, but I would be surprised if nobody has done it.
Pingback: Pascal | From Hilbert Space to Dilbert Space, and beyond