Skip to main content

No-code History: GRAphical Input Language - GRAIL (1969)

Note: Almost all text below are quotes from resources listed at the end with slight editions.

/galleries/post-images/nocode-history-grail/grail-3.png

Introduction

The GRAIL (GRAphical Input Language) Project proposed to create an interactive software-hardware system in which the man constructs and manipulates the display contents directly and naturally without the need to instruct an intermediary (the machine); i.e., the display contents should represent, in a very real sense, the man's problem, and allow him to deal directly with it.

For example, consider the construction of a flowchart. An interactive system embodying these features allows a researcher to draw freehand figures and connecting lines; then it immediately replaces these figures with stylized versions of the appropriate size and at the same position to inform him that it understood his actions. If the researcher's actions are in error, the system makes this apparent; e.g., by brightening a symbol or disallowing a connecting line.

The foregoing considerations led to these design goals:

  1. Machine-to-man communication to be accomplished solely via the CRT.

  2. Man-to-machine communication to be accomplished solely via real-time interpretation of stylus/tablet motions.

  3. The environment to minimize ambiguous responses and the operation to be reasonably apparent.

  4. The system to be responsive enough for the man to consider the display his working surface with minimal distraction and delay.

  5. The system to be complete as a problem solving aid; i.e., the man should be able to specify, edit, validate (debug), document, and exercise his problem description.

The evident mismatch between output potentials and existing input capabilities led to the investigation of two-dimensional input devices. The device that resulted, known as the RAND Tablet, consists of a pen-like instrument (stylus) used on a two-dimensional surface (printed circuit tablet), which is coupled to a general-purpose computer.

The project deals with the problem of computer programming using flowcharts as a starting point from which to investigate man-machine communications within the above principles. Operations are described that allow the man to specify, edit, validate, document, and exercise his problem description by drawing and gesturing (freehand and in-place) those symbols, characters, and other means of problem expression that he may need. Continuous responses on the CRT display are necessary to minimize distraction and to allow the man to feel that he is dealing directly with the expression of his problem.

The GRAIL research experiment was designed to facilitate problemsolving by providing a useful interface between man and machine. Specifically, the project investigated techniques for the real-time interpretation of free-hand gestures (on a RAND Tablet), display representation methods, and their application to a significant problem area --constructing computer programs via flowcharting.

The system permits construction, editing, interpretive execution, compilation, debugging, documentation, and execution of computer programs specified by flowcharts.

The communication language is structured to assist the man in problem formulation by allowing specification of a problem, editing of its constructs, and validating its representation. Accurate and intelligible documentation directly results from the problem statement in GRAIL.

Motivation

The project's main goal was to identify the problems and study possible methodology for this form of man-machine communications.

Computer programming via flowcharts was chosen as a vehicle for the GRAIL project work. Flowcharting is broadly applicable and complex enough to be interesting, as well as being amenable to the proposed communication techniques.

Challenges

The man's ability to focus his attention exclusively on the display is certainly coupled to his ability to effect his intentions directly in place.

The seemingly difficult feat of looking one place while gesturing in another (such as typing or driving a car) is really no problem for the man provided the feedback loop is closed quickly enough to avoid a rubbery feeling.

The Language

The language organization centers on sequential control flow and nested subroutines coupled with flowcharts to relate their interdependence pictorially.

These notions help the man to structure his program and to envision graphically its organization in two dimensions.

Important organizational concepts in the GRAIL system are the sequential flow of control, the hierarchy of subroutines, and the language (flow diagrams) for pictorially relating the organization within the concepts of the first two.

Flow diagrams help the man to picture his control options and the relationship between processes by expressing these interrelationships in two dimensions.

The main ideas and their interrelationships constitute a conceptual plane. The next level of detail for a particular notion constitutes another conceptual plane and so on, until the lowest level of detail has been explicitly expressed by appropriate computer-language statements or flowchart symbols.

/galleries/post-images/nocode-history-grail/grail-2.png

A man may have many files or programs. Each is a diagramatically ordered collection of closed-process definitions whose instances may appear in other processes.

Each closed process is a collection of planes.

Each plane is a collection of frames implicitly coupled via connectors and may contain instances of other processes.

Each frame contains a collection of flowchart symbols or code statements.

How it Works

A man using a RAND Tablet/Stylus and a random deflection CRT display may draw flowchart symbols, edit and rearrange them on the display surface, and connect them appropriately to form a meaningful program. He may also execute the program while controlling its execution rate and the amount and content of information presented to him. The system interprets, in real-time, the man's hand-drawn figures, characters, and other stylus gestures to provide germane responses on the display surface. Operations were governed by the principles that the system should be responsive, easy to understand, easy to use, and powerful.

The GRAIL system allows the man to print text and draw flowchart symbols naturally; the system recognizes them accurately in real-time. The recognizable symbol set includes the upper-case English alphabet, the numerals, seventeen special symbols, a scrubbing motion used as an erasure, and six flowchart symbols-- circle, rectangle, triangle, trapezoid, ellipse, and lozenge.

GRAIL's text-editing features are: character placement and replacement, character-string insertions, line insertions, character and character-string deletions, and line deletions.

No positional maneuvers (e.g., moving a cursor) are required.

An alphanumeric or special symbol may be handprinted in-place (character placement); when completed, its ink track is replaced by a hardware-generated character.

When a character is printed over an existing character (character replacement), the system replaces the previous character with the newly-recognized character.

One erases by scrubbing (as in erasing a blackboard) over the character(s) to be deleted. Any number of characters within a line may be erased by a single scrubbing.

Erasure of blanks shifts the remaining characters (to the right of the blanks) leftward over the erased blanks.

One may insert a string of characters between two characters by drawing a caret (^) between them.

One may insert blank lines between existing lines by drawing a '>' symbol in the left margin.

Erasing all the characters on the line and then erasing again on the blank line deletes the line entirely.

Syntax analysis is performed on character strings where it is appropriate, and errors are indicated by brightening the entire line.

The man may execute part or all of his program from the console either by compiling the processes and executing them at CPU speeds or by interpretive execution.

The man may execute part or all of his program from the console either by compiling the processes and executing them at CPU speeds or by interpretive execution.

Interpretive execution, designed to be much more interactive, is used for debugging.

The man controls execution by starting, stopping, continuing, and terminating with simple, direct stylus actions.

He controls execution rate in either single-step or variable mode (up to a display frame-swapping rate of about 30 ms/frame) as well as the amount and content of information presented on the display.

Brightening the next graphic to be executed and scrolling the next code statement to the top of the viewing window shows the control flow through flowchart symbols and code statements, respectively.

The man may overlay or delete the changing data-value display (parameter frame) at any time; therefore, he may view any change (data value or control step) to his program.

The information displayed during interpretive execution is exactly the same picture that the man constructed. In fact, the man frequently uses the overlay (e.g. 1 parameters and flowchart) and split-screen (parameter and code state- ments) images during construction.

/galleries/post-images/nocode-history-grail/grail-1.png

Trivia

The system was implemented on an IBM System/360 Model 40-G with two 2311 disk drives as secondary store.

The capabilities of the language as a programming system were tested by writing GRAIL itself within the flowchart symbolism.

Resources

See Also

Found it interesting?

Subscribe to instadeq's monthly newsletter to stay updated