Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
APL in JavaScript (ngn.github.io)
77 points by smanuel on Aug 12, 2013 | hide | past | favorite | 17 comments


Live Coding example showing Life in APL: http://www.youtube.com/watch?v=a9xAKttWgP4

I generally hate videos, but this one is well worth the few minutes it takes (assuming you are not familiar with APL; read the examples on the linked page first, it will save you a couple of reviews of the videos until you get it all)


Quibble. The demo should allow use of the computer's keyboard and Alt key. Point and click with a graphical keyboard is nuts. It should support overstrike for APL's composite symbols. I did a whole lot of APL programming in the '60s and '70s at IBM and consider it IBM's bastard child. There need not have been Matlab.

I'm appalled by the authors enforcement of 1-origin indexing.


Try typing backquote followed by another character. I believe mapping alt+key in the browser might be difficult.

It's 0-origin indexing.


"Try typing backquote followed by another character."

Sorry, I don't follow?

"It's 0-origin indexing."

Oops. Then I'm ecstatic rather than appalled. :-)


"Try typing backquote followed by another character." I mean the text box at http://ngn.github.io/apl/web/index.html If you type for instance `r in it, you will get a rho symbol, `i for iota, `a `w for alpha and omega, etc


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.


I find the GitHub project but can find nothing explaining how to install and use it. Can anyone point me in the right direction?




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: