Skip to content
Back to the collection

Notation as a tool of thought

Kenneth E. Iverson

1980 · Communications of the ACM

Read the paper
HN score
1.5
Mentions
5
Readers
5
Months
5
What’s in a score?

In the conversation

Original HN comments, with labels from simple text rules. A label describes the whole comment and may miss context or irony. Read the discussion to make up your own mind. About the labels

5 selected excerpts · 5 total mentions

geocar
Strong recommendation · rule
I was distracted by this too; I programmed largely in CL and emacs from 1999-2014. I highly recommend reading: https://dl.acm.org/doi/10.1145/358896.358899 One thing that helped me tremendously with k (and then APL) was when I noticed the morphism xfy<=>f[x;y]<=>(f x y). This wasn't a new idea; it's right there in: https://web.archive.org/web/20060211020233/http://community.... starting almost the first page (section 1.2). I simply had not considered the fullness of this because a lot of lispers prefer S-expressions to M-expressions (i.e. that there's more study of it), largely (I conjecture) because S-expressions preserve the morphism between code and data better, and…
Read the full comment
that turns out to be really useful as well. But the APL community has explored other morphisms beyond this one, and Whitney's projections and views solve a tremendous amount of the problems that macros solve, so I promise I'm not bothered having macros slightly more awkward to write. I write less macros because they're just less useful when you have a better language.
rramadass
Neutral mention · rule
You have misunderstood what the author meant. It is that Mathematics is far more general and uses a myriad of notations developed over hundreds of years and adapted to various sub-fields/domains/models as necessary. This makes it far more flexible and powerful than any programming language. That is why Multi-Paradigm languages became a thing i.e. there is a need for programming languages to provide a larger set of computation models which can then be exploited by the programmer to map his domain models (mathematical or not). For example; why do many(most?) programmers have difficulty in transcribing algorithms given in pseudocode to their favourite language? Simply…
Read the full comment
because they have not understood the algorithm at the fundamental mathematical level but have only picked up the patterns through which it is expressed in their language. Note that this is the default way our brain works and how we manage real-world complexity without really understanding everything (satirically phrased as "monkey see, monkey do"). But we can use mathematical methods and reasoning to minimize going off the rails because it forces us to make explicit our assumptions, definitions and proofs which is at the heart of problem-solving. So we use all the mathematical tools we have at hand to structure and solve a problem and only later map it to our programming language. But note that as we gain more experience this mapping becomes intuitive and we can directly think and express it in our favourite programming language. See also my comment here - https://news.ycombinator.com/item?id=45934301 Some References: Notation as a tool of thought by Kenneth Iverson - https://dl.acm.org/doi/10.1145/358896.358899 Predicate Logic as Programming Language by Robert Kowalski - https://www.researchgate.net/publication/221330242_Predicate...
cardanome
Neutral mention · rule
APL notation makes more sense once you get that it was developed as an better notation for expressing math. [1] Classical Math notation is full of weird Greek symbols and absolutely incomprehensible without any training. APL is way more regular and easier to grok as well as to type on computers. With it's small set of special symbols, regular syntax and human-friendly infix notation APL is designed be very easy to learn. It looks utterly alien to programmers that are used to the C-style syntax based languages, yes. but your JS or C# code looks as alien if not more alien to an non-programmer as does APL to you. I am not convinced that APL is harder to learn that JS for non-programmers. I think existing programmer struggle way more with learning APL because it requires them to unlearn certain ideas. [1] https://dl.acm.org/doi/pdf/10.1145/358896.358899
mlajtos
Neutral mention · rule
Well, Python was at the right place at the right time. I am actually happy that array-oriented programming (via Numpy) got mainstream. A lot of great ideas came from sheer number of people doing tinkering and great engineering in this domain. If only people caught on to Iverson's 'Notation as a Tool of Thought' [0] and Backus' 'Can programming be liberated from the von Neumann style? A functional style and its algebra of programs'. [0] https://dl.acm.org/doi/pdf/10.1145/358896.358899 [1] https://dl.acm.org/doi/pdf/10.1145/359576.359579
ZachWick
Neutral mention · rule
APL was originally created by Iverson as a notation used to teach mathematics and only became a programming language able to be executed by a computer around the time that (or shortly after) he published his book _A Programming Language_ [0] in 1962. Even throwing away the “executable by a computer” part of APL and only considering it as a notation, APL can be powerful. Iverson gave a lecture, which was published as _Notation as a Tool of Thought_ [1] that contains a good discussion of what exactly makes a given notation “good”. [0] https://web.archive.org/web/20141027152546/http://www.softwa... [1] https://dl.acm.org/doi/pdf/10.1145/358896.358899

Keep following the thread.

More in Other research

More from the same topics.