Programming is the art of procedures to a computer. Making a good programming environment for is an enterprise that can exploit strong connections between principles of human learning and . My experience as a teacher led me to the conviction that working with concrete examples is the best approach both for a teacher to explain ideas to a student, and for a student to learn. Why can’t examples play a more important role in a programming environment?
This paper presents , a system that permits a beginning programmer to write Lisp programs by providing concrete examples of input data, and typing expressions or providing that directs the system how to handle each example. The user explicitly indicates which objects serve as examples, and may present multiple examples that serve to illustrate conditional procedures. The machine records the steps of the computation, and formulates a program to handle the general case.
Tinker provides some capabilities that remain unique among programming by demonstration systems. As a programmer’s system, it requires more knowledge of a programming language that a purely direct-manipulation interface, but provides access to more computational power as a result. It is perhaps the most computationally general system, capable of synthesizing any procedure expressible in its underlying Lisp language. It remains one of the few that accepts multiple examples, enabling and Each set of examples constitutes a partial definition, which can be incrementally augmented with positive or negative examples.