Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Cliché-based program editors
Waters R. ACM Transactions on Programming Languages and Systems16 (1):102-150,1994.Type:Article
Date Reviewed: Jan 1 1995

The idea behind this paper and much of Waters’s other work is that the best way to understand and manipulate a program is to treat it as an assembly of algorithmic fragments called clichés. A cliché is a kind of pattern whose variable parts are called roles. Examples of clichés are searching algorithms and operations on sets. Waters argues that most programming activity consists of combining clichés, instantiating them by filling in their roles, and rearranging them. A particularly valuable programming tool, therefore, is a program editor that understands and can operate on clichés.

The paper discusses three such editors, namely KBEmacs (knowledge-based Emacs), Tempest, and Ace, which were developed by Waters and his students. KBEmacs is the most powerful of these, at least conceptually, but its performance is unacceptable. Tempest has good performance but provides only a weak implementation of the cliché concept. Ace, the most recent member of the family, is a compromise design that provides acceptable performance and much, but not all, of the power of KBEmacs.

In KBEmacs, a cliché is represented as a plan diagram, which resembles a flowchart but represents data flow as well as control flow. From the paper, it appears that KBEmacs expects a program to be composed entirely of clichés. Although that is not a restriction in principle, since anything can be made into an ad hoc cliché, it could prove awkward in practice. In any event, KBEmacs is both fragile and slow.

Tempest, the fastest of the three editors, represents clichés as purely textual schemas. That model is weak, however, and easily leads to combining clichés in incorrect ways. In practice, Tempest has turned out to be not much better than a text editor.

The Ace editor represents clichés internally, using abstract syntax trees rather than plan diagrams. Consequently, it closely resembles a syntax-directed editor and provides much of the power of KBEmacs without being afflicted by its poor performance. Waters claims that Ace could be the basis for a viable commercial editor, but I am not convinced. The work on Ace was done in 1987, so there has been plenty of time for such an editor to appear.

Nevertheless, there is a good idea here--that a syntax-aware editor can become far more useful if it supports pattern-based operations for patterns that represent programming concepts, not just patterns for the defined syntactic forms of the language being edited. Pattern libraries and even libraries of pattern transformations can make such support even more valuable.

The paper is well organized and honestly discusses the weaknesses of the three editors. The discussion of each editor first explains how clichés are represented, then provides a transcript of the editor in action, and finally provides an evaluation.

Reviewer:  P. Abrahams Review #: CR118211
Bookmark and Share
 
Program Editors (D.2.3 ... )
 
 
Pretty Printers (D.2.3 ... )
 
 
Program Synthesis (I.2.2 ... )
 
 
Software Libraries (D.2.2 ... )
 
 
Software Maintenance (K.6.3 ... )
 
 
Automatic Programming (I.2.2 )
 
  more  
Would you recommend this review?
yes
no
Other reviews under "Program Editors": Date
A display editor with random access and continuous control
Hammer J. International Journal of Man-Machine Studies 21(3): 203-212, 1984. Type: Article
Dec 1 1985
Showing programs on a screen
Meyer B., Nerson J. (ed), Ko S. Science of Computer Programming 5(2): 111-142, 1985. Type: Article
Dec 1 1985
Row replacement algorithms for screen editors
Meyers E., Miller W. ACM Transactions on Programming Languages and Systems 11(1): 33-56, 1989. Type: Article
Apr 1 1990
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy