Human Computer Interfaces

There are two ways to have a conversation with your computer: by discussing directly with the application or computer (Command Line Interface or CLI) or by discussing with a metaphor of the computer (Graphical User Interface or GUI). Both have advantages and disadvantages. CLIs are very powerful and provide a real environment for discussion: the user writes their command or question and the computer answers to it. For example:

alexb@Abulafia:~$ clcs
bash: clcs: command not found
[aka I don’t know this word]

alexb@Abulafia:~$ qgo
The program 'qgo' is currently not installed.  You can install it by typing:
sudo apt-get install qgo
bash: qgo: command not found
[aka I don’t know this word but I can learn it]

[aka learn the qgo word]

alexb@Abulafia:~$ sudo apt-get install qgo
[sudo] password for alexb:                [aka are you allowed to teach me?]
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  qgo
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
Need to get 1848kB of archives.
After this operation, 4276kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com jaunty/universe qgo 1.5.4-r3-1 [1848kB]
Fetched 1848kB in 4s (381kB/s)
Selecting previously deselected package qgo.
(Reading database ... 506239 files and directories currently installed.)
Unpacking qgo (from .../qgo_1.5.4-r3-1_i386.deb) ...
Processing triggers for menu ...
Processing triggers for man-db ...
Setting up qgo (1.5.4-r3-1) ...
Processing triggers for menu ...
alexb@Abulafia:~$ qgo
[Starts the qgo program, which, by the way, is a Go client]
alexb@Abulafia:~$ whoami
alexb
Much like in natural languages, words can be connected into sentences, only in this specific CLI words are separated by “|” instead of spaces:

[Show me all files in this folder that are named “My take on”]

alexb@Abulafia:~/Documents$ ls | grep "My take on"
My take on
My take on~
alexb@Abulafia:~/Documents$
CLIs seem less friendly, but only because you are working with a black screen and it’s scary at first, because you don’t know what to do. CLIs are willing to teach you, if you are willing to learn. You only have to ask “what does word X do?”, in our case “man whoami” or “whoami –help”
alexb@Abulafia:~/Documents$ whoami --help
Usage: whoami [OPTION]...
Print the user name associated with the current effective user ID.
Same as id -un.
      --help     display this help and exit
      --version  output version information and exit
Report bugs to <bug-coreutils@gnu.org>.
alexb@Abulafia:~/Documents$
Unlike CLIs, GUIs seem friendly. GUI applications show nice interactive pictures containing a number of items that you can control with the mouse and keyboard. Using them is like seeing the video of a song instead of only listening to it. Sometimes, you get distracted by the beautiful female dancers and stop listening to the music (much of the modern music is built for showing videos rather than for the music). Some other times, the video adds a new dimension to the song (think Pink Floyd’s “The Wall”). However, its core message is the same, and the discussion that you’re trying to have is the same as with a CLI.