Hacker News new | ask | show | jobs
by jerf 4265 days ago
If the command line were underpowered, it would have been abandoned decades ago. It's still around precisely because it's incredibly powerful, and nobody has come up with a suitable replacement that doesn't involve sacrificing a lot of power.

Further, all of the "No, obviously this would work much better!"s have been tried already. Dozens of times, if not hundreds. Some of them you can even download right now. Nevertheless, the command line persists. It may not be perfect in every detail, but it's far harder to exceed than it seems at an initial, frustrated glance. If you hope to someday so replace it, it would be wise to understand exactly why that is, lest your effort completely fail in exactly the same way as so many prior attempts.

3 comments

It's not that the commandline is necessarily underpowered, imo, it's that the discoverability and intuitiveness of the *nix userland is pretty low. Man pages are a great way to document every flag a program accepts, but are a terrible way for someone to figure out some simple use case for the program. Similarly, flags are named without any regard for intuitiveness (-l is liable to mean different things for any program you encounter, and the precise meanings one program decided on can be hard to remember because there is no explicit commonality with any other tool).

In that sense, it absolutely is a user hostile design and it involves lots of unnecessary memorization.

It's unintuitive if you come from Window-GUI-land. It's plenty intuitive that should consult the manual within UNIX-land.

Remember, intuition is not some inborn instinct. It's a product of training. To a user of MULTICS, iOS is wildly unintuitive.

Yes, by no means consider my post a defense of every quirky detail of history. My point is more that one must start by correctly identifying the problems before one could hope to solve the problems, and "lack of power" is definitely not it.
The command line is the heart of Unix and Friends, which is why it wasn't abandoned decades ago. And it's almost impossible to replace the *nixes because of network effects and extraordinarily high costs.

The command line is "powerful" because it is "simple" in the sense that it doesn't really do anything for you. Commands have their own input and output syntax based on their needs and it's up to the user to figure out how to fit it together. I think one having standard serialization format, so that you wouldn't have to waste time learning and thinking about each command's special little syntax would be much more powerful.

I use command lines maybe once a month. For almost everything, it has been replaced. For those places it hasn't, I blame the tool for not automating some process that could have easily been automated.
I absolutely live at the command line, and when I'm forced into a walled garden I blame the tool for not properly exposing its functionality to the rest of the system so I can easily automate it the way I want it automated.

Edited to add:

Note that this isn't a claim that anyone else (in particular) is Doing It Wrong - it's what works for me, I'm sure there are other points in the space that work as well or better for others. That, itself, should not be taken as a claim that every point in the space is equivalent - that's not true either. What I do strongly refute is any notion that the command line is "under powered" in general.

Used to be me. But I got sick of remembering all the arcane stuff. Now its a pulldown menu away in an IDE.
That reads a bit odd.

"I used to be fluent in French. But I got sick of remembering all the arcane stuff. Now it's just pages away in a phrase book."

Probably you were never really fluent in French in the first place. Which is to say, you were never really entirely comfortable at the shell. Which is fine - as I said, I don't assert that it's the best fit for everyone. But for me, just like producing English doesn't feel like I'm "remembering arcane stuff" neither does producing Bash, even though I fully recognize that objectively both are plenty weird.

That's just wrong. I've written shells. I've written tools. I started in this business before IDE's existed. Some folks grow out of it, some stay because its so cool to know what all those switches mean.
"That's just wrong."

Please explain, rather than simply asserting.

"I've written shells. I've written tools."

I've written GUIs. That's pretty well unrelated to whether the interface fits you well.

"I started in this business before IDE's existed."

I don't see how that undermines my point. It would explain why you wound up using the shell despite it being a poor fit for you.

"Some folks grow out of it, some stay because its so cool to know what all those switches mean."

Veiled insults don't make your point stronger.

Some days I wish someone would have already created a tool to do all of the stuff I needed to do.
They did, you just have to do a bunch of command-line bullshittery to get it to work.
That day, no one will pay you to do what you do.