This thesis describes Cube, the first visual language to employ a three-dimensional syntax. The third dimension provides for a richer syntax, makes the language more expressive, and prepares the ground for novel, virtual-reality-based programming environments. We use dimensional extent to convey semantic meaning, or more precisely, to distinguish between logical disjunctions and conjunctions, and between sum and product types. Cube uses the data flow metaphor as an intuitive way to describe logic programs. The semantics of the language is based on a higher-order form of Horn logic. Predicates are viewed as a special kind of terms, and are treated as first-class values. In particular, they can be passed as arguments to other predicates, which allows us to define higher-order predicates. Cube has a static polymorphic type system, and uses the Hindley-Milner algorithm to perform type inference. Well-typed programs are guaranteed to be type-safe. We have implemented two Cube interpreters: An initial feasibility study, and a prototype implementation with improved interactive capabilities. Both of them exploit the implicit parallelism of the language by simulated concurrency, implemented via time-slicing. iii
|
1654
|
Foundations of Logic Programming
– Lloyd
- 1984
|
|
409
|
Sketchpad: A man-machine graphical communication system
– Sutherland
- 1963
|
|
332
|
Logic for problem solving
– Kowalski
- 1974
|
|
291
|
R.H.C.: The CLP(R ) language and system
– Jaffar, Michaylov, et al.
- 1992
|
|
217
|
Principal type schemes for functional programs
– Damas, Milner
- 1982
|
|
216
|
The Application Visualization System: a Computational Environment for Scientific Visualization
– Upson, Faulhaber, et al.
- 1989
|
|
192
|
An Overview of �Prolog
– Nadathur, Miller
- 1988
|
|
159
|
a non-strict functional language with polymorphic types
– Miranda
- 1985
|
|
146
|
A Head-Mounted Three Dimensional Display
– Sutherland
- 1968
|
|
134
|
A polymorphic type system for Prolog
– Mycroft, O'Keefe
- 1984
|
|
109
|
The undecidability of the secondorder unification problem
– Goldfarb
- 1981
|
|
104
|
The Ultimate Display
– Sutherland
- 1965
|
|
81
|
Pavane: a system for declarative visualization of concurrent computations
– Roman, Cox, et al.
- 1992
|
|
72
|
Vijay Saraswat. Complete visualizations of concurrent programs and their executions
– Kahn
- 1990
|
|
72
|
A Theory of Type Polymorphism
– Milner
- 1978
|
|
71
|
The Transparent Prolog Machine (TPM): An Execution Model and Graphical Debugger for Logic Programming
– Eisenstadt, Brayshaw
- 1988
|
|
59
|
Typed Prolog: A semantic reconstruction of the Mycroft-O'Keefe type system
– Lakshman, Reddy
- 1991
|
|
55
|
Computer Graphics
– Hearn, Baker
- 1997
|
|
51
|
Janus: A Step Towards Distributed Constraint Programming
– Saraswat, Kahn, et al.
- 1990
|
|
47
|
Algorithm animation using 3D interactive graphics
– Brown, Najork
- 1993
|
|
45
|
programming be liberated from the von Neumann style? a functional style and its algebra of programs
– Can
- 1978
|
|
44
|
New Graphical Reasoning Models for Understanding Graphical Interfaces
– Furnas
|
|
38
|
Implementing Functional Languages
– Jones, Lester
- 1992
|
|
37
|
Three-dimensional computation visualization
– Stasko, Wehrli
- 1992
|
|
33
|
Pict: An Interactive Graphical Programming Environment
– Glinert, Tanimoto
- 1984
|
|
31
|
A Three-Dimensional Representation for Program Execution
– Lieberman
- 1989
|
|
31
|
Pygmalion: A creative programming environment
– Smith
- 1975
|
|
29
|
HiLog: A First-Order Semantics for Higher-Order Logic Programming Constructs
– Chen, Kifer, et al.
- 1989
|
|
25
|
A framework for abstract 3d visualization
– Reiss
- 1993
|
|
25
|
Pygmalion: A Computer Program to Model and Stimulate Creative Thought, Birkhauser
– Smith
- 1977
|
|
21
|
The cube language
– Najork, Kaplan
- 1991
|
|
20
|
An application of three-dimensional visualization to object-oriented programming
– Koike
- 1992
|
|
20
|
Trestle reference manual
– Manasse, Nelson
- 1991
|
|
19
|
A Survey of Current Graphical Programming Techniques
– Raeder
- 1985
|
|
18
|
Hilog: A first-order semantics for higher-order logic programming constructs
– Chen, Kifer, et al.
- 1989
|
|
17
|
and Gopalan Nadathur. Higher-order logic programming
– Miller
- 1986
|
|
16
|
Is it easier to write matrix manipulation programs visually or textually? An empirical study
– Pandey, Burnett
- 1993
|
|
15
|
Abstraction in algorithm animation
– Cox, Roman
- 1992
|
|
15
|
A visual language for keyboardless programming
– Kimura, Choi, et al.
- 1986
|
|
14
|
Enhancing Show-and-Tell With a polymorphic type system and higher-order functions
– Najork, Golin
- 1990
|
|
13
|
A Visual Logic Programming languages based on Sets and Partitioning constraints
– Spratt, Ambler
- 1993
|
|
10
|
Lazy ML user's manual
– Augustsson, Johnsson
- 1993
|
|
10
|
Out of flatland: Towards 3-d visual programming
– Glinert
- 1987
|
|
10
|
DataVis: A visual programming language for scientific visualization
– Hils
- 1991
|
|
10
|
viz: A visual language based on functions
– Holt
- 1990
|
|
10
|
Hyperflow: A Visual Programming Language for Pen Computers
– Kimura
- 1992
|
|
10
|
Specifying Visual Languages with Conditional Set Rewrite Systems
– Najork, Kaplan
- 1993
|
|
10
|
Visual Programming. Van Nostrand Reinhold
– Shu
- 1988
|
|
9
|
The Fabrik programming environment
– Ludolph, Chow, et al.
- 1988
|
|
8
|
Abstraction in the demand-driven, temporal-assignment, visual language model
– Burnett
- 1991
|