Live data from Hacker News

A deep dive into APL

curtisautery.appspot.com

11–20 of 93 posts

Re: A deep dive into APL

#11
post #4

Is APL still used for anything now? It seems like it could be a useful language for _something_.

I dunno how widely used it is, but there is Kdb+[1], “a column-based relational time-series database” built on the K[2] language, a descendant of APL. I mainly see J[3] used for code golf, but at least that means a decent number of people know it. [1]: https://en.wikipedia.org/wiki/Kdb%2B [2]: https://en.wikipedia.org/wiki/K_(programming_language) [3]: https://en.wikipedia.org/wiki/J_(programming_language)

kdb is great, basically it combines an APL like language and a database, which is very cool as you can easily push your calculations to where your data lives:

http://www.timestored.com/kdb-guides/kdb-database-intro

If you want to dive in and try it, I've also made a video tutorial here:

http://www.timestored.com/kdb-guides/getting-started-kdb

Even if you don't use it, it's an interesting language to study as it's significantly different to the common java/python etc. The one drawback is that for commercial use it's very expensive. Other "modern" APL like languages that are available free include J and kona (open source K).

Re: A deep dive into APL

#12
I am blown away to see how frequently APL seems to come up on HN these days, a language I used professionally for over ten years.

As much as I love it I have to say one of the issues with APL is that it was way ahead of it's time. Because of that it struggled to run on computers of that era.

I was introduced to the language in 1982~ish. Like I said, I used it extensively, attended and presented at APL conferences and even have a picture of my younger and dorkier self with Ken Iverson (creator of APL).

This struggle to run on hardware that could not handle the huge expansions and contractions of memory utilization inherent in the way APL works multidimensional data sets like putty meant it could not compete where other languages had no issues at all. On PC's you were limited to 640K of RAM. It would be years before you could have enough memory to almost not care about utilization.

As the language didn't really catch the attention of the CS masses it failed to evolve as it could have over the years. And this is the reason I would suggest today it is not much more than a curiosity.

I'm sure there are some out there using it professionally. If I were to guess i'd say it must be mostly companies with a significant installed based of APL software they don't dare try to rewrite.

I firmly believe that the future of computing has to be in an APL-like language. By this I mean that we need to evolve to a notation for computing, rather than text for computing. Iverson himself wrote an excellent paper titled "Notation as a Tool for Thought".

The issue is that in order to evolve APL one has to have a deep understanding of APL. And, frankly, there are but a few of us around who have that understanding. Not sure how many of this group would embark on the mission to create a true next-generation APL worthy of it's lineage.

I read and I smile every time I see the language come up on HN. I taught my kids some APL and they are always blown away by it. Not sure where to go from here.

Re: A deep dive into APL

#13
A+ a derivative of APL is still being used in a certain investment bank. 20 years of projects to deco it and replace it with something more modern haven't managed to completely kill it off yet. Main issue I had with it was the inability / cost to hire people with any experience, and the off-putting / steep learning curve. Once you get the hang of it though it's a great language for solving certain more numerically orientated problems.

Re: A deep dive into APL

#14
post #8

The main problem with (GNU) APL for me is the line editor: I can't feel comfortable using a REPL to write a program without keybindings like ctrl-a, ctrl-w. Everytime I try to learn APL I eventually give up.

I implemented Emacs support to handle exactly this. It also provides several other useful features such as formatting and code navigation.

It's available on MELPA as gnu-apl-mode, or you can get it here: https://github.com/lokedhs/gnu-apl-mode

As poor as this video is (and the last time I posted it I believe I said I was going to make a new one), it does illustrate some of the features: https://www.youtube.com/watch?v=yP4A5CKITnM

Re: A deep dive into APL

#15
post #8

The main problem with (GNU) APL for me is the line editor: I can't feel comfortable using a REPL to write a program without keybindings like ctrl-a, ctrl-w. Everytime I try to learn APL I eventually give up.

[deleted]

Re: A deep dive into APL

#16

I am blown away to see how frequently APL seems to come up on HN these days, a language I used professionally for over ten years. As much as I love it I have to say one of the issues with APL is that it was way ahead of it's time. Because of that it struggled to run on computers of that era. I was introduced to the language in 1982~ish. Like I said, I used it extensively, attended and presented at APL conferences and…

This is really interesting! What are your thoughts on the J language as an evolution of APL?

Re: A deep dive into APL

#17

I am blown away to see how frequently APL seems to come up on HN these days, a language I used professionally for over ten years. As much as I love it I have to say one of the issues with APL is that it was way ahead of it's time. Because of that it struggled to run on computers of that era. I was introduced to the language in 1982~ish. Like I said, I used it extensively, attended and presented at APL conferences and…

You ever try the modern Dyalog offering with .NET, SQL, and R interop? Pretty cool stuff although I don't really use the language. There is a guy here writing a compiler for Dyalog APL that runs on a GPU, but is only a few pages of APL. If that isn't the future, I don't know what is.

Re: A deep dive into APL

#18
post #3

Is this sorcery?

It's APL. First time I heard about it was in those "how to shoot yourself in the foot" lists [0]: * You shoot yourself in the foot and then spend all day figuring out how to do it in fewer characters. * You hear a gunshot and there's a hole in your foot, but you don't remember enough linear algebra to understand what happened. [0] http://www.toodarkpark.org/computers/humor/shoot-self-in-foo...

Second bullet point is pretty funny. I really liked linear algebra, but I'm sure it could get frustrating if you're not an expert. I wonder if it makes sense philosophically for code to be more mathematical like APL or like a spoken language like Python.
Post reply on HN