Visual Programming Nan C. Shu IBM Los Angeles Scientific Center Tschnische Unsversiiai Darmstadt FACHSEREICH iNRDf^AUK VNR VAN NOSTRAND REINHOLD COMPANY New York Contents Preface Chapter 1. INTRODUCTION 1 The Dual Brain 1 The Changing User Population 3 The Need for A New Style of Programming 3 Why "Visual Programming"? 6 What is Visual Programming? 9 Categorization of Visual Programming 12 A Brief Synopsis of the Coming Chapters 13 References 16 Chapter 2. VISUALIZATION OF DATA AND INFORMATION ABOUT DATA 17 Introduction 17 Visualization of Data / 18 Access Data Through Their Graphical Representations: SDMS 18 Generate Graphical Display in Real Time: The View System 21 A Video Graphic Query Facility: VGQF 23 Visualization of Data Structures 26 Introduction 26 Graphical Display of Pascal-like Data Structures: INCENSE 26 Graphical Display of Lisp Data Structures: K AESTLE 27 Visualization of Database Schemas 31 Introduction 31 Proposals for Presenting Schemas with Graphical Structures 32 An Interface for a Semantic Information System: ISIS 32 References 38 Chapter 3. VISUALIZATION OF PROGRAMS AND EXECUTION 40 Introduction 40 Pretty-Printing Source Programs 41 Conventional Formatting 41 Enhanced Presentation: A SEE Compiler for C 41 viii CONTENTS Visualization through Diagrams 41 Introduction 41 Making Lisp Programs more Readable 44 Showing Pascal Programs in Diagrams 47 Multiple Views of a Program and its Execution States 48 Introduction 48 Exploratory Programming Environment: InterLisp 49 Structured Programming Environment: PECAN 52 Understanding through Algorithm Animation 54 Introduction ^154 Taking A First Step: Visible Pascal 55 Close Examinations and In Depth Studies: BALSA 57 References 64 Chapters VISUALIZATION OF SOFTWARE DESIGN 67 Introduction 67 Visualization tools for Programming in the Large: PV System 67 Incorporation of Formalism into Dependency Diagrams: PegaSys 72 References 78 Chapter 5. VISUAL COACHING 79 Contrasts with Visualization and Visual Languages 79 Programming by Example/Demonstration: Concepts 80 Examples of Input-Output Pairs 80 Examples of Program Traces 81 Emergence of Visual Coaching 82 Some Representative Systems 84 Pygmalion .84 Programming by Abstract Demonstration (PAD) 84 Programming by Example on SmallStar 84 ThinkPad 85 PiP 86 Peridot 89 Focusing on Inductive Inferencing: AutoProgrammer 90 Focusing on Graphical Interaction: Programming by Rehearsal Summary 106 References 107 Chapter 6. LANGUAGES FOR HANDLING VISUAL INFORMATION 109 Introduction 109 Examples of Augmented Conventional Query Languages 99 110 CONTENTS A Graphics-oriented Relational Algebraic Interpreter: GRAIN Structured Query Language Extended to Picturial Domain: PSQL References 121 Chapter 7. 111 116 LANGUAGES FOR SUPPORTING VISUAL INTERACTIONS 124 Introduction 124 The Icon-Class Description Language of SDMS: ICDL 124 A Language Based on a Hierarchical Window Model: HI-VISUAL A Language Supporting Communication with Pointing Device: Squeak 132 References 135 Chapter 8. ix 128 VISUAL PROGRAMMING LANGUAGES: A PERSPECTIVE 136 Three Categories of Visual Languages 136 The First Two Categories: Languages Themselves Are Textual 136 Languages for Handling Visual Information 136 Languages for Supporting Visual Interactions 137 Visual Programming Languages: Definition 138 A Framework for Assessing Visual Programming Languages 139 Level of the Language 139 Scope of Applicability 139 Extent of Visual Expressions 139 Framework for Dimensional Analysis 140 Example—A Comparison of Three Visual Programming Languages 141 Profile of the Pict System 141 Profile of the PIGS System 142 Profile of the FORMAL System 143 A Comparison in the Three-Dimensional Framework 147 References 147 Chapter 9. DIAGRAMMATIC SYSTEMS 148 Introduction 148 Flow charts and Rothon Diagrams as "Paper and Pencil" Tools 149 Flow Charts as Graphical Extensions to Executable Code 151 Charts that resemble "Paper and Pencil Planning": FPL 151 A Hierarchical Structured Diagram for Pascal: Pascal/HSD 155 Nassi-Shneiderman Diagrams as Graphical Extensions 157 A Graphics-Based Programming-Support System 157 An Interactive Graphical Support System: PIGS 166 x CONTENTS Extended to Support Concurrent Programming: Pigsty/I-PIGS A Graphical Support System Without Pointing Device: GRASE Data Flow Diagrams 173 State Transition Diagrams 178 Introduction 178 User Software Engineering (USE) Methodology 180 Jacob's State Transition Diagram Language 184 References 188 Chapter 10. ICONS AND ICONIC SYSTEMS 190 Reflections on the Chinese Ideographic System Contrast with Visual Coaching 195 VennLISP 196 TINKERTOY 197 Dialog.I 199 IDEOSY 199 PROGRAPH 200 Extended HI-VISUAL 203 The Xerox Star System 206 The Pict System 214 The Show and Tell System 222 References 237 190 Chapter 11. TABLE-AND FORM-BASED SYSTEMS Introduction 239 QBE and its Derivations 240 Query by Example (QBE) 240 Extensions to OFFICE Activities: QBE/OBE and QBE/PC Extension to Pictorial Data: QPE 253 FORMANAGER 259 FORMAL: 265 Summary 282 References 284 Chapter 12. FUTURE PROSPECTS 285 The Nature of Confusion 285 The Benefits of Characterization 286 A Framework for Assessments 286 High Consumption of Screen Space 288 Suitable Visual Representations 289 Balance between Concreteness and Abstraction 294 168 170 239 252 CONTENTS The Ladders of Learning 294 The Effectiveness and Quality of Visual Expressions Other Yardsticks 296 Approaches to Definition of Icon 297 Toward a Multimedia Approach 300 Toward Formalism 300 A Note of Hope 303 References 304 Index 307 295 xi