s/intuitive/discoverable/
GOOD GUIs are nice for discoverability, and the same is true for CLIs. There are many GUIs that are absolutely horrid, which rely on non-obvious icons or assume certain usage styles and offer no assistance if you don't have the same background assumptions as the GUI's creator.Having used many different types of programs over the last ~30 years, I have wasted far more time with bad GUIs than I have with bad CLIs. At least with the CLI I can grep the output or documentation for what I want. I cannot grep a menu or GUI form to find some option I've forgotten the name of.
What this comes down to is that it is fairly easy to make a good GUI for simple things, and good programmers can make a nice GUI for the moderate and complex tasks. This is where discoverability is primarily useful, as it assists the inexperienced user and the dilettante.
For those of us that want to use our computer in a far more serious way, what the UNIX style CLI (shell) provides us is an interface that is still very learnable (IFF you invest in the time it takes to read the documentation!), that enables crafting commands that are simply not practical in any GUI. If you don't believe this, tell me how I can, for example:
- recursively walk an arbitrary directory tree of images at ($SRCDIR)
- except for any dirfectgory that ends in '.backup'
- finding any file that is NOT a PNG,
- convert that that file into a PNG
- but saving the new files in new directory tree ($DSTDIR),
creating any necessary parent directories
That would be a mess in any GUI. In bash + imagemagick, it would be: for i in "${SRCDIR}/**/!(*.backup)/!(*.png) ; do
dst="${DSTDIR}${i#${SRCDIR}}"
mkdir -p "$(dirname "${dst}")"
convert "${i}" "${i%.*}.png"
done
Yes, that's ugly, but at least it is possible.Visual Studio introduced a few years ago a fully searchable GUI, which I think is a great idea. There is search box at the top and it will search through menus and options. Windows 8 started doing this too for some control panel functions but it is very incomplete.
After having successfully located the snippet, only too often I have discovered that it does not do exactly what I want right now. Then I am left with the choice of changing the past script to also fit the new purpose, without destroying the previous work.
All this mental effort to save yourself three lines of typing seems a questionable endeavor. I have come to love the throwaway scripts.