4 ms·
Well, I'll be the dark cloud here. As someone who used APL professionally for a decade, having studied and interacted with many of the early APL pioneers, incl
by robomartin 7y ago
Well, I'll be the dark cloud here. As someone who used APL professionally for a decade, having studied and interacted with many of the early APL pioneers, including Ken Iverson, everything related to J, including this article's proposal, is an absolute abomination to me.
What many people lack is a sense of history. Why does something like J even exist? Do you know? I do. It was a horrible mistake on the part of Iverson in response to the limitations of the hardware issues we had to deal with at the time (think 80's).
How does a man who authored a paper exalting the advantages and power of notation as a tool for thought [0], turn around and create something like J?
Simple answer: Business, for the most part, and, if I am going to be benevolent, a naive attempt to bring something to the masses (while destroying APL).
Here's what you had to do at the time if you wanted to run APL on IBM PC's (or clones):
- Buy a specific motherboard (if it was not an original IBM PC)
- Buy a specific graphics card (which really wasn't a graphics card at all, just text)
- Purchase or program a character EPROM that replaced rarely used characters with APL characters
- Swap out the stock character ROM with the custom EPROM
- In some cases install a toggle switch outside the computer to be able to switch between APL and standard ROM's
- Purchase either an IBM Selectric or pinwheel printer
- Purchase an expensive character ball for your IBM printer or an equally expensive APL character for your printer
- And then you had to buy your APL interpreter from a company like STSC for hundreds of 1980's dollars
This meant a number of things:
- APL was outside the purview of "civilians"
- Normal office environments were never going to consider something like this
- There was a cost and technical complexity to wanting to use APL
- Installing a modified APL character EPROM broke applications that relied on the characters
in the character table that were replaced (mostly characters you could use for basic drawing on a terminal)
- APL was very much limited to those who absolutely-positively had to have it
- That meant academia and very niche applications (financials)
- Widespread adoption was pretty much impossible
It is in that context that Iverson thought-up the idea of transliterating APL symbols into combinations of ASCII characters. It was a failed attempt to make things more accessible to the masses by compromising the very foundation of APL. This was very short-sighted. Computers evolved very quickly and very soon both displaying and printing APL characters was within the reach of any 15 year old with a computer.
And it was a failure. Not the least of the reasons for this being that, to the average person, J code looks like ASCII vomit. APL has distinct symbols, just like mathematics. One might not be able to understand the code but the end product not only looks very different from ASCII vomit, it is. Because notation has power.
The correct path would have been to understand technology would catch-up to the requirements of APL and focus on extending and improving the language. A simple example of this would be adding an object-oriented programming layer to the language. Compilation and distribution through executable files and (civilian) installation packages, which are valuable for commercial closed-source security and deployment, would also have been a valuable add-ons. I was working with Assembler, FORTH, C, and C++ at the same time I worked with APL. I could deliver executable user-installable programs in any of those languages --and sell them!-- while my use of APL was limited to a range between academic and internal tools. It would have been brilliant to have been able to deliver finished user applications indistinguishable (by the user) from those written in C or C++. That was impossible. They should have worked on that, and more.
Frankly, I have been wishing, for decades now, for someone to stand on the shoulders of APL and develop it's successor. A rich SYMBOLIC language capable of allowing rich and effortless expression of ideas at an entirely different level of thought and abstraction than for-loops and indenting lines by four spaces.
Anyhow, it's a soapbox. I know. Getting off it. I need to go do some useful work.
[0] http://www.eecg.toronto.edu/~jzhu/csc326/readings/iverson.pdf http://www.eecg.toronto.edu/~jzhu/csc326/readings/iverson.pd...
- Volt 7y agoTwo things: 1. Why does the article in particular upset you? You talk about how J looks like ASCII vomit, and the article is trying to mitigate that. Perhaps it doesn't go far enough, which I would agree with. 2. What does an APL successor look like? Beyond object-orientation (which I don't see as contributing much).
- robomartin 7y agoMy apologies for not replying right away...just busy. No, the article does not upset me. In fact, none of this upsets me at all. If it did I would stop my work in other areas and devote all of my efforts towards bringing "NextAPL" to the world for all to enjoy. APL is, for the most part, and sadly, a dead language, has been for quite some time. Yes, yes, there are corner cases of usage but that's about it. It's more of an academic oddity these days than anything else. Again, sad to say this because I learned it when I was about 19 and used it for about ten years with great success. Precisely because APL is a dead language virtually everyone who writes about APL doesn't really know APL and "the APL way". The best I can explain what this means is to compare it to musical notation. This, of course, requires that the reader know and understand musical notation beyond the basics. In other words, if the reader has a few years of traditional musical training they'll get this immediately. Simple concept: Once you grok musical notation, not only do you read it without effort, you see patterns in it, your brain can "see" the music, you can talk about it, you can write it and you can communicate your thoughts with this notation. Now imagine someone comes along who doesn't want to put in the effort to learn and use this notation. What comes out of that are things like tablature and other stuff. Let's call that ASCII vomit just to stay with the theme. Useful? Sure? The same? Not even close. Not by a long-shot. In fact, it is primitive, inelegant and most-definitely not conducive to working "at the speed of thought", something Iverson clearly indicated APL enabled. Something anyone who has used APL for a non-trivial amount of time --defined as typing and reading it like a trained musician does musical notation-- will attest to. Programming in APL, in this sense, can feel very much like playing the piano using sheet music with traditional musical notation. Another way I always thought about programming in APL was to envision data structures floating in space in front of your while having powerful symbolic tools to manipulate them. It's almost like those scenes with Tony Stark using an advanced holographic CAD system to design his hardware. No mechanics, all thought. In terms of an APL successor, well, this is hard to fully define until you dive into a project that would aim to product such a thing. I wrote about this on HN a few years ago. Rather than copy the whole thing, here's a link: https://news.ycombinator.com/item?id=6117346 https://news.ycombinator.com/item?id=6117346