This commit is contained in:
Miloslav Ciz 2024-10-19 22:01:36 +02:00
parent 344fc135f3
commit c984e5d718
24 changed files with 1882 additions and 1817 deletions

4
gui.md
View file

@ -4,7 +4,9 @@
Graphical user interface (GUI) is a visual [user interface](ui.md) that uses graphical elements such as images, many distinct [colors](color.md) and fine geometrical shapes. This stands in contrast with [text user interface](tui.md) (TUI) which is also visual but only uses text for communication (TUI can further be pure line-based [command line interface](cli.md) or a graphical, grid-based text interface that mimics a true GUI, e.g. with [ASCII art](ascii_art.md)).
Expert computer users normally frown upon GUI because it is the "noobish", inefficient, limiting, cumbersome, hard to automate, [capitalist](capitalism.md) consumer-style way of interacting with computer. GUI brings [complexity](complexity.md) and [bloat](bloat.md), they are slow, inefficient, distracting, hard to automatize and test. GUI is like baby pictures or simple books with pictures for [illiterate people](plan9.md) and Chimpanzees, for people who need to click on boxes and have flashing strip club colors to keep them entertained, while command line is for normal adults who can read and want to do thing efficiently -- there is a reason why [programming languages](programming_language.md) are plain text (with exception of the ones literally aimed at babies in kindergarden). [Text is universal interface](unix_philosophy.md); text is a [formal language](formal_language.md) that can be handled mathematically well, it is a [stream](stream.md) of data easy to process by any languages, etc. So we try not to use GUIs and prefer the [command line](cli.md).
Expert computer users normally frown upon GUI because it is the "noobish", **inefficient, slow, limiting, cumbersome, distracting, hard to automate, hard to [test](testing.md), [capitalist](capitalism.md) [consumer](consumerism.md)-style way of interacting with computer**. GUI brings [complexity](complexity.md) and [bloat](bloat.md). GUI is like baby pictures or simple books with pictures for [illiterate people](plan9.md) and Chimpanzees, for people who need to click on boxes and have flashing strip club colors to keep them entertained, while command line is for normal adults who can read and want to do thing efficiently -- there is a reason why [programming languages](programming_language.md) are plain text (with exception of the ones literally aimed at babies in kindergarden). [Text is universal interface](unix_philosophy.md); text is a [formal language](formal_language.md) that can be handled mathematically well, it is a [stream](stream.md) of data easy to process by any languages, etc. So we try not to use GUIs and prefer the [command line](cli.md).
GUI is also bad for the following reason: **it restricts and limits the potential of a computer and our program to just realtime interaction with a human**. That is how normal people think about computers, but a programmer knows computers have much bigger potential: computer doesn't have to be just a box with screen and keyboard operated by human, computers may be interacting with each other, they may be tiny and have no screens, they may interact with machines, fly to space, sit somewhere and just record data. GUI kills all this potential, and that's what [hackers](hacking.md) dislike so much.
"[Modern](modern.md)" GUIs mostly use [callback](callback.md)-based programming, which again is more complicated than standard polling non-interactive I/O. If you need to do GUI, just use a normal infinite loop FFS.