Remix.run Logo
jandrese 20 hours ago

> J is a dialect of APL

That is an alarming statement, especially as the first line on the site.

> Words are expressed in the standard ASCII alphabet. Primitive words are spelled with one or two letters; two letter words end with a period or a colon. The entire spelling scheme is shown in the system summary. The verb ;: facilitates exploration of the rhematic rules. Thus:

       ;: 'sum =:+/_6.95*i.3 4'
    ┌───┬──┬─┬─┬─────┬─┬──┬───┐
    │sum│=:│+│/│_6.95│*│i.│3 4│
    └───┴──┴─┴─┴─────┴─┴──┴───┘
    
> The source code for word formation is in the files w*.c. The process is controlled by the function wordil (word index and length) and the table state. Rows of state correspond to 10 states; columns to 9 character classes. Each table entry is a (new state, function) pair. Starting at state S, a sentence is scanned from left to right one character at a time; the table entry corresponding to the current state and character class is applied.

I'm already lost, and this is the first example.

jonahx 20 hours ago | parent | next [-]

"The reader is assumed to be familiar with J and C."

And anyone reading this at the time would have been familiar with APL as well.

It's not intended to be beginner friendly. Like J, and like the original J dictionary, the values here are brevity, compactness, and essence. There is plenty of other more beginner friendly material on J out there.

mlochbaum 20 hours ago | parent | prev | next [-]

It was the subject of quite some debate, see "Panel: Is J a Dialect of APL?" at http://www.jsoftware.com/papers/Vector_8_2_BarmanCamacho.pdf . Ken and Roger backed off this stance after witnessing the controversy.

"Ken Iverson - The dictionary of J contains an introductory comment that J is a dialect of APL, so in a sense the whole debate is Ken's fault! He is flattered to think that he has actually created a new language."

18 hours ago | parent [-]
[deleted]
ofalkaed 20 hours ago | parent | prev | next [-]

That example is what got me to start learning J which I have always found to be unreadable, much prefer my array languages to have their non-ascii symbols. A few nights playing with J and learning was enough to not be completely lost and able to make some progress, but it is still a challenge. When it says it "describes and implementation of J" it is not kidding, it describes the implementation and goes no further. Both the article and the code stick to this sort of terse and very concise language.

great_wubwub 20 hours ago | parent | prev | next [-]

Me too, but

> This document describes an implementation of J in C. The reader is assumed to be familiar with J and C.

jandrese 19 hours ago | parent [-]

I have to admit I got to https://www.jsoftware.com/ioj/iojATW.htm and seriously considered if the site is just pulling my leg. I think they're being sincere but I can't be 100% sure.

jonahx 19 hours ago | parent | next [-]

Not a joke, and a famous piece of J lore!

There have a been at least a couple attempts I've seen posted here of blog posts breaking down the code in a beginner friendly way. One I dug up is: https://blog.wilsonb.com/posts/2025-06-06-readable-code-is-u...

Related: https://needleful.net/blog/2024/01/arthur_whitney.html

nerdponx 18 hours ago | parent | next [-]

As someone with enough math background to be comfortable with one letter variable lanes and terse notation, this is still needlessly annoying to me because of the removal of almost all non-essential whitespace and grouping related definitions together on the same line instead of putting them on separate lines, and then using blank lines to separate "paragraphs".

I get it and I've heard it before, it's supposed to make it easier to fit more on one screen which is supposed to reduce cognitive burden. You are free to like what you like of course, but it just makes everything look like a jumble.

And even in a math context, I get frustrated if there's no simple glossary or surrounding prose to describe what's going on. Very few people write math this way, as a dense jumble of symbols. Even in the context of written mathematics, this is a very unusual style. I feel like J fans talk about it as if it's a totally normal thing to do if only you knew a little more math.

jonahx 17 hours ago | parent [-]

> Even in the context of written mathematics, this is a very unusual style. I feel like J fans talk about it as if it's a totally normal thing to do if only you knew a little more math.

Yes, it's very unusual. I think the argument is more that there is a tradeoff, that "inflation" (whitespace, long names, multiple classes/files/etc) has a cognitive cost too even it it's more approachable, and that this other alien-seeming style can work very well for some people. There's a lot to love in the APLs even you ultimately don't buy the fanboy arguments, if only for the lessons of just how different the world can be.

17 hours ago | parent | prev [-]
[deleted]
andai 17 hours ago | parent | prev [-]

I think this seems insane from programmer land, but quaint from pure math land.

(I say this as someone who got filtered by pure math!)

dwb 8 hours ago | parent | prev [-]

This kind of comment mystifies me. What’s the value of it, what are you trying to say? Are you proud of your ignorance, or trying to ridicule, or what? What is alarming about coming across something you’re not familiar with? J and APL have Wikipedia articles that serve as a basic enough introduction. Why not educate yourself first?