3 ms·
I think one of the tensions underlying this article and responses is a quite longstanding debate over the relative strengths of writing text and interactive edi
by mjn 13y ago
I think one of the tensions underlying this article and responses is a quite longstanding debate over the relative strengths of writing text and interactive editing for specifying and editing computations. Smalltalk was perhaps the first to take a strong position against writing text as the best way to do things, and instead pushed for an interactive system that just happened to have text as one component. A certain style of macro/DSL-oriented Lisp is perhaps the other end of the spectrum, which aims at coming up with expressive code interfaces to a problem (though there are also very interactive approaches to developing Lisp, going all the way to the extreme of image-based development where there actually is no easy way to recover the running image's source code). The Lisp impulse (in one flavor of Lisp dev) is to find a way to write a macro as a new interface to common patterns, while the tool approach is to find a way to write refactoring/manipulation/codegen interfaces to deal with common patterns.
Maybe some defenders of XML are one extreme in the tool-oriented direction; some explicitly argue that human-editable syntax doesn't matter, because concrete syntax is for machines, and how a human should input it is an interface-design question. I'm tempted to think some C++ advocates also have views along those lines.
Anyway I think a lot of these debates are about where exactly on that spectrum constitutes a sweet spot, so point to some fairly deep splits. I personally lean towards wanting expressive source code, and start getting suspicious when I'm shoveling around huge amounts of boilerplate with an IDE; I start thinking, why is this something I'm manipulating in an editor, rather than something that gets abstracted by a macro or language feature? But I still use a number of semi-automated things in vim, certainly the low-level stuff like variable-name completion and folding.