> In Unix, one tries to design programs to operate not specifically with each other, but with programs as yet unthought of.
That's what Microsoft did with Word, Excel and most parts of Windows. They all expose very large API surface allowing them to be controlled by other programs, or embedded into other programs. No intimate knowledge is required, both human-readable documentation and machine-readable type info are available.
> but the more you get used to plain-text, the easier it becomes to type commands rather than to search for options or buttons.
Well designed GUI programs use both mouse and keyboard. Users willing to invest their time getting used to a particular program aren't searching, they are using keyboard shortcuts. The upside is users not willing to invest time can still use program, slowly but surely.
> The first is that all this abstraction makes people utterly unaware of what the computer is doing.
Even if you know which processes are compiling and linking your code, how they're launched and how they exchange data, you're still unaware what the computer is doing. There's an OS underneath all that, managing memory and scheduling threads. Underneath there're drivers and multiple stacks of hardware, high-level stuff like USB and PCIe on top of other things eventually on top of NAND. There's quantum physics underneath.
Thinking about all that might be interesting, but useless with regards to getting things done. To get things done, you have to stop somewhere. Stopping at IDE level is not that bad. If it's a good IDE and suitable language, the abstraction might be almost watertight.
Since the OP talks about programming, here're some GUI-related features I like a lot. (1) Wavy red lines under spelling errors. (2) Built-in image viewer (3) GUI-based debugging tools, i.e. live element picker, live property inspector (4) Profiler: data collection doesn't need GUI, visualization does, to view these graphs and dynamically adjust what's on them.
I don’t understand why going to an option in a GUI counts as ‘searching’ but setting a text option in a terminal, which I’ll have to look up in a manual as I’m not going to guess it am I, doesn’t count as ‘searching.’
> In Unix, one tries to design programs to operate not specifically with each other, but with programs as yet unthought of.
That's what Microsoft did with Word, Excel and most parts of Windows. They all expose very large API surface allowing them to be controlled by other programs, or embedded into other programs. No intimate knowledge is required, both human-readable documentation and machine-readable type info are available.
> but the more you get used to plain-text, the easier it becomes to type commands rather than to search for options or buttons.
Well designed GUI programs use both mouse and keyboard. Users willing to invest their time getting used to a particular program aren't searching, they are using keyboard shortcuts. The upside is users not willing to invest time can still use program, slowly but surely.
> The first is that all this abstraction makes people utterly unaware of what the computer is doing.
Even if you know which processes are compiling and linking your code, how they're launched and how they exchange data, you're still unaware what the computer is doing. There's an OS underneath all that, managing memory and scheduling threads. Underneath there're drivers and multiple stacks of hardware, high-level stuff like USB and PCIe on top of other things eventually on top of NAND. There's quantum physics underneath.
Thinking about all that might be interesting, but useless with regards to getting things done. To get things done, you have to stop somewhere. Stopping at IDE level is not that bad. If it's a good IDE and suitable language, the abstraction might be almost watertight.
Since the OP talks about programming, here're some GUI-related features I like a lot. (1) Wavy red lines under spelling errors. (2) Built-in image viewer (3) GUI-based debugging tools, i.e. live element picker, live property inspector (4) Profiler: data collection doesn't need GUI, visualization does, to view these graphs and dynamically adjust what's on them.