Visual Programming Programming by Example and Prog
Visual Programming Programming by Example and Prog
net/publication/234811464
CITATIONS READS
198 3,028
1 author:
Brad A. Myers
Carnegie Mellon University
485 PUBLICATIONS 17,020 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
All content following this page was uploaded by Brad A. Myers on 10 January 2014.
1. Introduction
As the distribution of personal computers and the
ABSTRACT more powerful personal workstations grows, the majority
of computer users now do not know how to program. They
There has been a great interest recently in systems that buy computers with packaged software and are not able to
use graphics to aid in the programming, debugging,. and modify the software even to make small changes. In order
understanding of computer nrograms. The terms “Visual to allow the end user to reconfigure and modify the system,
Programming” and “-Rogram %sualixation” have been the software may provide various options, but these often
applied to these systems. Also, there has been a renewed make the system more complex and still may not address
interest in using examples to help alleviate the complexity the users’ problems. “Easy-to-use” software, such as the
of programming. This technique is called “Programming “Direct Manipulation” systems [Shneiderman 831 actually
by Example.” This paper attempts to provide more mean- make the user-programmer gap worse since more people
ing to these terms by giving precise definitions, and then will be able to use the software (since it is easy to use), but
uses these definitions to classify existing systems into a the internal program code is now much more complicated
taxonomy. A number of common unsolved problems with (due to the extra code to handle the user interface). There-
most of these systems are also listed. fore, systems are moving in the direction of providing end
user programming. It is well-known that conventional pro-
CR Categories and Subject Descriptors: D.1.2 [Software gramming languages are difficult to learn and use [Gould
Engineering]: Automatic Programming; D.2.2 [Software 841, requiring skills that many people do not have. In an
Engineering]: Tools and Techniques-Flowcharts; D.2.5 attempt to make the programming task easier, recent
[Software Engineering]: Testing and Debugging- research has been directed towards using graphics. This
Debugging Aids; D.3.2 [Programming Languages]: has been called “Visual Programming” or “Graphical Ro-
Language Classifications; 1.2.2 [Artificial Intelligence]: gramming”. Some Visual Programming systems have suc-
Automatic Programming-Program Synthesis. 1.3.6 [Com- cessfully demonstrated that non-programmers can create
puter Graphics]: Methodologies and Techniques- fairly complex programs with little training [Halbert 841.
Languages. Another motivation for using graphics is that it tends
to be a higher-level description of the desired actions (often
Additional Key Words and Phrases: Visual Rogram- de-emphasizing issues of syntax and providing a higher
ming, Program Visualization, Programming by Example, level of abstraction) and may therefore make the program-
Inferencing.
ming task easier even for professional programmers. This
General Terms: Documentation, Languages. may be especially true during debugging, where graphics
can be .used to present much more information about the
program state (such as current variables and data struc-
tures) than is possible with purely‘textual displays. This
is one of the goals of Program Visualization. Other Ro-
gram Visualization systems use graphics to help teach
computer programming.
Programming-by-Example is another technology that
permission to copy without fee all or part of this material is granted has been investigated to make programming easier, espe-
provided that the copies are not made or distributed for direct
commercial advantage, the ACM copyright notice and the title of the cially for non-programmers. It involves presenting to the
publication and its date appear, and notice is given that copying is by computer examples of the data that the program is sup-
permission of the Association for Computing Machinery. To copy posed to process and using these examples during the
otherwise, or to republish, requires a fee and/or specific permission. development of the program. Many, although not all,
Programming-by-Example systems have also used Visual
Programming, so these two technologies are often linked.
Recently, there has been a large number of articles
about systems that incorporate some or all of these
0 1986 ACM O-8979I- I gO-6/86/0400 - 0059 $00.75 features [Grafton 851lRaeder 851. Unfortunately, the
59
terms have been used imprecisely’, and there has not been widely used in the literature, so it was felt appropriate to
a comprehensive taxonomy that classifies these systems. continue to use the common terms.
This paper attempts to fill this gap in the literature. First,
the important terms are defined in a precise manner, and Programming bv Example The term “Programming by
then these definitions are used to differentiate the various Example” (PBE) has been used to describe a large variety
systems. Finally, a number of common unsolved problems of systems. Some early systems attempted to create an
with these systems are delineated. entire program from a set of input-output pairs, Other
systems require the user to “work through’ an algorithm
There are many systems that could be included in this on a number of examples and then the system tries to infer
paper in the various categories, but no attempt has been the general program structure. This is often called
made to be comprehensive. It is hoped that the selection of ‘fautomatic programming” and has generally been an area
systems listed will help the reader understand the intent of of Artificial Intelligence research.
the cJassi&ation system.
Recently, there have been a number of systems that
2. Definitions. require the user to specify everything about the program
Programming What is meant by computer “program- (there is no inference involved), but the user can work out
ming” is probably well understood, but it is important to the program on a specific example. The system executes
have a definition that can be used to eliminate some lim- the user’s commands normally, but remembers them for
ited systems. In this paper, “program” is defined as “a set later re-use. Bill Buxton coined the phrase “Programming
of statements that can be submitted as a unit to some com- with Examples” to more accurately describe these systems,
puter system and used to direct the behavior of that sys- Halbert 1841 characterizes Programming with Examples as
tem” [Oxford 831. While the ability to compute “every- “DO What I Did” whereas inferential Programming by
thing” is not required, the system must include the ability Example might be “Do What I Mean”. The term “Pro-
to handle conditionals and iteration, at least implicitly, gramming by Example” will be used to include both
Interactive vs. Batch Any programming language system inferencing systems and Programming With Example sys-
may either be ‘Gneractive” or “batch.” A batch system has tems.
a large processing delay before statements can be run Of course, whenever code is executed in any system,
while they are compiled, whereas an interactive system test data must be entered to run it on. The distinction
allows statements to be executed when they are entered. between normal testing and “Programming with Exam-
This characterization is actually more of a continuum than ples” is that in the latter the system requires or
a dichotomy since even interactive languages like LISP encourages the specification of the examples before pro-
typically require groups of statements (such as an entire gramming begins, and then applies the program as it
procedure) to be specified before they are executed. develops to the examples. This essentially requires all
Visual Programming “Visual Programming” (VP) refers Programming-with-Example systems (but not
to any system that allows the user to specify a program in Programming-by-Example systems with inferencing) to be
a two (or morel dimensional fashion. Conventional textual interactive.
languages are not considered two dimensional since the 3. Advantages of Using Graphics and Examples.
compiler or interpreter processes it as a long, one-
dimensional stream. Visual Programming includes con- Visual Programming, Program Visualization, and
ventional flow charts and graphical programming Programming by Example are very appealing ideas for a
languages. It does not include systems that use conven- number of reasons. The human visual system and human
tional (linear) programming languages to define pictures. visual information processing is clearly optimized for
This eliminates most graphics editors, like Sketchpad multi-dimensional data. Computer programs, however, are
[Sutherland 631. presented in a one-dimensional textual form, not utilizing
the full power of the brain. Two-dimensional displays for
Program Visualization “Program Visualization” (PV) is programs, such as flowcharts and even the indenting of
an entirely different concept from Visual Programming. In block structured programs, have long been known as help-
Visual Programming, the graphics is the program itself, ful aids in program understanding [Smith 771. Recently, a
but in Program Visualization, the program is specified in number of Program Visualization systems [Myers
the conventional, textual manner, and the graphics is used bO][Baecker 81llBrown 841 have demonstrated that 2-D
to illustrate some aspect of the program or its run-time pictorial displays for data structures, such as those drawn
execution. Unfortunately, in the past, many Program by band on blackboard, are very helpful. It seems clear
Visualization system have been incorrectly labeled “Visual that a more visual style of programming could be easier to
Programming” (as in [Grafton 851). Program Visualization understand and generate for humans. Smith I771 discusses
systems can be divided along two axes: whether they illus- at length these and other psychological motivations for
trate the code or the data of the program, and whether using more visual displays for programs and data.
they are dynamic or static. “Dynamic” refers to systems
that can show an animation of the program running, It is also well known that people are much better at
whereas “static” systems are limited to snapshots of the dealing with specific examples than with abstract ideas. A
program at certain points. If a program created using large amount of teaching is achieved by presenting impor-
Visual Programming is to be displayed or debugged, tant examples and having the students do specific prob-
clearly this should be done in a graphical manner, but this lems. This helps them understand the general principles.
would not be considered Program Visualization. Although Programming by Example attempts to extend these ideas
these two terms are similar and confusing, they have been to programming. In its most ideal case, the programmer
acts like the teacher and just gives examples to the com-
IFor example, Zloofs Query-By-Example system (see section 4.2) is not puter and the computer, like an intelligent pupil, intuits
a Programming by Example system. the abstraction that covers all the examples.
60
CH1’86Proceedings
complex state of the system at each point of the computa- Graphical Program Editor
[Sutherland 661
tion if it is displayed for him on the screen, This has been PIGS
called “programming in debugging mode” [Smith 771. In [Pang 831
addition, these PBE systems may allow the user to specify Query by Example Pitt -
a program using the actual user interface of the system, [Zloof 77, 811 [Glinart 841
which is presumably familiar [Attardi 821. FORMAL PROGRAPH
wu 851 [Pietrzykowski 83,841
GAL State Transition UIMS
4. Taxonomy of Programming Systems. [Albizuri-Romero 841 [Jacob 851 1
This paper presents two taxonomies. This section
discusses one for systems that support programming, Sec- Programming by Example
tion 5 discusses a one for systems that use graphics after
Batch Interactive
the programming process is finished (Program Visualiza- 4.4 I 4.5 I
tion systems).
A meaningful taxonomy can be created by classifying
programming systems into eight categories using the I/O pairs* Tinker
Not VP [Shaw 751 [Lieberman 821
orthogonal criteria of
l Visual Programming or not, I I
4.6 4.1
l Programming by Example or not, and
AutoProgrammer*
l Interactive or batch. [Biermann 76bl
This taxonomy is original with this paper. Of course, a [Bauer 781 traces* Pygmalion
VP [Smith 771
single system may have features that fit into various Graphical Thinglab
categories and some systems may be hard to classify, so [Borning 861
this paper attempts to characterize the systems by their SmallStar
most prominent features. Figure 1 shows the division with [Halbert 81,841
some sample systems which are discussed in the following Rehearsal World
[Gould 841
sections.
4.1. Not VP, Not PBE, Butch and Interactive Figure 1.
These are the conventional textual, linear program- Classification of programming systems by whether they are visu-
ming languages that are familiar to all programmers, such al or not, whether they have Programming by Example or not,
and whether they are interactive or batch. The small numbers
as Pascal, Fortran, and Ada for batch and LISP and APL refer to the section in which the group is discussed. Starred sys-
for interactive. tems (*I have inferencing, and non-starred PBE systems use Ro-
gramming With Example.
4.2. VP, Not PBE, Butch
One of the earliest “visual” representations for pro-
grams was the flowchart. Grail [Ellis 691 could compile
programs directly from computerized flowcharts, but the
contents of boxes were ordinary machine language state-
ments. GAL (see Figure 2) is similar except. that it, uses
Nassi-Shneiderman flowcharts [Nassi 731 and is compiled
into Pascal [Albiauri-Romero 841. Another early effort was
the AMBIT/G [Christensen 681 and AMBITlL [Christensen
711 graphical languages. They supported symbolic mani- Figure 2.
pulation programming using pictures. Both the programs A Nassi-Shneiderman flowchart program from GAL [Albizuri-
and data were represented diagrammatically as directed Romero 841.
graphs, and the programming operated by pattern match-
ing. Fairly complicated algorithms, such as garbage collec- You might think that a system called “Query by
tion, could be described graphically as local transforma- Example” would be a “Programming by Example” system,
tions on graphs2. but in fact, according to this classification, it is not. Query
by Example (QBE) (Zloof 771 allows users to specify
21t is interesting to note that AMBlTIG, even though it was developed
in 1969, used many of the “modem” user interface techniques, includ-
queries on a relational database using two-dimensional
ing iconic representations, gesture recognition, dynamic menus on the tables (or forms), so it is classified as a Visual Program-
screen, selection from menus, selection of icons by pointing, moded and ming system. The “examples” in QBE are what Zloof
mode-free styles of interaction, etc. [Rower 691. called variables. They are called “examples” because the
61
_ ‘ii -3;’ ;,
CIi 1’86Proceedings April 1986
Figure 5.
State diagram description of a simple desk calculator [Jacob 851.
62
CH1’86 Proceedings April 1986
Figure 7.
A screen from Rehearsal World [Gould 841 showing the basic
menu (on the left) and the standard set of “performers”.
63
_ .:.. “.. : -_ ‘.
CH1’86 Proceedings April 1986
64
the central idea of this “inductive generalization” program- After the picture is chosen, it usually requires a great
ming is directly opposed to the modern software- deal of programming to get the system to produce that
engineering idea that testing with a few examples can picture.
never guarantee that a program is correct. Clearly, gen- The amount of data is usually large, and it is difficult
erating a program from a few examples has the same prob- to fit enough on the screen.
lem. Related to the above is the layout problem: deciding
where to place many differently shaped two-
6.3. Programming with Example. dimensional pictures, which may have arrows and lines
Programming with Example systems that do not connecting them.
attempt to do inferencing have been more successful. Most For dynamic data visualization, it is difficult to specify
of these are VP systems, so they share the problems listed when the displays should be updated. Issues of aesthet-
in section 6.1. Some additional problems with these sys- ics in timing are very important to produce useful ani-
tems (from [Halbert 841) include: mations.
Lack of static representation: These systems often have For code, there is a separate set of problems:
no user-understandable static representation for pro-
l There has not been much work on interesting displays
grams.
or ways to show progress.
Problem with editing programs: The lack of a static
l Like all the other Visual systems, there is the problem
representation makes editing difficult. One alternative
of the size of the pictures. Ways must be found to
is to run a program from the beginning, but this may
decide what code to display and how to compress pro-
take a long time. Specifying a change for the middle of
a program by example may not be possible without run- cedures to fit on the screen.
ning it from the beginning since the state of the world l When code and data are animated together, it is
may not be set up correctly to allow the user to specify difficult for the user to tell what data is being manipu-
the change. Saving periodic snapshots of the system lated by what parts of the code, so some way must be
state may alleviate this problem, but there may be a found to show the relationships of variables to the
great deal of information to save. In addition, a change displayed data.
may invalidate steps of the program that come after-
wards. 7. Conclusion.
Problem with data description: It is often difficult to Visual Programming, Programming by Example and
specify what the procedures should operate on: con- Program Visualization are all exciting areas of active com-
stants, user-specified data, or data found somewhere in puter science research, and they promise to improve the
the system qualified by its type, location, name, etc. user interface to programming environments. A number of
Unless there is some explicit mechanism for the user to interesting systems have been created in each area, and
tell it, the system does not know why the user chose there are some that cross the boundaries. This paper has
some particular data. Also, if the user specifies the attempted to classify some of these systems and present
same data item in two different places, is this a coin- the general problems with them in hopes that this will
cidence, or should the identical item be used in both clarify the use of the terms and provide a context for
places? future research.
Problem with control structure: When specifying a con- ACKNOWLEDGEMENTS
ditional by example, only one branch can be traveled. For helu and suooort of this article. I would like to thank Bill
To go back and travel the other branch, a different Buxton: Ron Ba’ecker, Bernita Mye&, and many others at the
example must be given, and the system must be University of Toronto. The research described in this paper was
returned to the correct state for the “IF” statement to partially funded by the National Science and Engineering
be reevaluated. An additional problem is how to Research Council (NSERC) of Canada.
specify where in the program the conditionals and loops
should be placed. REFERENCES
[Albizuri-Romero 841 Miten B. Albizuri-Romero. “GRASE--A
Lack of functionality: Many systems only provide Pro- Graphical Syntax-Directed Editor for Structured Program-
gramming with Example for a few data types and a ming,” SIGPLAN Notices. 19(21 Feb. 1984. pp. 28-37.
small number of operations. As a patch, some provide [Attardi 821 Giuseppe Attardi and Maria Simi. “Extending the
escapes to conventional programming languages when Power of Programming by Example,” SIGOA Conference on
PBE is insufficient. Ofice Inform&on Syste&, Philadelphia, PA, Jun. 21-23,
1982. pp. 52-66.
Avoiding the destruction of real data or other undesir-
able consequences: In an environment such as the [Baecker 681 R.M.Baecker. “Experiments in On-Line Graphical
office, where actions in the system may have external Debugging: The Interrogation of Complex Data Structures,”
(Summary only) First Hawaii International Conference on
consequences, it may be undesirable for the system to the System Sciences. Jan. 1968. pp. 128-129.
actually perform certain actions while the program is [Baecker 751 R.M.Baecker. “Two Systems which Produce
being written. Animated Animated Representations of the Execution of
Computer Programs,” SIGCSE Bulletin. 7(l) Feb. 1975. pp.
6.4. Program Visualization. 158-167.
Data Visualization systems have the following problems: [Baecker 811 Ron Baecker. Sorting out Sorting. 16mm color,
sound film, 25 minutes. Dynamics Graphics Project, Com-
l It is difficult to pick the appropriate picture for a data puter Systems Research Institute, University of Toronto,
abstraction. Toronto, Ontario, Canada. 1981. Presented at ACM SIG-
GRAPH’81. Dallas, TX. Aug. 1981.
65
CtH’86 Proceedings April 1986
[Baecker B61 Ronald Baecker and Aaron Marcus. “Design Princi- [Lieberman 821 Henry Lieberman. “Constructing Graphical User
ples for the Enhanced Presentation of Computer Program Interfaces by Example,” Graphics Interface’g2, Toronto,
Source Text,” Human Factors in Computing Systems: Ont. Mar. 17-21, 1982. pp. 295-302.
Proceedings SIGCHI’86. Boston, MA. Apr. 13-17, 1986. [London 851 Ralph L. London and Robert A. Druisberg. “Animat-
[Bauer 781 Michael A. Bauer. A Basis for the Acquisition of Pm- ing Programs in Smalltalk,” IEEE Computer. 18(S) Aug.
cedures. PhD Thesis, Department of Computer Science, 1985. pp. 61-71.
University of Toronto. 1978. 310 pages. [Moriconi 851 Mark Moriconi and Dwight F. Hare. “Visualizing
[Biermann 76al Alan W. Biermann. “Approaches to Automatic fiagram Designs Through PegaSys,” IEEE Computer. 18(8)
Programming,” Aduances in Computers, Morris Rubinoff Aug. 1985. pp. 72-85.
and Marshall C. Yovitz, eds. (15) New York: Academic [Myers 801Brad A. Myers. Displaying Data Structures for
Press, 1976. pp. l-63. In&active Debugging. Xerox Palo Alto Research Center
[Biermann 76b] Alan W. Biermann and Ramachandran Krish- Technical Report CSL-80-7. June, 1980.
naswamy. “Constructing Programs from Example Computa. [Myers 831 Brad A. Myers. “Incense: A System for Displaying
tions,” IEEE Transactions on Software Engineering. SE- Data Structures,” Computer Graphics: SIGGRAPH ‘a3
2(3) Sept. 1976. pp. 141-153. Conference Proceedings. 17(3) July 1983. pp. 115-125.
[Borning 791 Alan Borning. Thinglab--A Constraint-Oriented [Nassi 731 I. Nassi and B. Shneiderman. “Flowchart Techniques
Simulation Laboratory. Xerox Palo Alto Research Center for Structured Programming,” SIGPLAN Notices. S(8) Aug.
Technical Report SSL-79-3. July, 1979. 1973. pp. 12-26.
[Borning 811 Alan Borning. “The Programming Language [Oxford 831 Dictionary of Compu ting. Oxford: Oxford University
Aspects of Thinglab; a Constraint-Oriented Simulation Press, 1983.
Laboratory,” Transactions on Programming Language and [Pietrzykowski 831 Thomas Pietrzykowski, Stanislaw Matwin,
Systems. 3(4) Oct. 1981. pp. 353-387. and Tomasz Muldner. “The Programming Language PRO-
[Borning 861 Alan Borning. “Defining Constraints Graphically,” GRAPH: Yet Another Application of Graphics,” Graphics
Human Factors in Computing Systems: Proceedings SIG- Znterface’83, Edmonton, Alberta. May 9-13, 1983. pp. 143-
CHI’g6. Boston, MA. Apr. 13-17, 1986. 145.
[Brown 841 Marc H. Brown and Robert Sedgewick. “A System for [Pietrykowski 841 T. Pietrzykowski and S. Matwin. PRO-
Algorithm Animation,” Computer Graphics: SIGGRAPH’BI GRAPH: A Preliminary Report. University of Ottawa
Conference Proceedings. Minneapolis, Minn. lS(3) July 23- Technical Report TR-84-07. April, 1984.
27, 1984. pp, 177-186. [Pang 831 M.C. Pong and N. Ng. “Pigs--A System for Program-
[Brown 851 Gretchen P. Brown, Richard T. Carling, Christopher ming with Interactive Graphical Support,” Soflware--
F. Herot, David A. Kramlich, and Paul Souza. “Program practice and Experience. 13(9) Sept. 1983. pp. 847-855.
Visualization: Graphical Support for Software Develop- [Raider 851 Georg Raeder. “A Survey of Current Graphical Pro-
ment,” IEEE Computer. 18(a) Aug. 1985. pp. 27-35. gramming Techniques,” IEEE Computer. 18(8) Aug. 1985.
[Christensen 681 Carlo5 Christensen. “An Example of the Mani- pp. 11-25.
pulation of Directed Graphs in the AMBITM: Programming
Language,” in Interactive Systems for Experimental Applied [Rovner 693 P.D. Rovner and D.A. Henderson, Jr. “On the Imple-
mentation of AMBIT/G: A Graphical Programming
Mathematics, Melvin Klerer and Juris Reinfelds, eds. New
Language,” Proceedings of the International Joint Confer-
York: Academic Press, 1968. pp. 423-435.
ence on Artificial Intelligence. Washington, D.C. May 7-9,
[Christensen 711 Carlos Christensen. “An Introduction to 1969. pp. s-20.
AMBIT/L, A Diagramatic Language for List Processing,”
Proceedings of the 2nd Symposium on Symbolic and Alge- [Shaw 751 David E. Shaw, William R. Swartout, and C. Cordell
braic Manipulation. Los Angeles, CA. Mar. 23-25, 1971. pp. Green. “Inferring Lisp Program8 from Examples,” Fourth
248-260. International Joint Conference on Artificial Intelligence.
Tbilisi, USSR. Sept. 3-8, 1975. 1 pp. 260-267.
[Ellis 691 T.O. Ellis, J.F. Heafner and W.L. Sibley. The Grail
[Shneiderman 831 Ben Shneiderman. “Direct Manipulation: A
Project: An Experiment in Man-Machine Communication.
Step Beyond Programming Languages,” IEEE Computer.
RAND Report RM-5999-Arpa. 1969.
16(8) Aug. 1983. pp. 57-69.
[Glinert 841 Ephraim P. Glinert and Steven L. Tanimoto. “Pitt:
[Shu 851 Nan C. Shu. “FORMAL: A Forms-Oriented Viaual-
An Interactive Graphical Programming Environment,”
IEEE Computer. 17(11) Nov. 1984. pp. 7-25. Directed Application Development System,” IEEE Com-
puter. 18(e) Aug. 1985. pp. 38-49.
[Gould 841 Laura Gould and William Finzer. Programming by [Smith 771 David C. Smith. Pygmalion: A Computer Program to
Rehearsal. Xerox Palo Alto Research Center Technical
Model and Stimulate Creative Thought. Basel, Stuttgart:
Report SCL-84-l. May, 1984. 133 pages. Excerpted in Byte.
Birkhauser, 1977.
9(6) June, 1984.
[Smith 821 David C. Smith, Charles Irby, Ralph Kimball, Bill
[Grafton 851 Robert B. Grafton and Tadao Ichikawa, eds. IEEE
Computer, Special Issue on Visual Programming. 18(S) Verplank, and Erik Harslem. “Designing the Star User
Interface,” Byte Magazine. April 1982. pp. 242-282.
Aug. 1985.
[Sutherland 631 Ivan E. Sutherland. “Sketchpad: A Man-
[Haibt 591 Lois M. Haibt. “A Program to Draw Multi-Level Flow
Machine Graphical Communication System,” AFIPS Spring
Charts,” Proceedings of the Western Joint Computer Confer- Joint Computer Conference. 23 1963. pp. 329-346.
ence. San Francisco, CA. 15 Mar. 3-5, 1959. pp. 131-137.
[Sutherland 661 William R. Sutherland. On-line Graphical
[Halbert 811 Daniel C. Halbert. An Example of Programming by Specification of Computer Procedures. MIT PhD Thesis. Lin-
Example. Masters of Science Thesis. Computer Science
coln Lab8 Report TR-405. 1966.
Division, Dept. of EE&CS, University of California, Berke-
ley and Xerox Corporation Office Products Division, Palo [Williams 841 Gregg Williams. “The Apple Macintosh Com-
Alto, CA. June, 1981. puter,” Byte Magazine. g(2) February 1984. pp. 30-64.
[Halbert 841 Daniel C. Halbert. Programming by Example. PhD [Zloof 771 Moshe M. Zloof and S. Peter de Jong. “The System for
Thesis. Computer Science Division, Dept. of EE&CS, Business Automation (SBA): Programming Language,”
University of California, Berkeley. 1984. Also: Xerox Office CACM. 20(6) June, 1977. pp. 385-396.
Systems Division, Systems Development Department, TR [Zloof 811 Moshe M. Zloof. “QBEIOBE: A Language for Office and
OSD-T8402, December, 1984. Business Automation,” IEEE Computer. 14(5) May, 1981.
[Jacob 851 Robert J.K. Jacob. “A State Transition Diagram pp. 13-22.
Language for Visual Programming,” IEEE Computer. 18(8)
Aug. 1985. pp. 51-59.
66