
Image via Wikipedia
A few weeks ago an article was posted in a website about how CLI is a backward way of interacting with a computer, citing “C-prompt” as an example. Then (as expected) as huge swarm of CLI-huggers strikes back. Some gave technical counter-arguments, most of the others however resorted to using one of the classic and cliche arguments about CLI is “it’s no C-prompt”, citing the UNIX CLI’s superiority and stuff.
In any case no matter how CLI-huggers deny it, C-prompt is indeed a CLI. I wonder why bother to deny it and why bother to compare one is better than the other when they’re generally the same? They refused to acknowledge C-prompt as CLI but C prompt is undeniably CLI. They denied it just because it’s not as powerful as UNIX CLI, but that is just a proof that CLI is not always more powerful than GUI. They can be more powerful or less powerful depending on how they’re made. That said, the same design principle also applicable to GUI. It can become more powerful than UNIX GUI, if they’re done right.
UNIX GUI is just an example of CLI-done-right, yet it’s not the proof that CLI is always superior. C-prompt’s existence is enough to tell the world that there existed an inferior CLI.
CLI in equivalent to the real world is rods in neighborhood without the signboards. You have the address but you have to know exactly where to take turns to reach your destination. You’re lucky if you have the map with you but without it you wouldn’t know where to start. GUI on the other hand is like the road signboards. Even if you don’t have the map, as long as you know the address you’d be able to reach your destination.
Yet another cliché argument by CLI-huggers is “GUI can’t do many things that CLI can”, implying that it’s impossible for GUI to do everything that CLI can do. That is lame. Why? Say there are 2 chefs battling against each other in a culinary challenge. Chef A has a grille set and a cooker. Chef B has a cooker and an oven. Chef A prepared grilled beef because he has the tool but Chef B prepared something since he has no grille set. In that situation are you saying Chef B incapable of preparing grilled beef? He only didn’t have the tool. Give him the grill set and he’ll be able to do the same thing. The same also applies to GUI. A GUI being incapable of doing things is not the weakness of the GUI itself but because the necessary tools aren’t made available for it.
Despite all the rages by CLI-huggers, they never clearly tell which part of CLI that can’t be substituted by GUI. Instead they only gave vague answer like “it’s just impossible” repeatedly, even gone as far as citing lame arguments like “things you can’t do with a GUI”, as if there’s nothing a CLI can’t do. As far as I understand, as long as it’s just textual command, it can be replaced by GUI, unless you’re saying that texts can never have graphical representation. That said, what else CLI can do other than processing textual commands? I found no technical restriction in transforming CLI into complete GUI. The only limiter is the programmer.
Now into a more personal matter, what didn’t I like about CLI? Or rather why I prefer GUI over CLI? Referring to the analogies I’ve given above, GUI is easy enough to figure out how to move about in with a couple of minutes of experimentation. Most of the time I never had to out any documentation. It would be fine if CLI commands are “figurable” using only common sense (like if they mimic real life conversation). Entering system specific and syntax strict is a pain especially for those who aren’t into programming. Take note, MOST people only want to use computer to make it work for them, not to make themselves work for their computers.
The GUI usually built on object-oriented design. Why not also have a CLI that does that? I mean as far as I know, there’s no CLI designed that way (correct me if I’m wrong). Most of the CLI commands and syntax doesn’t actually make sense. Well, at least not for me the joys of grokking grep, egrep or furtling with fsck, or ambling around awk. No, I used commands like “find_file” and “fix_partition” and, well, I never did find an equivalent for awk; possibly because awk is such a sad, anoraky waste of time and space. Maybe VOS had a command called “waste_your_time_and_space,” but if so, I was never tempted.
Now back to the CLI vs GUI thing. I can’t stand how it infuriates CLI huggers. They said “You’ll never learn anything about your computer like that!”, as though anybody really wants or needs to learn such esoterica. And as though it’s vitally important to understand that the “*” in a find ./ -file “foo*” (it’s a file-name glob) is actually not the same thing as the “*” in an xargs grep “foo*” (it means zero or more repetitions of the second letter ‘o’). Yes, that’s l33t knowledge for you.
I admit that there are things you can do with a CLI that you can’t do with a GUI (at least, not without significant contortions). There shouldn’t be, in fact it doesn’t have to be like that but (sadly) there are. Well, it’s not because it’s impossible but because there are people who are still too stupid to accept that the idea of GUI going to replace CLI. Don’t tell me about the automation and scripting crap. They are only for minorities, which I believe should not interfere with general computing affair at large. After all majority computer users are just users, and we can’t expect or force them to embrace CLI just because we as sysadmin think it’s superior. You may think that politics has nothing to do here but sadly it has to be that way. Otherwise computers would just remain as geek’s toy (like Arduino) and would never went mainstream. (No mainstream computing means no gaming/multimedia for you. How’s that sound, you CLI freaks?)
My final words, for me an operating system without GUI is incomplete, perhaps not worth or qualified to bear the “operating system” title.