Alexander Shendi asked:
>
> My question is: Can I use this implementation for learning J?
I cannot agree with Raul this time.
For learning any language, you need to have proper reference
documentation. I guess it would be very difficult these to get
a (legal) copy of the J Version 7 "Dictionary of J" these days.
> Basically, what is the difference between J7 and "modern" J903?
Obvious major differences:
- no control structures (but the $. Suite instruction vector
instead)
- a few less primitives (e.g. {::, L:, p:, q:)
These differences are the easy ones because they are immediatetly
noticed. You'll get a "spelling error", adjust your vocabulary, and
live moves on.
The tricky changes are those where J was defined to operate differently,
but not always in obvious ways. For example, in both Jv7 and today's J:
*: 0 1 2 3
0 1 4 9
<@*: 0 1 2 3
Today's result:
+-+-+-+-+
|0|1|4|9|
+-+-+-+-+
But J Version 7:
+-------+
|0 1 4 9|
+-------+
Any newbie would be bound to think: "OK, *: Square works the same,
but something about @ Atop or < Box changed." But that's not the
case. The change actually *is* with *: Square.
It's simply not viable to take today's documentation, ignore "anything
not there yet" in the old version, and learn the language. It'll
be a very frustrating exercise because things WON'T work as exepcted.
To get back to your question:
> Basically, what is the difference between J7 and "modern" J903?
The differences are all summarized in the "status.txt" file and,
for more recent releases, in the "release notes". Enter here:
https://code.jsoftware.com/wiki/System/ReleaseNotes
and work you way down towards the past (or at least J Version 7).
The changed behaviour described above is listed in there. But I have
my doubts that a newbie would be able to pin-point it.
(Hidden exercise, if you have half an hour to spare.)
Martin Neizel
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm