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
