Truth, APL and the Dijkstra problem

Never underestimate the power of a tag line!

In June of 1975, Edsger W. Dijkstra wrote an essay called:  How do we tell truths that might hurt? Which is characterized as a series of aphorisms about computer programming languages, one of which is APL.

Essentially, Dijkstra wrote a bunch of catchy, satirical critiques about the programming languages of the day.  He prefaces this work by mentioning a lack of rigorous criticism in the computing community, which I haven’t experienced, but I believe, because it’s backed up by some of Dennis Shasha’s work. So, I suspect that as an artifact of its time, this work could have galvanized  computer scientists to shape up.

And then time marches on…

I haven’t done an official count, but my initial investigations indicate that Dijkstra’s 1975 quip against APL is the most frequently used quote about APL in cyberspace to this day.

Do you know what this means? Dijkstra is the author of APL’s most famous tag line. And that was 35 years ago. And it doesn’t appear as though he liked APL very much.

Now, there’s something to think about.


11 Responses to “Truth, APL and the Dijkstra problem”

  • What was the quip. The one I remember is that APL is the only language where someone throws a line of code on the table and dares the other person to find out what it does. (Or something like that).


  • aprogramminglanguage aprogramminglanguage

    Oh, Hank… It’s so easy to find in cyberspace.

    Just ask Google about Dijkstra and APL. The number of times it is invoked is the salient point.

  • I have always been puzzled by Dijkstra’s negative attitude towards APL. He was big on program correctness, proving programs correct, etc., and APL programs, with their similarity to mathematical notation, are more amenable to proof than programs in other languages. For example, it would not be too hard to prove that ((⍳⍴x)=x⍳x)/x finds the unique elements of vector x. In another language, the proof would be much harder, not least because in another language the program would be much longer (you’d get lost in the for loops, the index variable(s), the allocation of the result, etc. etc.).

    See Ken’s Turing Lecture on this aspect of APL. (Section 1.5 and Section 4.)

  • aprogramminglanguage aprogramminglanguage

    I don’t get it either, but he was vitriolic to the end, it seems. I read an interview from roughly 2001 where he basically said he hated it.

  • The discussion wasn’t quite fair at that time. The fact that e.g. READ and NEXT (imagine, I remember only two right now!) in COBOL or Fortran had their own strict definition was ignored. Those were not just English words, those were symbols as well – pretty verbose symbols, if you ask me. Oh, another one comes up: WORKING STORAGE ????
    And I told & hold myself: “You tell ’em!”

  • I know of an old COBOL programmer who’s fingers turned into a spaghetti tongs, because of using them as bookmarks in the 10inch piles of code sheets.

  • At APL95 (San Antonio) I proposed to invite Dijkstra as the keynote speaker at the next conference … No echoes!

  • aprogramminglanguage aprogramminglanguage

    My father writes this morning that he always liked Dijkstra, (i.e WTF? But, with a polite tone).

    It’s not so much that Dijkstra said something nasty, but that quote is catchy and is still used more than any other as a “sound bite” to represent APL, usually to dismiss it as irrelevant.

    In fact, it’s humorous, in a caustic sort of way.

    (And you are going to have to figure out WTF, yourself.)

  • Politicians and spin doctors know that if you don’t “define” yourself then somebody else will do it for you, probably in a way that you don’t like. Perhaps in your collection of APL buttons you can find slogans/labels that are candidates for eventually replacing Dijkstra’s sound bite.

    APL is for the symbol minded
    APL: the smart people’s choice
    APL: A Powerful Language

    You can write an APL program and prove it correct, while programmers in other languages are still coding.


    There is actually much to like about Dijkstra. I’ve read a few of his program proofs and the intellectual rigor was invigorating. As I read his text, I though to myself, “APL would be, should be, a natural for this guy.”

  • Roger, it’s interesting that you bring up the point about the provability. I had exactly the same thought a few days ago, reading some of Ken Iverson’s papers on APL and J.

    If you take away the branch arrow, and throw in selection and repetition constructs (for the few times that some form of branching is actually _needed_ in APL), APL has got to be the most provable, yet implemented, language in existence.

    Even more so than J, because you can’t make a mistake in your proof by omitting a space before or after a dot in APL. 🙂 🙂

  • aprogramminglanguage aprogramminglanguage

    Thanks for adding your voice to the dialogue, Stefan!


Comments are currently closed.

Analytics Plugin created by Jake Ruston's Wordpress Plugins - Powered by Laptop Cases and r4.