| This might be slightly off-topic, but am I the only one that thinks that command line tools are archaic with some pretty serious drawbacks? I see and acknowledge the power they can wield in the right hands, but for mere mortals it's a terrible experience. Especially on a windows box. I've started learning Symfony2, and the default is to get it up and running using the dependancy manager composer, a commandline based tool. I've spent a week trying to finish the simple task of installing the framework. No success. Now, I don't make a living programming, so I'm definitely at the shallow end of the programming pool. But still. A week. There are several problems as I see it: - No discoverability. You are given no clues whatsoever as to what commands are available to you. You have to know exactly what you want to do. Yes, you can read manpages, forum posts, etc. but finding, learning and memorising a whole set of commands used in some program you might never use again seems like a terrible waste of productive time. Without the manual you're flying blind. - All sorts of opaque dependencies. Composer for instance apparently requires git installed for it to work. But it doesn't say that anywhere. You also need to define paths, etc. which isn't covered anywhere. - A million minor flaws and bugs. Until now I've run up against at least a few bugs, either in composer or in some other part of the chain of software. Only opaque general warnings are given, and finding out exactly what is wrong is next to impossible. - Terrible UI. Copying and pasting doesn't follow convention, copying from a commandline to a notepad inserts linebreaks that you have to clean up manually, there's no way to maximise the cmd.exe window. The list of basic usability flaws goes on. This isn't meant as trolling or ranting, although I must say I'm genuinely alienated by the commandline. I understand that text is great way for programs to talk to each other, I understand that the commandline is a great way to talk to a remote server, and I understand the power that piping, etc. gives you, so it's not like I'm denouncing the power that's inherent in the tool. The problem is that the learning curve is tremendously steep, and I just don't feel it's worth it. To do the simplest thing I need to learn how a whole ecosystem works. I also have to page the information I need together from a number of different sources that I first have to find. It's kind of like having to build a car just to ride down to the baker to get some bread. It's quicker to walk than assemble a car before you can drive. |
You've asked the question and answered it yourself ;-)
Using a GUI over the CLI is probably preferred for 90% of the tasks 95% of the users typically perform. I don't agree with all the drawbacks you listed, but I can see where they are coming from. The CLI is simply not so great for typical computer users.
That said, a good CLI is absolutely invaluable for power users, system adminstrators, developers, etc. There's only so much you can conveniently do through a GUI, as soon as you need to compose multiple complex actions into a script or perform advanced data extraction, search operations, automate tasks, etc. there really is no alternative for a good CLI.
The funny thing about a powerful CLI is that it isn't very accessible unless you invest quite a bit of time mastering it, but once you do, you'll find out that you can do many (most?) things more efficiently by typing up commands and composing them into scripts. Once you get proficient using the CLI, you'll find yourself using the CLI for all kinds of things you used to do through a GUI before. For example selecting and copying around files or extracting archives, personally I think CLI tools (in my case unix CLI tools) to be much more flexible and convenient than something like WinZip.
But just like most people will never use their computer to write scripts or computer programs, they will also never invest time in learning the CLI. And usually they don't really need to anyway, just like most people don't need (or want) to learn how to change the oil on their car themselves, no matter how easy it is if you know how to do it. It's not something they enjoy learning about, but that doesn't mean changing oil is useless or difficult.
The lack of a proper CLI in Windows 9x and XP has always bothered me a great deal, as a developer and power user. It was one of the main reasons to switch to Linux and later OS X. Apparently these days Windows has a pretty good CLI with PowerShell, but the Windows train has already departed a long time ago for me. But it's still a good thing Microsoft finally decided they had to provide power tools like a CLI, it's one reason less blocking me from every going back to Windows (a lot of others still remain though ;-)