Thanks for the reply Raul, I will respond point by point based on my experience.

On 2013-01-13, at 9:16 AM, Raul Miller wrote:

> I would represent 0 dimensional arrays by including a grid (or an
> axis) for each dimension, showing which dimensions you are using.
> 
Yep that is pretty much a given, although the most popular way of thinking of 
arrays is the egg crate and its lack of axis representation separate from the 
value of the cell creates some real challenges when it comes to empty vectors 
in multiple dimensions. 

> For dimensions greater than three, we mostly have too many options:
> 
Certainly too may options if we decide to choose different ways of representing 
the same array without a good rationale for the choice. The representations 
could easily become a visual Tower of Babel.

> We can box some dimensions, representing them as fine structure.
> 
If you mean by box, to hide some of the dimensions in a box and thus simplify 
the representation to the viewer, this was not a direction I chose because it 
is hard to know which dimensions the user would prefer to see initially and it 
would involve extra work for them to change the view.

> We can use a non-othogonal presentation of dimensions.
> 
I think that this is closer to the direction that I chose, if I understand your 
use of 'orthogonal' to mean that the dimensions would need to remain 
independent in how they affected the representation. My choice was to enclose 
each group of 3 dimensions within a cube and then use these cubes to build 
higher dimensions. Once you get above 6, things start to get messy and so the 
challenge becomes what you can leave out without creating ambiguity.

> We can represent a dimension as time, in some contexts.
> 
I didn't go this direction for a couple of reasons. One is that the time 
constraint creates the same issue as the fine structure argument above. You 
need to guess right to reveal a structure over time to a viewer effectively. If 
you start to reveal parts of the structure that the viewer is not interested 
in, then they have to interact to change to a different time based view. I 
think that if the interactivity can reach the level that the viewer is able to 
'fly' through the data structure then the time dimension compresses into the 
present moment and we are back to an orthogonal view augmented by 
interactivity. 

> Note that J uses a variation on the first option when displaying
> arrays.  Dimensions above 2 become larger pages containing the
> remaining dimensions.
> 
I really came to appreciate the economy and elegance of  the J text 
representation as I played with array visualization. The textual version 
remains the best way to see the values of the atoms within the array, but it 
does this at the price of showing you all facets of the structure 
unambiguously.  This is where textual J is challenged as well since without 
using # or $ it is impossible to see a difference between scalar 6 and vector 6 
of length one. 

> Note that "3 dimensional images" use the second option, representing
> perspective on a flat image.
> 
Yeah, it is a bit of a revelation when you understand that really you are 
projecting the structure onto two dimensions and our (innate?) ability to 
understand perspective makes you think that you are actually working in 3 
dimensions.

> And of course, the third option needs a non-static media, of some sort.
> 
Beyond non-static, I think that it requires interactive media, since you want 
to avoid the issue of having a movie play to its end before you get a chance to 
change the view.

> Are you comfortable using any of this?

Comfortable was not the word that came to mind. There are a great many 
compromises that need to be made in order to show only what needs to be seen in 
a way that is unambiguous. This is why I came to appreciate the choices that 
textual J has made. In hindsight they seem obvious, but that is why they are 
brilliant. 

I am interested in pursuing this at some point, probably using SVG or some 
other web based tool to increase accessibility across platforms.  I think that 
combined with Henry's recent grid representation using dissect 
http://www.jsoftware.com/jwiki/Addons/debug/dissect , there is a real 
opportunity to move the 'feel' of J from 'programming' towards 'playing'.

Cheers, bob
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to