1 min read

Knuth on APL

Donald Knuth had this to say in an interview a while back:

APL is for people who have problems to solve and don't care too much about efficiency; they want a nice elegant way to state the solution to their problem, but the solution that they come up with is not necessarily anything that a computer has an easy job doing. It's a problem specification language, but not a system programming language... there is an APL-WEB.

Well, in my opinion, he is partially correct. APL is about specifying the solutions to problems. It's a mathematical notation and a good way of thinking about the answering to tough questions. It's about solving problems, and it's about stating the solutions to those problems elegantly. However, as implementors of high-performance and high-level programming languages (I am thinking here of Scheme and R. Kent Dybvig's Chez Scheme compiler) have demonstrated, just because a language is excellent at expressing ideas, does not make it inefficient to execute on the machine.

I do think Knuth has a point when it comes to systems programming. I want to see better environment integration with UNIX machines from APL vendors, and I also want to see higher performance from APL systems than what I see today. That will come partly from adjusting our paradigm from minimizing instructions to minimizing data communication overheads, but there are certainly other ways to improve on the current state of APL performance.