But in those programmes, the GUI is more like a keyboard of a CLI than the actual programme. The GUI controls are used as tools to use on the main area, the drawing area. A graphical programme like photoshop presents you with a massive empty whitespace for you to draw in. It doesn't tell you where to draw, or what colour to draw. It allows you choose any colour you want. Once you paint some red, you can then paint any other colour.
In this way the programmes you list confirm the "unbounded, "lack of constrains" and "newbie unfriendlyness" of the CLI.
A newbie doesn't know what commands to type into bash, and they don't know what colours to put down first in photoshop.
I'm sorry but the basic premise of GUIs being limited and CLIs not is just completely wrong.
It is just not an apt analogy if it requires you to claim that Photoshop is more CLI than GUI. That’s so freaking absurd.
Well, I guess I should have picked up on that when reading your last paragraph where you imply that everything that’s hard to use is also a CLI.
Long ago I used Autocad regularly for work. When someone gets really productive with it they tend to use one hand on the keyboard for selecting menu items and typing short CLI commands and the other for picking points and dragging selection boxes.
That kind of interface really does attempt to combine the best of both worlds, but at the expense of a big learning curve.
I’m not trying to bring down CLIs here. What I don’t like, though, is how the author of the article tries to bring down GUIs to prop up CLIs. That’s just not necessary. GUIs are used by so many people to express themselves and it’s patently absurd to claim otherwise.
Software seem too malleable to me to characterize it in such broad strokes.
Plus the underlying reactive dataflow model is like a limited mathematical language. The gap between GUI and CLI is short here. So even without relying on text, you still can build operators (Houdini does this to a great extent, even the skeletal system is build out of user-level geometric primitives)
Some software that took the growable GUI a step forward is Luxologic Modo, here GUI tools are combinators that you sequence in a `toolpipe` to suit your needs, kinda like building a function out of lower level ones.
I agree with jpalomaki (http://news.ycombinator.com/item?id=3154076) there's room for different and more linguistic GUI.
To finish on a blurry note : text doesn't exist, bytes lead to intepretation/action aka a function of the application model, I see no real reason that visual interactions can't be made 'linguistic'
We are not talking about end products of this communication between computer and person, its output which could be images or software you created with the computer and which also allow you to express yourself in the more broader sense.
Of course, I'm drawing graphs and geometric objects, not trying to do "photo work" - but CLIs can be an excellent interface to some kinds of graphics.
By the way, there are some great CLI tools (like ImageMagic) to manipulate images from the CLI and these are indispensable for batch editing large collection of images and other applications (image analysis), but I was not referring to that.
Anyone can pick examples that make the discussion go nowhere. That's why this discussion never feels like it makes any progress.
That's my point - just because it's the wrong tool for some hyperspecific job doesn't imply anything useful in general.
But if you really want to pursue the analogy, we could in fact come up with a command line that selects the green color value from a certain area of an image a lot easier than one could edit a non-image file using MS Paint (though I've seen that done too).
GUIs can be and are widely used for expression. I already listed many examples that touch on wide array of human creativity and creation.
I’m not trying to bring down CLIs. I take issue only when people claim that GUIs are not for expression.
Why does Photoshop have to be good at word processing in order for it to be a valuable tool for expression?
But Photoshop is an example of something that's particularly good for the GUI. It's not representative of most things that people do when they're interacting with a computer.
GUIs and CLIs are for expression.
He pushes this topic by talking about Unboundedness vs Boundedness and Internalization vs externalization. What he seems to fail to realize is that internalization and unboundness are not properties inherent to CLIs nor is externalization and Boundedness inherent to GUIs. Those properties are a function of how you designed your application and user interaction not the medium by which it is accomplished.
Zillion lines of text scroll by
swear
>man paint | less
go through 10 pages of text before finding the /pickcolour command
>paint /pickcolor /x 123 /y 843
how the pixel position was found is left as an exercise for the reader
option pickcolor not found
curse and rerun the man and scroll through all the pages again
realize it's /pickcolour and not /pickcolor
>paint /pickcolor /x 123 /y 843
red gets selected
after more furious rtfm'ing and Bing'ing(on Lynx of course), realize pickcolor uses coordinate calculation from the bottom right and not top left
When you need to do this again in a month, forget the command and the spelling and repeat all of the above again.
But is a Photoshop-like GUI the best UI for anything else?
Furthermore, don't some of those high-end packages you listed include a CLI component too?
Now, a lot of what I do is adding (and tweaking!) effects and filters bound to shapes, selections (most often based on shapes) and layers, it would be harder to create an efficient CLI to _draw_ arbitrary shapes, but I don't used Photshop for that anyway.
It isn’t. Why should it? Is a hammer the best tool for anything but hammering?
“Furthermore, don't some of those high-end packages you listed include a CLI component too?”
I’m not sure how that’s relevant. I have no issue with CLIs or the way the author characterizes them. CLIs can be wonderful tools.
It'd probably be useful to pick some other examples to discuss.
Things that humans create with software:
– Text
– Images
– Sound
– Video
– Algorithms†
All those elements can be glued together in different ways. Images and text, for example, can be glued together to create a magazine or newspaper layout. Text, images, sound, video and algorithms can be glued together to create a video game. Separate software for gluing stuff together is quite common. (You don’t really write and edit texts or edit images with InDesign but you bring texts and images together.)
Maybe I’m wrong about this but it doesn’t seem to me as though GUIs are the exception or a special case. They seem to be quite common.
—
† I’m not sure about this one. I think it deserves an extra category even though most people use text to create them. It seems wrong to me to put novels and algorithms in one category, it would be a disservice to both.
There are different ways of looking at this. In some way video and images are one and the same – you get video from glueing images together. It seems, however different enough to deserve its own category. Algorithms seem similar to me.
Maybe you can help with this, the author certainly didn't.
Let me try:
Firefox vs. Lynx
IDE vs. makefiles/make/compile
Word. vs Latex
Excel vs. ????
Outlook/Gmail vs. Pine?
Does one of those encourage expression over operation? Probably the closest is Latex, but still I don't see how it would be more expressive than what someone who spends equal time learning Word would accomplish with Word.
Because Lynx (except for its dump mode) and Pine address characters on the screen in two dimensions, I consider them to be graphical programs. They are just very limited graphics. There is a difference between a program which displays text on the screen and a program which prints its output to stdout.