A graphical user interface (or GUI) is used by software and operating systems such as Windows and Mac OS, and typically utilises the "point-and-click" inputs from a mouse. It is normally contrasted with a command line interface (CLI), used by software and operating systems such as DOS and Unix. While the GUI has many advantages, it does have its downsides too.
User-friendliness and ease-of-use
Graphical user interfaces have become the dominant type of interface on computers and mobile devices because of their user-friendly nature, their accessibility, and the ease with which users at any level of experience and know-how can interact with them. A GUI gives more guidance to the user (through menus, buttons and highlights) and makes it easier to pick up new software from scratch.
Multitasking and visuals
A windowed graphical user interface enables users to work on and view multiple programs at once. A spreadsheet chart, for example, can be displayed while working on a word processor document at the same time. In addition, GUIs are more aesthetically pleasing than command line interfaces, allowing for more stylish and appealing designs, and providing much more flexibility when it comes to playing media and manipulating graphics. For example, an image editor could use a command line interface, but when using a graphical user interface it provides an instant, real-time view of the open pictures and the edits as they are applied.
System resources and speed
A GUI typically uses more system resources (processor time and memory) than a CLI due to the visual elements and extra code involved. Graphical user interfaces are therefore not always suitable for machines with limited power. In addition there are situations when GUIs can be slower to operate than CLIs -- moving large groups of files, for example, or performing advanced system maintenance tasks that require one line of text in a command line interface but several clicks through multiple menus and dialog boxes on a graphical user interface.
Advanced system functions
A graphical user interface attempts to make a system easier to use and more difficult to break, and as a result it isn't always as efficient or as capable as a command line interface. System administrators and advanced users often resort to a CLI to tackle advanced functions and tasks. What's more, the graphical user interface is less flexible when it comes to integrating automated scripts and other programming languages to get jobs completed.