GUI vs CLI: which is better

My Opinion:

GUI: Graphical user interface
Pros:

  • Is easier to learn and use if sensibly designed
  • Looks pretty and can show off to friends
  • Can start a CLI from a GUI (sometimes)

Cons:

  • Consumes computers resources (eg Windows these days suggests 4gb ram minimum)
  • Different windows handle things differently. Some have buttons in this order, some have them in that order.
  • Operates on the ‘modes’ system, where an interface is in one ‘mode’ and then you click a different button and it’s in a different ‘mode’ where everything is different. (kind of related to the previous ones)
  • If the interface is not properly designed, then it is not easy to learn (eg solidworks)

Bonus points for GUI:

  • Gimp/photoshop, blender, games etc.

CLI: Command Line Interface
Pro’s:

  • A command that worked once will work always, no ‘modes’
  • If you have a moderate typing speed it is often faster (except for graphical editing)
  • Requires less system resources (eg your wireless router has a CLI that you can use if you SSH into it. OUr one only has 3mb of ram)
  • Programs are generally simple, and do one thing well.
  • Can show off your geekyness…
  • Can start a GUI from a CLI

Cons:
- You have to learn commands, you can’t explore and expect to discover them (unless you know about man pages)

  • For some tasks it is useless and you have to use a GUI: eg photo editing

Bonus points to CLI:
- Latex, octave, python shell, ssh, etc.

Anyone contest any of those points, or got any to add?

addition to bonus points to cli: vim
vim reminds me of blender, hard to learn, but once youve got it everything is soooo fast and almost unlimited :slight_smile:

i partially disagree with both cli cons: apropos and man together make it very easy to find and explore new stuff. and, theres always google :). also for image editing, for simple stuff like rescaling, cropping, and converting, and even blurring and others, are often very very easy with convert or mogrify. example: my .png is too big to fit onto BA. so instead of opening up gimp, waiting for gimp to finish its 30-second configurating, and clicking in the menus, i can just go to xterm and type: convert image.png image.jpg
but yes, you cant really play decent 3d games from a cli (but then again psychoanalyze-pinhead is just as much fun :)) and for most image editing nothing beats gimp or anoter gui.

the ideal thing for me would be a CLI that can run blender normally :slight_smile:
oh, and another addition to cli bonuses: tmux (terminal multiplexer)

you have some very good points though :slight_smile:

The problem starts already with the term “better”. Better in what?

Historically the console as a desktop instrument has long lost against the graphical UI. The users have voted with their feet. They mainly use software and os’es with a graphical surface. So for the overall user the graphical UI approach is the “better” one. There must be some issues with a console kind of controls therefore. Main issue could be that a graphical UI is more intuitive to learn and to use. And doesn’t require so much special skills and knowledge.

The evolution went from console to graphical UI. Dos was also console before Windows 3.1, as some may remember. Nowadays almost every UI at computers and alike uses the graphical approach. There is just some niche left where it really makes sense to work with console, like for web servers. But even here you can find lots of graphical tools. Plesk. Webmin, PHPMyadmin etc. . The graphical approach has too many advantages over a text based UI. Typoes for example.

Linux as a desktop is one of the last dinosaurs when it comes to console. They just cannot manage it to keep the console completely away from normal work, not even in the most advanced incarnations like Ubuntu. It’s not optional here like in Windows, it is still main part of the show.

the console has definitely not lost to the gui. i run everythin from a terminal with tmux. i3, blender, firefox, keepassx… i have to use blender with a gui because otherwise it it really tricky but for example i do 99% of my editing with vim. it beats all guis i have ever used speed wise and is in a lot of cases more powerful. for exmaple, i can substitute with regexes in vim. instead of manually editing a giant file to, say, seperate all numbers from words if they dont have a space between them (ie i made typos), i can just say “:%s/([0-9]+)([^ 0-9])/\1 \2/g” for numbers in front of words or just slightly mix it around for numbers after words.
now, can you imagine making a gui for that? sure, you can include little menu items for simple stuff like lowercasing or uppercasing, but for complex stuff you will have to simply have a text box. and once you just have lots of text boxes, you might as well just have a cli.

you say that overall gui is better. in some cases it is, but in other cases it is definitely not. isnt this like arguing that yafaray is better
than cycles because it is easier to make decent materials? in some cases it is, but in other cases it will not be able to do what you can do with cycles. and im not saying that yaf is better/worse than cycles, they are just different.
another example. lets say i have written an essay but want to see the most commons words, their frequencies, and sort them by frequency. i did do this once. with a gui its the same like my regex example. you would have to have some obscure and massive system with a million checkboxes and pulldowns and it would be a nightmare… instead of having that, in bash: “tr [A-Z] [a-z] < essay.txt | tr ‘[ .,!?]’ ’
’ | uniq -c | sort -k 1,1nr | less”
sure, it takes a while to figure the command out, but once you have it you can reuse it again… and again… and again… and again… and turn it into a script and use it in seconds, whenever you want.

there is a lot of niche left for console. for example i program with python 2d games like a replica of angry birds. doing this from a gui would be very very tricky and pointless

the console is totally optional. look at ubuntu. there is no reason to use the console for you (but there is certanly for me). there is a gui for adding users for example. i find it just as easy on the console with sudo adduser <user> but you have a choice. you can never touch the console for years and not have a problem. i just found the console by accident. i got bored once, so i started reading a book about python, just for fun. but then my dad told be that we have python on our computer, so i tried it out and had fun. and then i started wondering what else can the blinky black box (the console) do…and loved it. if you hate the cli that much, just use the gui. its there for people like you

the console is totally optional. look at ubuntu. there is no reason to use the console for you

Unfortunately not. Try to edit a config. You end at the console at least for getting root rights. At Ubuntu or Debian it is not longer allowed to log in as root to the desktop. Means graphical work as root is somehow forbidden by design here.

you say that overall gui is better. in some cases it is, but in other cases it is definitely not. isnt this like arguing that yafaray is better
than cycles because it is easier to make decent materials?

As told, “better” is a dangerous term here. It is different, not really comparable. But the graphical UI did succeed over the console in most areas.

It’s not a comparison between two equal things like two renderers. Today it’s 99.9% graphical to 0.01% console. Even Linux has graphical desktops. Even at Linux you use to 99% the graphical UI. One of the niche areas where the console is still in use is server administration. But as told before, even here there are lots of graphical tools nowadays.

Different jobs require different tools. You seem to be asserting that GUIs are better because most people use GUIs. You’re using correlation data to infer a causative explanation. It would be like saying hammers are better than jack-hammers because more people use hammers.

In terms of speed and efficiency for completing certain tasks, the command line can definitely be a more appropriate tool than a graphical interface. However, the large population of computer users have decided that they’re unwilling to learn how to work from a terminal window (using a hammer when a jack hammer would be faster… as long as you have the training). This problem is exacerbated in Windows where the console (it can’t even really be called a terminal) is so horribly under-powered that it’s nearly useless for doing any of the tasks that terminals are traditionally good at.

Fortunately, on an operating system like one of the Linux distributions or Mac OS, users have the ability (should they desire it) to use both the graphical interface and the command line… switching between the two based on what’s most appropriate for the task at hand.

What are you using root for? If it’s installing applications, try looking for GUI’s such as, for mint, MintInstall, for ubuntu ‘Ubuntu Software Center’, or for 99% of ubuntu derivative, ‘synaptic.’ It’ll prompt you for your password when you start it.

Same goes for most configs that require root. You can do them from GUI without having to be root to start them. If a program requires root in Ubuntu, it’ll ask you when you start it.

but this is not intended to be a Linux Vs Windows discussion. Start another thread for that. This is for the pros and cons and differences between writing what you want to do and clicking what you want to do.

Different jobs require different tools. You seem to be asserting that GUIs are better because most people use GUIs. You’re using correlation data to infer a causative explanation. It would be like saying hammers are better than jack-hammers because more people use hammers.

Well, isn’t the thread title what is better? GUI or console? :slight_smile:

I don’t even judge really. I have a look at the facts. And fact is that the UI is in most cases graphical nowadays.

Historically the UI of a personal computer was console. Dos was console. Unix was console. And you used those tools for the same things that you do by a graphical UI now. So it’s not really hammer vs jackhammer. But old hammer vs new hammer. Dos was console. Windows is graphical UI. And the graphical approach succeeded at the desktop over console. Commandline is rarely used anymore.

What are you using root for?

I use root where i need root. Last time i wanted to edit a apache config.

but this is not intended to be a Linux Vs Windows discussion. Start another thread for that. This is for the pros and cons and differences between writing what you want to do and clicking what you want to do.

Linux is the only OS left where you have to use the console regularly for normal work. This kind of normal work where you can use the graphical UI in Windows. So this discussion is hard to divide :slight_smile:

To repeat myself, the normal users have long voted with their feet what they prefer. So it stays a mystery for me why nearly all Linux distibutions still wants the users to work with console for some tasks when there is a graphical desktop available. To stay with my example with the apache config, why not a right click menu with an entry for edit as root? Like the run as admin item in Windows. It simply makes me scratch my head.

Fortunately, on an operating system like one of the Linux distributions or Mac OS, users have the ability (should they desire it) to use both the graphical interface and the command line… switching between the two based on what’s most appropriate for the task at hand.

Also Windows has a commandline. Just type in cmd. So you could also use it here when you want. But the command line at Windows is not longer needed for normal work. A windows user will most likely never even notice that there is a command line available. You can completely work with the graphical UI.

Same goes for most configs that require root. You can do them from GUI without having to be root to start them. If a program requires root in Ubuntu, it’ll ask you when you start it.

Linux requires root rights for stuff like editing configs. And at Debian and Ubuntu desktop this means to start the console. There is no right click menu to open a config as root, and you cannot log in to the desktop as root. Trapped. No choice but to use the console.

In terms of speed and efficiency for completing certain tasks, the command line can definitely be a more appropriate tool than a graphical interface. However, the large population of computer users have decided that they’re unwilling to learn how to work from a terminal window

Some things may really work faster when you look at the isolated task. But you cannot look at it in the isolated manner like hey, look, this command line command is much faster than to click me through a graphical menu. Learning time is also working time. Fixing typoes is also working time.

And the more complex the things becomes, the better is a graphical solution suited. You will not edit your mysql database at the console anymore. You will use Phpmyadmin or similar tools. You will also rarely setup your firewall at the console, you will use a graphical firewall builder for that. And so on. Because complexity is easier to handle in a graphical way. And this were examples from the area where the console is still regularly used, by server admins.

It’s also not that the people are unwilling to learn. You assume with that that the graphical UI is the weaker solution, and that the users just doesn’t want to learn the better solution because they are lazy. But it’s the other way around. It’s the better solution for most of the users. They voted that one with their feet already.

So the question is not longer what is better. The question is, why is the graphical approach better for most users? This has its reasons.

The graphical UI provides the easier and faster way to work with in nearly all cases. A click will always be faster and easier than typing letters. A button has a tooltip too. And tells you, hey, i am a tool. Use me. So why should a user bother to keep in memory what is what, why learn a special command at a command line tool when he can do the same with one single click at a button?

Overall, in the whole, it’s the mix of faster, easier and more convenient that makes the work with a graphical UI better. Even when this means to have some special isolated tasks that are a bit slower than at the console. Those rare tasks where the console is really faster is not worth it to learn the work with the console really when you don’t need it like for a server. Especially when the same task in the graphical UI may be a bit slower, but is more convenient. And that’s in my opinion the reason why we have Windows at the desktop now, and not longer Dos.

When quoting people, you may want to include the name of the person you’re quoting. You’ve got your quotes all mixed up and it’s difficult to see whom a reply is intended for.

That said…

I acknowledged that Windows has a console… and I said it’s almost entirely incapable of doing anything that’s really useful to get done at the command line. Comparing the Windows command prompt to a proper shell is like like calling a unicycle a pick-up truck.

Tell me that the next time you try to rename 1000 files from a GUI. Or convert a couple hundred PNGs into 3 different video formats, 20 times. Or any number of complex tasks that are an absolute chore to do with a GUI… and these aren’t isolated tasks. I’ve found myself doing them pretty regularly over the course of years.

Like I said… I’m pleased that I have both the hammer and the jack-hammer in my toolbox.

I’m fairly sure that just about everything that can be done with a CLI can be done with a GUI as well (There are plenty of scripts and macros for different software that allow for batch processing of for example images)

In general I would say that the step between doing simple things and doing complicated, potentially tedious things is smaller when using a CLI than it is when using a GUI. For example, if you are typing very complex commands, the step to writing a script for automating a task is smaller than if you are for example re-scaling one image in photoshop compared to writing a script that re-scales a bunch of images.

Also many popular word processors with a GUI (for example Notepad++ and MS Word) support regular expressions.

You can also download software with a GUI for batch renaming files.

It is of course a matter of taste whether you want to download software for every single task or learn to use a shell instead

Comparing the Windows command prompt to a proper shell is like like calling a unicycle a pick-up truck.

You can also try the powershell instead. Which is by functionality pretty similar to the bash under linux. But i was told not to start a versus thread here. It’s not the question what cli tool is better. The discussion is cli versus gui.

Tell me that the next time you try to rename 1000 files from a GUI.

You don’t need a cli for that kind of tasks really. And you are similar fast. As Morio says, there is nearly always a graphical tool available for the job. Stuff like batch renaming images can be done from nearly every image software nowadays. When you want to convert images into a video, then use your video editing software. And when everything else fails then there is still batch and macro.

Like I said… I’m pleased that I have both the hammer and the jack-hammer in my toolbox.

I don’t want to take you that away. In the end everything working is allowed :slight_smile:

But to repeat myself, the question what is really better for the users is long voted with the feet. It’s fact that the mayor part of pc users doesn’t use any command line anymore. And they get their job also done.

Just for completeness, I didn’t say images, I said files… meaning files of any or mixed types.

After years of just farting-around with nothing more than “CMD.EXE,” Windows finally came out with PowerShell.

Yes, there are times when a command-line interface is a useful, even necessary tool – even in Windows or Mac. Some things have an easy “visual equivalent,” but other things that you need a computer to do, do not. Plus, particularly when you are rendering large numbers of things, you want to save every scrap of CPU-power that you’ve got. For example, booting a Linux box into a runlevel that doesn’t start a GUI/XWindows at all, in order to run renders a little bit faster. (Sometimes, quite a little bit faster.)

“Better,” though, really doesn’t make much sense here. “TMTOWTDI = There’s more than one way to do it.™”