The primary advantage of including a GUI with software is that it makes it easier for the vast majority of users to learn and use the application. The main disadvantages are that it uses more system resources, thus degrading the overall performance of the software. Additionally, GUIs often provide the user with less granular control over the operations.
A GUI provides novice users with visual cues to help guide and provide immediate feedback for each action they take. It is much easier for the typical person to discover and use functionality that is identified with an image, such as a question mark to denote help or a printer icon to designate the print function. However, because of these graphics, software using a GUI often runs much more slowly than applications without that layer. Additionally, depending on the method used to create the GUI, the software may not run on older computers that do not have the necessary processing power or compatible graphics controls.
Software that requires the user to operate it using a command-line interface generally has a much steeper learning curve. However, once the user is familiar with the commands, it usually runs much more quickly. An experienced operator generally finds that the options available using a command line provide greater power and flexibility in using the software.