Evolving an old programming language (APL)

I think Fortran and APL may have similar issues.

To the New APLers

The Orchard is sometimes a challenging environment for a Dyalog CTO. Many of the bright young minds with computer science backgrounds that arrive here are quick to latch on to the fact that many things about APL go against the grain of what they were taught at university, and that a few of the design decisions made during the 55 years since the first APL implementation were questionable and could do with rationalisation. There is a constant barrage of complaints that we are not working hard to “fix” the things that they consider to be wrong about APL. This is, of course, how things should be when youthful enthusiasm meets us “fossils”; I fully understand many of the points made and actually agree with quite a few of them.

It is sometimes hard work having to repeatedly defend why Dyalog does not do things like just fix index origin at 0 and give the customers a few years to refactor their code. The implication is often that we are incompetent, and occasionally there is the insinuation that we are driven by questionable commercial motives like trying to get rich by locking the customers in and then doing a minimum of work.


I never looked at that language. The syntax is quite… concise ! This is a program for the Pascal’s triangle (but the final 1s are lacking):

As concise as regular expressions (one of the most beautiful things I learned in computer science :heart:).

I love APL, which I learned in college (and have forgotten 95% of it). It has some appealing qualities, such as strict right-to-left evaluation and powerful array operations. The syntax is definitely off-putting, with many Greek characters and some unique to APL - I first used an IBM 2741 Selectric terminal with an APL typeball (and keyboard).

When I got to DEC, a VAX APL was developed, and Stan Whitlock was, at the time, the VAX APL project lead. I worked with Stan (later to become DEC and then Intel Fortran project lead, and J3 Secretary) a bit with VAX APL as I had bought a second-hand Andersen-Jacobsen printing terminal with an APL keyboard.

I remember walking into an IBM demo showroom in New York City, where a bunch of APL\360 terminals were set up running games for visitors to play. I’d go up to one and type (I-beam)1E9 (I can’t reproduce the I-beam character here), and APL\360 would crash then restart. I’d walk away and later see an IBM rep come look over the shoulder of the kid who was now at the terminal, with a puzzled look on his face.


I had to overstrike.

After creating APL, Iverson co-developed J, which does not use special characters and has a free implementation. I am trying some J one-liners. I wonder how close one get in Fortran by defining operators …

1 Like

J is great fun. Not much practical use for me, but definitely worth playing with. The idea of verb ranks is an interesting extension of Fortran’s elemental procedures. When I commuted by bus, the J Android app was a great way to spend the ride.

I think the adverbs and conjunctions will be hard to emulate in Fortran in a natural way, as well as forks and trains. To me, that’s the most fun part of J. But I do expect a lot of the language would translate nicely.

1 Like