From APL To J

λ November 6, 2019
Tags: apl, j

About a month or two back I installed Dyalog APL and began the slow and sometimes frustrating process of learning APL. But fun as it is the most unusual language that I have come across yet and then, slowly, as the symbols started to make sense, as I waded my way through TryAPL and all the other Dyalog provided links and resources I started to hear mumblings about “J”. Having watched MIB many times (all of them) I wasn’t sure….but eventually I ended up at JSoftware

(mic drop) Mind Blown

One of the things that intrigued me with APLs the symbols; my mind likes stuff like that, I have a pretty interesting set up for Elixir programming use the Emacs prettify-symbols mode, maybe I’ll post a screenshot if I feel you won’t laugh.

Anyway, I heard that “J” has a similar world view regarding the use of symbols but, it also having been created by Ken Iverson, the man behind the symbols that became the language APL, I was interested enough to go and check it out…and they were right…the symbols from APL have been replaced by similar conjunctions/sequences of symbols so that you only need to remember the sequence of normal characters rather than remembering the APL ones… although if you use RIDE, the most excellent Dyalog IDE then that pain goes away and you get pop-up tips to help. RIDE really is an excellent IDE even if it is for APL.

Adjacency, Verbs and Nouns

So far from what I have learned watching Tracy Harms on YouTube and following the prescribed learning path from the JSoftware site is that “J” has its own world view in terms of how it describes things. It sticks to the monadic and dyadic descriptions from APL which I was glad about; it was only Haskell that stuffed up the meaning of “that” word for me! :)

The Modus operandi of J then is that you compose “sentences” that are built from verbs and nouns using the syntactic structure that J adopts, there is no statement separator or terminator in J because one sentence fits one line and that’s it. Sure it could be a long line but then readability will suffer. There are those that say J is unreadable anyway but having had about 20 hours exposure to APL at this point it was not that hard to switch from graphics symbols to character sequences.

Why Am I Bothering ?

Well, after 35 years with software development, there is still stuff to learn. And APL was invented in 1968 I think and still lives on in an active community!

Ever since I learned BASIC age 11 I have been in wonderment that you can “tell them do do stuff”, them being computers, just by typing out some weird looking stuff on a keyboard and asking the computer to “run” it. Awesome. And don’t forget the language you use is just a lower level of what you are doing with the computer at that point!

It;s definitely turtles all the way down.

As I progress I will write a few simple articles on J but I need some more time first so I don’t repeat what’s already out there but instead maybe produce something useful to read for others trying to learn J