> Another example: bash. Clearly an awful awful language/shell but it sticks around because too many people can't admit that the thing they know is rubbish.
You should try thinking about what a better bash would look like, it's not as simple as you make it to be. I think the best I've seen in this direction is rc and I think that's still not enough to compensate for the loss of ubiquity.
The stuff people come up when they try to "redesign the unix terminal" (usually some javascript contraption) is always extremely lacking.
It's not simple, but it's not hard to imagine. Some of these things exist already:
* Image support (I can't remember where I saw this but it exists)
* Structured data piping (in Powershell)
* Machine-readable command-line arguments, which would enable...
* ...Proper autocomplete (like in IDEs)
* Real types (Bash is 'stringly typed')
* Sanity (e.g. look at how `[` is implemented in Bash; none of that)
* A better way to integrate with programs than running them on the command line (e.g. shell bindings).
That last one would be tricky and really requires moving away from the C ABI as the Lingua Franca of libraries. That is probably quite far away in the future unfortunately.
Regarding (1), a proposal that had some impact was TermKit[1], which was supposed to auto-detect the type of data coming from stdout and display it intelligently. It died on the vine, though[2].
> You should try thinking about what a better bash would look like
It's kind of a "cheat," but I've been really happy playing with xonsh (which is essentially bash + ipython)[0]. Bash with better control flow and types... it's suddenly not so maddening anymore.
People forget, repeatedly, at length and often boisterously, that one of the fundamental points of bash is to continue to function when the rest of your machine is completely screwed up.
Loading an entire development environment into your CLI is ten tons of bad news in a five pound bag.
You should try thinking about what a better bash would look like, it's not as simple as you make it to be. I think the best I've seen in this direction is rc and I think that's still not enough to compensate for the loss of ubiquity.
The stuff people come up when they try to "redesign the unix terminal" (usually some javascript contraption) is always extremely lacking.