[Semi OT] The programming language wars

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Sat Mar 21 08:44:44 PDT 2015

On Sat, Mar 21, 2015 at 03:10:37PM +0000, John Colvin via Digitalmars-d wrote:
> On Friday, 20 March 2015 at 17:25:54 UTC, H. S. Teoh wrote:
> >But at another level, it's not even about keyboard vs. rodent... it's
> >about *scriptability*. It's about abstraction. Typing commands at the
> >CLI, while on the surface looks so tedious, actually has a powerful
> >advantage: you can abstract it. You can encapsulate it into a script.
> >Most well-designed CLI programs are scriptable, which means complex
> >operations can be encapsulated and then used as new primitives with
> >greater expressiveness.
> >
> >Sure you can have keyboard shortcuts in GUI programs, but you can't
> >abstract a series of mouse clicks and drags or a series of keyboard
> >shortcuts into a single action. They will forever remain in the realm
> >of micromanagement -- click this menu, move mouse to item 6, open
> >submenu, click that, etc.. I have yet to see a successful attempt at
> >encapsulation a series of actions as a single meta-action (I've seen
> >attempts at it, but none that were compelling enough to be useful.)
> >You can't build meta-meta-actions from meta-actions. Everything is
> >bound to what-you-see-is-all-you-get. You can't parametrize a series
> >of mouse interactions the same way you can take a bash script and
> >parametrize it to do something far beyond what the original sequence
> >of typed commands did.
> >
> >Ultimately, I think rodent-based UIs will go the way of the dinosaur.
> >It's a regression from the expressiveness of an actual language with
> >grammar and semantics back to caveman-style point-and-grunt. It may
> >take decades, maybe even centuries, before the current GUI trendiness
> >fades away, but eventually it will become obvious that there is no
> >future in a non-abstractible UI. Either CLIs will be proven by the
> >test of time, or something else altogether will come along to replace
> >the rodent dead-end with something more powerful. Something
> >abstractible with the expressiveness of language and semantics, not
> >regressive point-and-grunt.
> >
> >
> >T
> In general I'm in agreement with you, but I think there *is* a place
> for more visual structure than a terminal editing a text-file can give
> you (essentially 1-D or maybe 1.5D, whatever that means). Some
> models/data/tasks are inherently more intuitive and quicker to work
> with in 2D.

Certainly, some tasks are more suited for 2D, or even 3D, manipulation
than editing a text file, say. But just because task X is more
profitably manipulated with a 2D interface, does not imply that *every*
task is better manipulated the same way.

But at a more fundamental level, it's not really about text vs. graphics
or 1D (1.5D) vs. 2D. It's about the ability to abstract, that's
currently missing from today's ubiquitous GUIs. I would willingly leave
my text-based interfaces behind if you could show me a GUI that gives me
the same (or better) abstraction power as the expressiveness of a CLI
script, for example. Contemporary GUIs fail me on the following counts:

1) Expressiveness: there is no simple way of conveying complex ideas
like "from here until the first line that contains the word 'END',
replace all occurrences of 'x' with 'y'". A single sed command could
accomplish this, whereas using contemporary GUI idioms you'd need to
invent a morass of hard-to-navigate nested submenus.

2) Speed: I can type the sed command in far less time than it takes to
move my hand to the mouse, move the cursor across the screen, and click
through said morass of nested submenus to select the requisite
checkboxes to express what I want to do.

3) Abstraction power: I can parametrize said sed command, and put a
whole collection of such commands into a script, that I can thereafter
refer to by name to execute the same commands again, *without having to
remember* the individual details of said commands.

4) Annotative power: As somebody else pointed out, I can add comments to
a script explaining what is needed to perform task X, and why the given
steps were chosen for that purpose. This alleviates the need to memorize
obscure details about the system that you don't really care about to get
your job done, as well as serve to jog your memory when something went
wrong and you need to recall why things were done this way and how you
might be able to fix it. I simply cannot see how these kinds of
meta-annotations can even remotely be shoehorned into contemporary GUI

5) Precision: Even when working with graphical data, I prefer text-based
interfaces where practical, not because text is the best way to work
with them -- it's quite inefficient, in fact -- but because I can
specify the exact coordinates of object X and the exact displacement(s)
I desire, rather than fight with the inherently imprecise mouse movement
and getting myself a wrist aneurysm trying to position object X
precisely in a GUI. I have yet to see a GUI that allows you to specify
things in a precise way without essentially dropping back to a
text-based interface (e.g., an input field that requires you to type in
numbers... which is actually not a bad solution; many GUIs don't even
provide that, but instead give you the dreaded slider control which is
inherently imprecise and extremely cumbersome to use. Or worse, the text
box with the inconveniently-small 5-pixel up/down arrows that changes
the value by 0.1 per mouse click, thereby requiring an impractical
number of clicks to get you to the right value -- if you're really
unlucky, you can't even type in an explicit number but can only use
those microscopic arrows to change it).

A GUI that is NOT rodent-based would alleviate a large part of these
problems, actually.  I've been using Vimperator for my browser recently,
and in spite of its warts (mostly due to the fact that it's merely a
customization layer on top of an essentially rodent-dependent browser
core), it's proven to be a far more efficient way of using a GUI browser
than the rodent. Well, OK, it's hearkening back to the CLI days of modal
editors (y'know, vim), but it proves that it's not really *graphics* per
se that are the problem, but it's today's obsession with the rodent
that's the source of much of my complaint.


Just because you survived after you did it, doesn't mean it wasn't stupid!

More information about the Digitalmars-d mailing list