The writing of graphical programs is often an interesting endeavor. Many systems have their own sets of customs and limitations and enforce certain approaches to graphical program design that ofttimes influences the view of the system as a whole. For the purposes of this thread, a graphical program is any program that outputs visual information beyond the common definition of computer text.
With a suitably expressive character set and controlling features, a TUI (Text User Interface) can be a fine and efficient option. Some graphical systems enable pixel-perfect precision, whereas similar systems enforce vector graphics as the unit. With the creation of the WWW and graphical browsers, graphical programs could become more prolific in some areas, but the WWW has its own set of rules that violating can cause pain. Certain systems combine hardwired and smooth graphics with more flexible grids.
Many graphical systems have the concept of a mouse and windows, whereas others use the entire screen for programs, and yet more vary the input from buttons to keyboards to mice to fingers to voice to an entire body and yet more. There are those that are experimental and others that are decades old, any of which can have associated baggage of many forms. Some methods are bound to languages and others provide more generic interfaces. Some graphical systems are designed for single purposes and others are significantly more free.
The distinction between the illusion of two and three dimensions is also becoming a noteworthy topic when designing graphical interfaces, along with the associated input methods. The system metaphors vary from images, to books, to movies, to locations, to yet more. Some graphical systems intend for multiple means of viewing, whereas others have a single canonical method.
Feel free to use this thread to elaborate on your favorite aspects of graphical programming and the systems that enable this, including those already mentioned. Design from the perspectives of man and machine is certainly relevant. Lastly, this is also a thread to seek advice or troubleshoot when writing these programs, as some environments can make this difficult or unwieldy.