Proponents of the command line praise its power, flexibility, and simplicity. But I think command lines need to die in a fire.
Building scripts out of simple processes is good. Arcane one-liners are not. Command-line shells are a nightmare of broken syntax, destructive actions, and rigid but inscrutable design. Unstructured text is bad for interop. Writing scripts is a tedious process of re-running previous commands and piping results to and from temporary files. Often you blow away your work by accident. It all sucks. No one should live like this.
My solution to this is Flowshell: a visual "shell" inspired by shader editors and dataflow programming systems.
Watch a 10-minute overview of Flowshell's design and features:
Flowshell's design principles:
- Interactive by default. There should be a continuum from "just playing around" to "writing a script". It should be possible to just drop in a file, mash it around, and drag it back out, having never written a "script" at any point.
- Intermediate results are tangible. The output of each node is always saved so it can be re-used, or exported as is. You should never have to re-run a previous step while working on subsequent steps, and you should never have to pipe anything to a temp file for development purposes.
- Loosely structured data. No one should have to write a parser for some wacko ad-hoc data format. Something like JSON provides the right amount of structure: easy for producers to produce, easy for consumers to consume.
For more information, see this blog post.