Notation as a Tool of Thought (1986) [pdf]
APL is a write-only language. [1]<p>This will be a controversial statement to devotees, but there&#x27;s a simple argument that should clarify why this is true:<p>1. APL&#x27;s inventor claims that APL is a tool of thought. Specifically, it is designed to facilitate the development of algorithms.<p>2. Tools of thought, like mathematical notation or writing in general, are used wherever people think.<p>3. When people think about algorithms, they write code or pseudo-code.<p>4. Thus, if APL were truly a tool of thought, it would be adopted as a pseudo-code. Academics would use it to more easily, concisely, and precisely express algorithms and programs. Software engineers would use it in their whiteboard planning. Etc.<p>5. In reality, essentially no one uses APL as a pseudo-code. Even by its devotees, it used exclusively as a programming language. The process of coding something into APL&#x27;s idiosyncratic logography can only happen after the idea is already clear by other means. And virtually no one finds themselves understanding an algorithm via APL code which they did not already understand via more accessible languages or pseudo-code.<p>6. Therefore APL is not a tool of thought. On the contrary, it is what its notation indicates to virtually everyone who sees it: a write-only language.<p>Admittedly, there&#x27;s some appeal in this idea that a super-concise notation might be a sort of life-hack for thinking about algorithms. If you could just get your brain to think in this notation, all sorts of new concepts would be accessible to you! But that&#x27;s just not how reality has unfolded, at least in the case of APL. Perhaps there is a yet-undiscovered notation that truly realizes the promise of a Tool of Thought about algorithms. But I have no idea what it would be.<p>This letter from Dijkstra and the discussion underneath it [2] further strengthens the argument above. Note how APL is marketed as a tool of thought, but those who would teach it are distressed at the idea of teaching it without a terminal to execute it on. As Dijkstra notes, this is inconsistent with what we&#x27;d expect from a true tool of thought. Such a thing should have no trouble expressing its appeal through writing.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Write-only_language" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Write-only_language</a><p>[2] <a href="https:&#x2F;&#x2F;www.jsoftware.com&#x2F;papers&#x2F;Dijkstra_Letter.htm" rel="nofollow">https:&#x2F;&#x2F;www.jsoftware.com&#x2F;papers&#x2F;Dijkstra_Letter.htm</a>