> I'm afraid I have to disagree here (being a UNIX dweeb for 25 years
> or so...). The fundamental reason CLI's exist is that when they
> were designed, the machines were slow, memory was small and the
> libraries to do GUI had yet to be written. My first year at college,
> when all the VDTs (video display terminals for those of you who don't
> go back that far...) were busy, I'd use a 300 baud teletype to put
> my programs into the computer. There were people who did "GUIs" for
> the VDTs and even the teletype, but the results were pretty poor.
> The reason CLIs remain popular today is because it is still generally
> faster (and smaller) to code CLIs than GUIs. If I'm writing code for
> myself or another person comfortable with computers I would write a CLI.
> If I had to write code for a non-computer literate audience (and had the
> time) I'd write a GUI.
And then there's the 90's... Have you seen a GUI in the last 10 years? How about the modern software development languages/environments.
I was a hard core CLI man myself, for a long time, basically because CLI programming is simpler. There just aren't as many options, so you don't have to think as hard.
The only drawback is that there just aren't as many options. The things you can do with GUIs now... Remember writing report printing code under DOS or UNIX, or doing stuff with the screen? Now you can just drop a couple of components on a form, choose a couple (really! two or three!) options in a happy little property editor, and wham, you've got printing, or database access, or clipboard, or internet communication, or full video, etc etc....
The stuff that used to be really hard, or at least time consuming, now comes bundled. You can scoff at this if you like, but I find that it's extremely liberating. You don't spend all your time re-inventing the wheel in your user interface, or with data structures (when was the last time I had to write a hash-table/b-tree combo?) or with I/O, or with database access, or writing low level protocol stuff (although of course you can if you want to). You do spend time on what your program is really about, the custom bits, the stuff that is actually interesting about your application.
Plus, you can get into new areas without learning the whole field first. I wanted to start doing more interesting things with MIDI music recently, and wondered where to start. I found that many of the apps which I use for MIDI actually have COM interfaces (yep, MSEmlyn, boo hiss, although I refuse to touch their programming languages). This means direct programmable control. So I can do from code whatever I can do in the apps I already have. Later, I can work out how each app does what it does, and replace it if I want.
That's what an OS is about I think; providing useful resources to the application. When you add the internet to the mix, you can suddenly expand those resources almost at whim (need a digital audio component? or source code? or library? Spend a few minutes (hours?) on the net...). It just blows my mind.
The idea of going back to the command line OSes of old, fishing out printer manuals full of control codes, or poking frequencies into the registers in my sound card, or trying to write ping to talk to the net over my modem... why not just chop off my hands.
If I'm still using a desktop style GUI with tools like Delphi in 5 years, I'll know I've failed to keep up (I'm probably falling behind right now).