• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

GUI vs non-GUI software

 
Ranch Hand
Posts: 50
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'm very new to programming so please excuse the likely naivete of this question.

Back in the old days there were punch cards and "DOS-type" (typing lots of mysterious commands onto a dark screen) interfacing with computers. I am guessing that, these days, most programs designed to be used by people on a regular basis primarily use a GUI (possiblity of a completely wrong assumption here, I am aware). Is there, and if so, how much software is being written these days that doesn't use a GUI but is still intended to be interfaced on a regular basis by a human user? Also, what might be the benefits of using non-GUI programs by regular users.

I can imagine there is (or might be) a lot of software written in the world that has little interaction with a human user. This type of software isn't what I'm talking about, though.
 
lowercase baba
Posts: 13089
67
Chrome Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I use a command line every day at my job.

I use a product that runs on some pretty heavy-duty Unix servers, processing millions of data messages daily. There is a GUI that would let me do everything I need...but...there are a lot of things I can do easier and faster by logging into a terminal and typing the command (or the alias) there.

In fact, we have written many, many scripts that automate processes that would take 15-20 minutes to do by hand, but typing the alias + a few arguments takes seconds...then you just watch the output scroll by. For example...there are times when I need to stop and restart a hundred processes. The GUI lets me do them one at a time. We have a script that iterates through the list, and does them all automatically.

COULD the vendor have written something in the GUI to do this? Sure. But they didn't, so we filled the gap ourselves.

 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
What kind of software are you thinking about? Software targeted at developers will have a very different profile than software intended for mass consumption.

Do you think that Aunt Mathilda is really going to use a command line tool for anything?
 
fred rosenberger
lowercase baba
Posts: 13089
67
Chrome Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Bear makes a valid point. Unix/Linux is a good example of something "that doesn't use a GUI but is still intended to be interfaced on a regular basis by a human user". My mother will never use it, but i know a lot of people who do every day.

and I suppose it is possible they have a GUI, I'm not really 100% sure, but I don't see how that would work...
 
Marshal
Posts: 28193
95
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
A large fraction of the programs written these days which are designed to be used by people on a regular basis are web applications. In this case the GUI is a browser.
 
simon fletcher
Ranch Hand
Posts: 50
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
After reading the responses, I spent a bit of time thinking and realized that the question was pretty dumb. It's quite obvious that anyone writing a program that they know is going to be used by the masses (consumers, business applications users, and so on) on computers (and other info technologies) using a GUI, they will write it for that.

That said, I can easily imagine there are plenty of situations where it might just simply be quicker to make it command line based, and they know the user is already used to that style, so that's how they write it.

The rest of the command line type software being written today is probably being written that way because the infrastructure already in place was designed for command line input and that's what the users are used to because that's what was there when they entered the field. Why fix what's not broken especially if it would be an unnecessary expenditure?

I guess I was wondering more what situations exist where command line is more desirable than GUI? No real reason other than curiosity.
 
Bartender
Posts: 612
7
Mac OS X Python
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
first of all - not a dumb question as it got you to think - not dumb at all. - thanks for posting it

now other reasons to write command line apps.....

when you want to run/schedule a task to run without human intervention.

when you want to access deeper system level hooks then are available though the GUI (i have batch jobs that can cycle services on MS boxes much faster than the Services Manager GUI. So why use the GUI? my team (users) remote into the server - they can open the services manager or open the explorer - either way, it works - but when it comes to production we run the scripts.

Now this is just two reasons (and there are others) but remember the user is king --

be well.

-steve
 
simon fletcher
Ranch Hand
Posts: 50
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thank you.
 
Bartender
Posts: 2407
36
Scala Python Oracle Postgres Database Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Actually, my impression is that a lot of mainstream business applications are written for browser clients i.e. a particular kind of "GUI" with certain restrictions but many benefits (e.g. you don't have to install a "GUI" client for your application on the user's PC). That's the typical scenario for 3-tier applications using Java or .NET, for example.

One thing I noticed when I was working on new Windows GUIs for legacy terminal applications, was that experienced business users often used a lot of keyboard shortcuts to move around their screens more quickly, which made it harder for them to adapt to a new GUI initially if you couldn't provide them with the same shortcuts. So there would be a phase of complaints from the users and slower working until people got used to the new interface.

Neal Ford's excellent book "The Productive Programmer" advises all developers to learn the keyboard shortcuts for their editors and IDEs, and to learn to use the command line properly, as you can often do things much quicker by typing one command than by clicking your way through various wizards/screens.

I still can't get my head around emacs, though...
 
Saloon Keeper
Posts: 27763
196
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

fred rosenberger wrote:Bear makes a valid point. Unix/Linux is a good example of something "that doesn't use a GUI but is still intended to be interfaced on a regular basis by a human user". My mother will never use it, but i know a lot of people who do every day.

and I suppose it is possible they have a GUI, I'm not really 100% sure, but I don't see how that would work...



Yipes!!!

Actually, the problem is, there are multiple GUIs for Linux (and Unix), and they're mostly in the hands of people who know better than the users, apparently, because the Gnome 3 and Unity desktops have people shouting and waving pitchforks (me included).

Linux gets its primary GUI interface from the X window system. On top of that are various extension libraries, such as gtk. Then people build desktop shells on top of that. This embarrassment of riches is one reason I prefer to do GUI apps in Swing (or occasionally SWT). At least with Java, the app is not only independent of the window toolkit, it's independent of the entire freaking OS!

In truth, a lot of people these days - perhaps most of them - do no more command-line interaction with Linux than they do with Windows, even for OS-related tasks. Most of the well-written system utilities have wrappers that allow them to be controlled via GUI even when the base programs are CLI-based.

GUI interaction actually goes way back in Unix/Linux. The TCL "language" was one of several facilities that allowed people to glue programs together (a core Unix virtue) and present them via a graphical interface. There are also a number of utilities that allow simple dialogs, et al to be presented. My backups run from such a script. For higher-level languages, such as Python, there's Glade.

And what goes around comes around. Microsoft finally wised up to the idea that some tasks in Windows are best off being scriptable and that neither of the 2 existing CLI shells (COMMAND.COM and CMD.EXE) are really all that great. So they created PowerShell.
 
Ranch Hand
Posts: 257
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

fred rosenberger wrote:I use a command line every day at my job.

I use a product that runs on some pretty heavy-duty Unix servers, processing millions of data messages daily. There is a GUI that would let me do everything I need...but...there are a lot of things I can do easier and faster by logging into a terminal and typing the command (or the alias) there.

In fact, we have written many, many scripts that automate processes that would take 15-20 minutes to do by hand, but typing the alias + a few arguments takes seconds...then you just watch the output scroll by. For example...there are times when I need to stop and restart a hundred processes. The GUI lets me do them one at a time. We have a script that iterates through the list, and does them all automatically.

COULD the vendor have written something in the GUI to do this? Sure. But they didn't, so we filled the gap ourselves.



Please tell me that command line is needed only in the rarest of rare developer jobs. It came as a surprise to me that command line would still be useful even when we have nice GUI tools.
 
Sheriff
Posts: 3837
66
Netbeans IDE Oracle Firefox Browser
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Andy Jack wrote:Please tell me that command line is needed only in the rarest of rare developer jobs. It came as a surprise to me that command line would still be useful even when we have nice GUI tools.


The command line is pretty darn useful. You can probably avoid it if you really want to. But why? It's a tool. Avoiding useful tools is not a good strategy for a developer.

Command line makes it easy for tasks to be automated. It's not the only option nowadays, for example in my projects lots of things are done by Ant, and I even have some custom built Java applications to do some steps in my build process. And a lot of things are done by BAT files. Heck, one of these programs creates a BAT file that is run later in the process My goal is to have the whole project rebuild by a single click (I'm not there yet, for various reasons). I don't care if that click is on a BAT file, or on a button in an IDE. I just find creating BAT files easier than making everything with Ant, for example. (And it would be easier still with shell scripts on Linux...)

And it's just a build process. I've got many other batches for things I do routinely.

I actually use (console based) FAR as a file manager. It helps me use command line a lot, as the command line programs are run in the same console and the output of the last command is accessible. It's true that people sometimes chuckle when they see it on my desktop ("What? A Norton commander?"), but I really don't care
 
Marshal
Posts: 79178
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Andy Jack wrote: . . . Please tell me that command line is needed only in the rarest of rare developer jobs. . . .

It is. But only by using a strange definition of rarest, to mean a job where you actually have a salary and actually do some work

And why is this thread in MD?
 
fred rosenberger
lowercase baba
Posts: 13089
67
Chrome Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Andy Jack wrote:Please tell me that command line is needed only in the rarest of rare developer jobs. It came as a surprise to me that command line would still be useful even when we have nice GUI tools.


I never said it was NEEDED. I said I used it. And I use it daily. it's easier and faster much of the time.

Starting up my GUI that can do everything takes a significant amount of time. starting up a command line takes an instant.

navigating through the GUI to get to the right 'screen' takes a significant amount of time. typing a six character command to set the right environment variables takes a second.

Trying to start 100 process on the GUI takes a while. I have to start one, wait for it to tell me it has started, then start the next. Each can take 5 seconds to start, so I have to sit there for 10 minutes, watching it the entire time, waiting to start the next.

Going to a command line, I type one command, and move that session off to the side, watching the tail of the log file, and they will all start, leaving me free to do other work.


It's like a carpenter on a house. Sure, there are pneumatic hammers that will drive nails pretty fast. But if each time you need to drive a different size nail, you spend a lot of time loading and unloading the 'clip'. If you just use a normal hand-held hammer, you can drive one nail after another. Plus, you don't have to drag the hose around, deal with leaks or the air compressor, you can still work if you have no electricity...

The command line is a tool like any other. It can be very useful and very powerful. If you know how to use it, it can make a LOT of tasks much easier and faster, thus making you more efficient at your job, thus making you more valuable.
 
Bartender
Posts: 1810
28
jQuery Netbeans IDE Eclipse IDE Firefox Browser MySQL Database Chrome Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Andy Jack wrote:
Please tell me that command line is needed only in the rarest of rare developer jobs. It came as a surprise to me that command line would still be useful even when we have nice GUI tools.



Sorry to rain on your parade, but I have to use a command line every day. You'll find that in many shops the linux servers don't even have a windowing system installed. If you are building a secure web server you don't want unneeded programs that could introduce bugs, needlessly consume system resources, and provide additional attack vectors. So only the bare minimum is installed.

You SSH in with PuTTY and do everything on the command line. And I do mean everything.
 
Tim Holloway
Saloon Keeper
Posts: 27763
196
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
A lot of the best programs have dual UIs - especially the Unix/Linux ones. You use the GUI when you need to do something that you're not familiar with and that may take a lot of data entry. You use the command line when you need to be able to script the program into a sequence of operations and possible run it without human interaction, such as is the case with cron jobs.

One of the things that I really liked about the IBM AS/400 mainframe was that you could type in as much of a command line as you remembered, pressed a button, and got a screen back that had the elements you'd entered in their proper places on the (text) GUI form.
 
Andy Jack
Ranch Hand
Posts: 257
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

fred rosenberger wrote:

Andy Jack wrote:Please tell me that command line is needed only in the rarest of rare developer jobs. It came as a surprise to me that command line would still be useful even when we have nice GUI tools.


I never said it was NEEDED. I said I used it. And I use it daily. it's easier and faster much of the time.

Starting up my GUI that can do everything takes a significant amount of time. starting up a command line takes an instant.

navigating through the GUI to get to the right 'screen' takes a significant amount of time. typing a six character command to set the right environment variables takes a second.

Trying to start 100 process on the GUI takes a while. I have to start one, wait for it to tell me it has started, then start the next. Each can take 5 seconds to start, so I have to sit there for 10 minutes, watching it the entire time, waiting to start the next.

Going to a command line, I type one command, and move that session off to the side, watching the tail of the log file, and they will all start, leaving me free to do other work.


It's like a carpenter on a house. Sure, there are pneumatic hammers that will drive nails pretty fast. But if each time you need to drive a different size nail, you spend a lot of time loading and unloading the 'clip'. If you just use a normal hand-held hammer, you can drive one nail after another. Plus, you don't have to drag the hose around, deal with leaks or the air compressor, you can still work if you have no electricity...

The command line is a tool like any other. It can be very useful and very powerful. If you know how to use it, it can make a LOT of tasks much easier and faster, thus making you more efficient at your job, thus making you more valuable.



Thanks for all the info. I LOVE the example you gave. good one !
 
Andy Jack
Ranch Hand
Posts: 257
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Jk Robbins wrote:

Andy Jack wrote:
Please tell me that command line is needed only in the rarest of rare developer jobs. It came as a surprise to me that command line would still be useful even when we have nice GUI tools.



Sorry to rain on your parade, but I have to use a command line every day. You'll find that in many shops the linux servers don't even have a windowing system installed. If you are building a secure web server you don't want unneeded programs that could introduce bugs, needlessly consume system resources, and provide additional attack vectors. So only the bare minimum is installed.

You SSH in with PuTTY and do everything on the command line. And I do mean everything.



Nice points. I understand that a GUI system will need more resources. But, will it consume so much as to slow the web server ? Its just the admin who needs GUI. The server does not have to generate GUI for some thin client or something like that. Today's super fast processors and memory (RAM, HDD and SDD) should have made loss of speed due to GUI a non-issue. Right ?
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
For development, I use the command line almost exclusively. About the only thing I do in a GUI (IntelliJ) is editing.
 
J. Kevin Robbins
Bartender
Posts: 1810
28
jQuery Netbeans IDE Eclipse IDE Firefox Browser MySQL Database Chrome Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Andy Jack wrote:
Nice points. I understand that a GUI system will need more resources. But, will it consume so much as to slow the web server ? Its just the admin who needs GUI. The server does not have to generate GUI for some thin client or something like that. Today's super fast processors and memory (RAM, HDD and SDD) should have made loss of speed due to GUI a non-issue. Right ?



The resource issue is a minor point. I would agree that modern hardware makes this far less of an issue than it was 10 years ago. The security issue is the main reason that you get only a minimal install if you install Linux and select "web server" as the installation type. Every process that's running, every library that's installed, is one more possible attack vector. On a public facing web site, you really need to keep the machine stripped down to the bare minimum.
 
J. Kevin Robbins
Bartender
Posts: 1810
28
jQuery Netbeans IDE Eclipse IDE Firefox Browser MySQL Database Chrome Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

chris webster wrote:
I still can't get my head around emacs, though...



Emacs is just plain evil...
 
fred rosenberger
lowercase baba
Posts: 13089
67
Chrome Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
i started using emacs with i was about 10 years old. My father had brought home a dumb terminal and an acoustic coupling modem (look it up). He was a big emacs fan, and taught me how write my school papers with it, and the basic commands.

I used it all through high school to write all my papers.

Many years later, I got into IT after being away. The school used VI for editing...which I hated. Nothing worked like what I was used to, but it was all they had.

Eventually, I did figure it out and can use it pretty well.

My father, after hearing me complain so much, did a survey among everyone he could find (he was a EE professor). Preferences were pretty much split 50/50 between vi and emacs. And the real determining factor seemed to almost always be "whichever you used first was the one you loved".
 
Campbell Ritchie
Marshal
Posts: 79178
377
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

fred rosenberger wrote: . . . the real determining factor seemed to almost always be "whichever you used first was the one you loved".

Which is obviously why a certain Big Company supply free software to schools in this country.
 
chris webster
Bartender
Posts: 2407
36
Scala Python Oracle Postgres Database Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

fred rosenberger wrote:My father, after hearing me complain so much, did a survey among everyone he could find (he was a EE professor). Preferences were pretty much split 50/50 between vi and emacs. And the real determining factor seemed to almost always be "whichever you used first was the one you loved".


I'm sure that's true, with one minor caveat: I learned vi first but haven't used it much for years, and I confess I haven't really tried too hard with Emacs, so I wouldn't say I "love" vi, merely that it's the one I hate least!
 
chris webster
Bartender
Posts: 2407
36
Scala Python Oracle Postgres Database Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Campbell Ritchie wrote:[Which is obviously why a certain Big Company supply free software to schools in this country.


And of course the school ICT curriculum became largely restricted to using those same software packages. Chicken, egg, egg, chicken...
 
Andy Jack
Ranch Hand
Posts: 257
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Campbell Ritchie wrote:

fred rosenberger wrote: . . . the real determining factor seemed to almost always be "whichever you used first was the one you loved".

Which is obviously why a certain Big Company supply free software to schools in this country.



hehe
 
Rancher
Posts: 4803
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Campbell Ritchie wrote:Which is obviously why a certain Big Company supply free software to schools in this country.


This is not new. Back in the early 1970s, DEC (aka Digital Equipment Corp) would not give hardware, but they would heavily discount their million dollar mainframe to major universities. This is why many of the original ARPANET hosts ran DEC hardware.

If you read the original Unix papers, they wrote Unix because AT&T would not buy them a PDP-10. They initially used a PDP-7, then moved to a PDP-11, and later to a Vax. DEC stuck so hard that even when AT&T was making and selling its own hardware (the 3Bx lines) most folks ran Unix on DEC hardware.
 
Rancher
Posts: 1044
6
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
> The command line is pretty darn useful.

Agreed: I use it on a daily basis as a software developer. grep and svn (CLI) and sed and even gvim and whatnot...

If one got accustomed to it, one sticks with it.

There are tasks which I can best perform with, say, grep or gvim - why should I not use them?
reply
    Bookmark Topic Watch Topic
  • New Topic