Hacker News new | ask | show | jobs
by Dr_Birdbrain 617 days ago
> APL code can be directly mapped to algorithms or mathematical expressions on a blackboard and vice versa

After looking at the code, I find this claim questionable.

3 comments

APL was invented by Iverson as a blackboard notation because he felt the existing notation was awkward/insufficent for describing computation/algorithms
linear algebra notation is the real notation (on a blackboard). aka the language of AI. the medium is just the message format.
I agree, linear algebra or pseudocode.
After looking at HN comments for years, I find this low effort dismissal downvoteable.

APL was originally a rewrite and normalisation of traditional math notation for use on blackboards. Before it was anything to do with computers it was linear algebra without all the bizarre precedence rules and with some common useful operations.

Ok, well, I understand it may have been invented with that goal, but it frankly does not look like blackboard notation at all. This is not lower effort than your rebuttal “yes it does, in fact it was invented that way”.

I agree with a sibling comment, also heavily downvoted, that the real blackboard notation is linear algebra notation. Either that, or pseudocode. Python and Haskell look like pseudocode. This doesn’t, and it doesn’t matter what the developer was targeting, he didn’t hit the target.

Your point appears to be the usual "I glanced at APL and it is unfamiliar and therefore bad. I am going to dismiss it without learning anything about it - and make sure to tell everyone" which isn't enticing to put high effort replies to. Consider the exchange:

"I'm sceptical that one can write +.× on a blackboard to indicate matrix cross product"

"well, one can"

"it doesn't look like one could. This is not a low effort reply. Yours is a low effort reply. The 'real' way to write a matrix cross product by hand in chalk on a blackboard is with nested loops and Python".

The APL creator Ken Iverson's paper Notation as a Tool of Thought[1] talks through an introduction to why it was designed the way it was; to do things Python and Haskell and pseudocode and traditional math notation don't do. Early on he writes:

> "APL, a general-purpose language which originated in an attempt to provide clear and precise expression in writing and teaching, and which was implemented as a programming language only after several years of use and development"

To use a thing for several years for expressing and teaching mathematics, is evidence that it can be used for that. It was designed for things code and traditional math notation don't do, e.g. code doesn't hide irrelevant details, math notation has inconsistent precedence, both have instances of wildly different syntax and symbols for closely related concepts which hinder seeing the connections. Code isn't amenable to formal proofs, pseudocode isn't good at expressing a problem, only expressing instructions for solving a problem.

The APL of modern times has a lot added since 1972, but the core is still there. See also anecdote in [2] a demonstration of K. Iverson casually writing APL on a napkin at dinner to solve a problem.

[1] https://www.eecg.utoronto.ca/~jzhu/csc326/readings/iverson.p...

[2] http://archive.vector.org.uk/art10002990

Name checks out.