top | item 22341828

(no title)

MrEldritch | 6 years ago

See also APL, which was designed as a concise algorithmic notation first and only adopted as an actual language afterwards. (Hence the use of custom symbols)

Although unlike this notation, APL is more typewriter-optimized; many symbols are made by double-striking two other more basic symbols, and the typesetting is simple and linear - it clearly doesn't take advantage of the full expressive power of handwriting. (Plus, its array-based programming flow, while extremely powerful, is very different from the way most people write algorithms these days)

discuss

order

alexjm|6 years ago

Older APL programs used a 2D layout to show control flow, which probably worked well in handwriting but not so well once APL started being used as a programming language, rather than as a notation for specifying a program to be written. This page has some examples:

http://www.zerobugsandprogramfaster.net/essays/5b.html

eternalban|6 years ago

That page deserves its own hn submission.

kick|6 years ago

APL was also handwriting-optimized; KEI came up with it in the first place because he needed something for quickly expressing thought on a chalkboard.

kragen|6 years ago

As I said below, I've been intrigued by APL ever since I picked up a couple of discarded APL books in 1995 and read through them repeatedly, taking profuse notes. I keep hoping that someday I will learn APL well enough to be able to just jot down program fragments and be sure that they'll work, rather than giving me a rank error; the same is true of APL descendants like Numpy, although I have a lot more experience with them. I watched Roger Hui's "Tour de Force of APL in 16 Expressions", and although I understood the expressions, I don't understand how to design them. There are a bunch of notes in Dercuano about variants of APL. I've downloaded Aaron Hsu's dissertation, but I haven't read it yet.

For now, though, I can write out algorithms in what seems to me to be a straightforward fashion in paperalgo.

Some APLish things I've done include recoding T$'s 64-byte demo Klappquadrat in Numpy http://canonical.org/~kragen/demo/klappquadrat.html and this keyboard-driven structure-editing calculator with broadcasting over one-dimensional vectors http://canonical.org/~kragen/sw/dev3/rpn-edit#50_iota_2_ln_*...