SUMMARY When graphics inputloutput capabilities are added to a programming language originally designed with a text stream input/output model, various design decisions affect the ease with which the graphics facilities are learned and used by applications programmers. In adding window system facilities to the Icon programming language, some design decisions were made very differently from the conventional wisdom, resulting in substantial benefits for programmers. In addition, some pre-existing Icon language features have proved to be useful in graphics programming. BACKGROUND Input/output activity is a fundamental aspect of computing, especially with the trend toward interactive computing. It has increased in importance as successive generations of computers have become more interactive and as computer use has spread to non-technical persons. Early programming languages had input/output models based upon the crude batch processing available at the time. When those languages began to be used for programs with interactive inputloutput, adjustments to the languages were made, but it is very difficult to change an established language, and extending a language with entirely new programming models does not help the plight of those maintaining existing programs. Newer languages support interaction more naturally, since they were designed with that function in mind. A similar process is now taking place for graphics, as interactive text-based models of input and output are being replaced by models that accommodate graphics and graphical user interfaces. Languages such as Smalltalk,' which were developed on systems where every user was equipped with a bitmapped-graphics display, provide a consistent programming model for graphics. Most popular languages, however, were not developed with an assumption that graphics input and output facilities are available. Because extending these languages is difficult, most languages have incorporated graphics capabilities by means of function libraries, rather than embed
['Clinton L. Jeffery', 'Ralph E. Griswold', 'Gregg M. Townsend']
Adding graphics to a high-level programming language