What operation could you possibly perform significantly faster in a gui than on the command line? I can think of tons that would be far, far slower in a gui.
> to me using a GUI is more of a mark of valuing one's time than that of a novice
I would argue the exact opposite. GUIs are there to make things accessible to non-power users. A command line is just infinitely more expressive and will let you be much more efficient if you learn to use it effectively.
With nearly every program that I use I start by depending heavily on the GUI and then transition to using almost exclusively keyboard shortcuts as I become a power user, as GUIs are fundamentally inefficient.
Sticking to the Git example: - visualising history (in gui it is just there) - opening old versions of files - visualising a complete log of a file and then jumping to individual diffs/commits
The fact that in a decent GUI everything that could possibly be a link is, is very useful. I do not ned to go around copy pasting SHA1 sums. I drop down to command line when I need an occasional filter-branch or do some arcane incantations. But maybe Git is a bad example because it has a notoriously bad CLI.
Some other example, debugging. For me it seems that you can actually see whether a programmer uses a visual debugger or a cli. If they have to drop down to GDB then their code will most probably be sprinkled with useless debug macros.
Setting break points, jumping from function to function is easier with visual debugger and a good IDE. (note that the IDE can be emacs or vim running in a terminal session for what I care)
> With nearly every program that I use I start by depending heavily on the GUI and then transition to using almost exclusively keyboard shortcuts as I become a power user, as GUIs are fundamentally inefficient.
Keyboard shortcuts are awesome of course, but I think they are so efficient because there is a GUI around. In a GUI you can always see more state at the same time. This is because graphics can sometimes pack more than text in the same space (e.g.: a visualised Git tree or a graph spitted out from callgrind)
Need to pull some new code though, or commit changes? I think "git pull" or "git ci -m 'Message'" is faster than opening up a complicated GUI window with lots of decisions to make.
To me, using CLI is like having a conversation, with much richer vocabulary, than GUI. That's just pointing at things.
I think your conversation metaphor is good, but in a GUI the answer can be richer and interactive. A CLI can only manipulate text, a GUI can manipulate text where necessary and use a better medium (images, graphs, tables) where necessary.
CLI does not need to manipulate text only necessarily, see the command line in AutoCAD for example.
But yes, GUI in many cases is a better way, I wouldn't want to have cli-only Photoshop-like app (or even cli-only CAD modeller). The point is to recognize effectivity of both approaches for a given problem, at the given abstraction level.
There would be no point in micromanaging the car using a limited vocabulary.
Sometimes it is better to mass delete files with a find, grep and rm, sometimes an auto-filtered search and cmd+a cmd+delete is better.
A lot of the CLI usage feels fast because its busywork.
I wonder. Every time I see a colleague using command line to do git operations I get itchy and think to myself "oh, come on! I could've done this in gui in seconds". Each interface has its time and place, but to me using a GUI is more of a mark of valuing one's time than that of a novice.