> I gave an example of opening an existing structure and modifying it in the comment you're replying to.
Sorry, I misunderstood what you meant by "subtle gesture" there.
Anyway, in the original comment you said:
> Data structures are shapes. A shape is better drawn than described in text.
I'll grant you that speaking + gestures may not be a bad way of entering and manipulating small data structures and preforming simple operations. But until we have a technology that can recognize speech and gestures reliably and accurately (and tablets with OSes that don't lag and hang up for half a second at random), physical keyboards will still be much faster and much less annoying.
But I still doubt you could extend that to more complex editing and navigating tasks. Take a brief look at the things you can do in Paredit:
Consider the last three or four subsections and ask yourself, how to solve them with touch, gestures and speech. Are you going to drag some kind of symbolic representation of "tree node" to move a bunch elements into a sublevel? How about splitting a node into two at a particular point? Joining them together? Repeating this (or a more complex transformation) action 20 times in a row (that's what a decent editor has keyboard macros for)? Searching in code for a particular substring?
Sure, it can be done with the modes of input you're advocating, but I doubt it can be done in an efficient way that would still resemble normal speech and interaction. There are stories on the Internet of blind programmers using Emacs who can achieve comparable speed to sighted ones. This usually involves using voice pitch and style as a modifier, and also using short sounds for more complex operations. Like "ugh" for "function" and "barph" for "public class", etc. So yeah, with enough trickery it can be done. But the question is - unless you can't use the screen and the keyboard, why do it?
> Like in a DOM? Easily: grab it and move it, just like you do it in DevTools today, except with your hands rather than a mouse.
DevTools are a bad example for this task. Using keyboard is much faster and more convenient than mouse. C.f. Paredit.
> But until we have a technology that can recognize speech and gestures reliably and accurately (and tablets with OSes that don't lag and hang up for half a second at random)
Totally agreed. Theoretically, you should just be able to gesture a list with your hands and say "joe mary dave" and the software knows from your tone that's three items and not one.
I don't know that much about lisp and s-expressions asides from that it can edit it's own AST. That's not a way of avoiding the question, it's just my own lack of experience.
> Are you going to drag some kind of symbolic representation of "tree node" to move a bunch elements into a sublevel?
Yes, I already think of a tree of blocks/scopes when editing code with a keyboard, visualising that seems reasonable.
> Repeating this (or a more complex transformation) action 20 times in a row (that's what a decent editor has keyboard macros for).
Here's the kind of stuff I use an AST for: finding function declarations and making them function expressions. I imagine that would be (something to switch modes) "find function declarations and make them function expressions". Likewise "rename all instances of 'res' to 'result'" with either tone or placement to indicate the variable names. More complex operations on the doc would be very similar to complex operations in the doc.
> Searching in code for a particular substring?
Easy. Have a gesture or tone that makes 'search' a word for operating on the document, not in it.
> Sure, it can be done with the modes of input you're advocating, but I doubt it can be done in an efficient way that would still resemble normal speech and interaction.
Yep, I don't think it would still resemble normal speech and interaction either, the same way reading code aloud doesn't. It would however be easier to learn, removing the need to type efficiently as well as the (somewhat orthogonal) current unnecessary ability to create syntax errors.
> DevTools are a bad example for this task. Using keyboard is much faster and more convenient than mouse. C.f. Paredit.
Not sure if I'm reading you correctly here: typing DOM methods in a keyboard in devtools is obviously slower than a single drag and drop operation. Using hands to do it directly is obviously even faster with the mouse.
Stepping back a little: I guess some people assume speech and gestures won't get significantly better, I assume they will.
Sorry, I misunderstood what you meant by "subtle gesture" there.
Anyway, in the original comment you said:
> Data structures are shapes. A shape is better drawn than described in text.
I'll grant you that speaking + gestures may not be a bad way of entering and manipulating small data structures and preforming simple operations. But until we have a technology that can recognize speech and gestures reliably and accurately (and tablets with OSes that don't lag and hang up for half a second at random), physical keyboards will still be much faster and much less annoying.
But I still doubt you could extend that to more complex editing and navigating tasks. Take a brief look at the things you can do in Paredit:
http://pub.gajendra.net/src/paredit-refcard.pdf
Consider the last three or four subsections and ask yourself, how to solve them with touch, gestures and speech. Are you going to drag some kind of symbolic representation of "tree node" to move a bunch elements into a sublevel? How about splitting a node into two at a particular point? Joining them together? Repeating this (or a more complex transformation) action 20 times in a row (that's what a decent editor has keyboard macros for)? Searching in code for a particular substring?
Sure, it can be done with the modes of input you're advocating, but I doubt it can be done in an efficient way that would still resemble normal speech and interaction. There are stories on the Internet of blind programmers using Emacs who can achieve comparable speed to sighted ones. This usually involves using voice pitch and style as a modifier, and also using short sounds for more complex operations. Like "ugh" for "function" and "barph" for "public class", etc. So yeah, with enough trickery it can be done. But the question is - unless you can't use the screen and the keyboard, why do it?
> Like in a DOM? Easily: grab it and move it, just like you do it in DevTools today, except with your hands rather than a mouse.
DevTools are a bad example for this task. Using keyboard is much faster and more convenient than mouse. C.f. Paredit.