Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For those (like me) who didn't know, APL is a programming language...

http://en.wikipedia.org/wiki/APL_(programming_language)



Correction: APL is A Programming Language.

And one so dense/obscure/efficient that obfuscation is not a contest, it's an inherent philosophy.

Edit: corrected misuse of "obtuse".


APL isn't obtuse—just unfamiliar to people who aren't familiar with it.

By the dictionary meaning of 'obtuse', in fact, APL is the opposite: a sharp tool and a masterpiece of design.


I wouldn't describe it as obtuse, but I would describe it as concise.

I think that even people who are familiar with it could feel that its concision hurts readability. It's not such an unfair criticism as you may suggest.


Ken Iverson wrote an interesting document, "Notation as a tool of thought", which covers his thoughts on what a concise/efficient notation provides: http://www.jsoftware.com/papers/tot.htm


Really, interesting, thank you!

The one worry I have with APL and its descendants is that its conciseness will encourage people to make overly long expressions.

One possibly beneficial side-effect of more verbose languages is that it tends to encourage the use of additional identifiers to hold sub-expressions. The act of naming things is often a good thing for both the authors and readers of a program. More abstractly, it allows the program to carry intentional semantics alongside operational semantics.

This is also a problem I have with mathematics -- mathematical notation often uses context-dependent single-letter variable names for semantic information, which is terrible from an outsider's perspective (and by outsider I really mean anyone who isn't working in the exact field of the mathematician).

Edit: I should mention that I'm still pretty enamored with J for numerical computation, even though I never do any of it :)


If you like the Iverson, don't miss the famous piece of Whitehead's where he talks about notation too:

http://introtologic.info/AboutLogicsite/whitehead%20Good%20N...

Iverson took one of his epigraphs from there, but the whole thing is short and well worth reading.

Fun fact: Iverson, Roger Hui (the J guy) and Arthur Whitney (the K guy) were all from Alberta.


More sources for thoughts about designing descriptive but efficient language notation: brilliant! Upvotes all around! :)


I've observed two reasons people perceive APL code as unreadable:

1. They are not familiar with the symbols. It's the equivalent of trying to read a label in a foreign language. The text may seem unreadable to you, but if you learn the alphabet/hieroglyphs and some vocab, it makes sense.

2. They aren't used to brevity of notation. An APL program is to be read character by character, the way one reads a Java program line by line. Brevity is an advantage because it allows you to see more of a program's structure at a glance.


"just unfamiliar to people who aren't familiar with it". That was deep


That was intentional. Calling a language unreadable is a kind of tautology, because it contains no information about the language, only the reader.

Is Sanksrit readable? Saying "that's not readable" about APL is about as foolish as saying it about Sanskrit.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: