5 ms·
The command line is a bicycle skills. Any programmer should learn it.
by pdelgallego 14y ago
The command line is a bicycle skills. Any programmer should learn it.
- stephengillie 14y agoDo some people really find the command line so difficult to use? I'm quite the opposite so I have trouble believing it. Maybe it's because the default black background makes it feel like we're throwing our commands into a "magical pit inside the computer", and waiting for the output, which will be an error unless the commands were perfect. That perspective is unpleasant. Maybe it would be helpful to visualize a GUI while using the command line, where instead of clicking on a menu or button, you have to type its name.
- RegEx 14y agoThe command line isn't difficult, but sometimes it's difficult to convince someone who has never "needed to use the command line" that they should give it a shot.
- ibotty 14y agounix is very user friendly, it's just picky who it's friends are... (having said that, with unix you can be extremly productive and it is (more or less) designed to be easily understood once you grasp some concepts.)
- prawks 14y agoI believe the reason people feel it's difficult is that a blank prompt is inherently not intuitive. There's no way you can hand someone a command line interface with an empty prompt and let them fiddle with it. They need to know what to type to start doing what they want to do beforehand, there's no way you can really "experiment" when you don't know where to start. It's very similar to many mainframe interfaces with non-intuitive commands. Many legacy IT departments have these. Questions like "How do I do X?" have answers from experts like "Type XKY= and then hit PF3". But that sequence of steps is nowhere on the current screen's list of commands, or in it's help documentation. You just need to know it. This is in contrast to a GUI where every single thing you can do (aside from keyboard shortcuts) is visible. I can hit a random button and see what happens. In a CLI, there are too many possible alphanumeric strings to try, so I can't do the same thing. (This is of course different if the prompt is not blank, and says "Type 'help' for help")
- agumonkey 14y agoThose shells still inherits genes from the terminal era where metacircularity wasn't affordable. Emacs got a free meal from lisp so it can inspect itself and suggest to the user even in command line style. Recent shells have done good efforts to provides some kind of typing and deduction to reduce friction. It's always nice to have a listing of /etc/hosts or ssh known hosts in place. Browsers picked this since the coming of 'smart' url-bars. I hope one day we would go all-alan-kay on this and simply have a meta-capable system that parse/cache relevant data straight from the source so you don't need to do any extra work to make the system understand a bit your additions.
- kaybe 14y agoIt's even less fun when the computer talks in English and you don't - no guessing keywords. (as happened to me when I was a kid.)
- mechanical_fish 14y agoDo some people really find the command line so difficult to use? Yes. Very yes. To the point where, when you say "some people", what you really mean is "most people". I don't think the problem is "the command line" so much as it is "the Unix command line". You don't see a lot of people having difficulty with text-adventure command lines. You demonstrate HELP and GET LAMP and they're off to the races. Whereas Unix commands are hard to discover unless you already know their names, have illogical names, have inconsistent behaviors, have poorly designed documentation (every command has 27 options and they're often documented in alphabetical order on man pages, with the obscure corner-case options given equal weight to the most useful ones), require combinatoric thinking (because many options can be used at one time), take invisible actions ("gzip foo" returns no output and modifies a file in your current directory; you need "ls" to see that it did anything), are context-dependent (you need to know what a "working directory" is or you won't get past square one), and often require a working knowledge of pipes and redirection to be useful (and pipes and redirection aren't intuitive skills). You need to read a book. Nobody has time to read books. Reading books is a bicycle activity.
- Splines 14y agoIt would be interesting to use a command line interface that acted like a text adventure game. > get file.txt YOU PICK UP THE FILE > inventory YOU ARE HOLDING: file.txt > gzip file.txt FILE.TXT HAS BEEN COMPRESSED > inventory YOU ARE HOLDING: file.txt (compressed) > drop file.txt YOU CAN'T PUT THAT HERE, THERE IS ALREADY A FILE.TXT HERE > rename file.txt file.txt.gz FILE.TXT HAS BEEN RENAMED > drop file.txt.gz YOU PUT DOWN FILE.TXT.GZ Obviously not ideal, but at the very least the idea of inventory-as-clipboard would be useful on the command line.
- stephengillie 14y agoThat's a very fun idea you have there :)
- PotatoEngineer 14y agoYou are in a twisty set of deeply-nested directories.
- drcongo 14y agoThis is an interesting point. My experience is that a lot of people find the command line scary, as they never quite feel in control. I wonder if it's possible to create the command line equivalent of LightTable. Something that visually shows the user what their command is doing, or more importantly, about to do.
- Tloewald 14y agoBack in the 90s Apple had MPW (a command line development environment) and AUX (its own UNIX implementation for 680x0 Mac hardware). Both featured Commando (type a command followed by an ellipsis and hit ENTER and visual dialog would appear letting you condfigure the command). When you clicked OK (or hit return) the resulting command would be typed into your window. MPW also allowed you to differentiate between target and command windows very easily, so you could keep your favorite commands handy and have the output funneled to other views. Not Lighttable, but a lot more useful than man pages in 99% of cases and pretty darn nice.
- drcongo 14y agoThanks, I'd not heard of that.
- Tloewald 14y agoBack in the 90s Apple had MPW (a command line development environment) and AUX (its own UNIX implementation for 680x0 Mac hardware). Both featured Commando (type a command followed by an ellipsis and hit ENTER and visual dialog would appear letting you condfigure the command). When you clicked OK (or hit return) the resulting command would be typed into your window. MPW also allowed you to differentiate between target and command windows very easily, so you could keep your favorite commands handy and have the output funneled to other views. Not Lighttable, but a lot more useful than man pages in 99% of cases and pretty darn nice.
- Derbasti 14y agoJust today I had a discussion with one of my colleagues. There are tons of people (most of whom matured when Windows was hot), who simple weren't exposed to the command line ever. Teaching Git to them is torture for both the teacher and them. Anything about scripting is magic. It's tough.
- Kiro 14y agoWhy? I still haven't found a tool which doesn't have an equivalent GUI.
- JoelMcCracken 14y agoDo you use both? Edit: I wanted to add a few more comments. Someone mentioned scriptability, also composability, speed, "multitaskability".
- tsahyt 14y agoOne word: Scriptabilty. I still haven't found a properly scriptable GUI. On the command line I can automate almost everything and customize it to my needs. Additionally I'm way faster on a CLI for almost any task I do as a programmer on a regular basis than with any GUI. For me personally, not just tasks I do when programming, but almost anything I do on a computer. The graphical display capabilities are merely a way of displaying content for me (PDFs, web-pages, etc.). Obviously, if you're dealing with graphical content you want a GUI though.
- dbecker 14y agoThe point isn't that you can do more with the command line, the point is you can do them so much faster.
- recursive 14y agoI haven't found that to be the case.