Daisy(ID:1392/dai002)
- Country: us
- Began: 1988
- Published: 1988
after DSI (Data Space for the Interpreter) the model of evaluation
Functional language for parallel list processing
from Quick start "The Daisy language is the culmination of a number of research projects relating to Lisp-family languages over a twenty year period from the mid 1970's to mid 1990s at Indiana University. "
Places
Structures:
Related languages
References:
Johnson, Steven D. and Anne T. Kohstaedt "DSI Program Description" Indiana University Computer Science Dept. Technical Report No. 120, 1981 view details
Johnson, S.D. "Daisy Programming Manual", , CS Dept TR, Indiana U, 1988. view details
Johnson, Steven D. "Daisy, DSI, and LiMP" TR 288, Indiana University Computer Science Department 1989 view details
Abstract: This report briefly describes the functional programming language Daisy, it's underlying computational model, DSI, and a hypothetical architecture, LiMP, for their implementation. Daisy is a simple list processing language, derived from Pure Lisp, which inherits a call-by-need semantics through its use of a suspending constructor. DSI is the hetergeneous "data space" of suspensions and manifest graphs, modeling concurrent task execution on a a parallel virtual machine. LiMP stands for List Multi-Processor; an MIMD architecture for parallel graph processing. The primitive mechanisms of LiMP are explained, and the evolution of the machine model from language oriented research is discussed.
Jeschke, Eric "Daisy Quick-Start Guide" view details
External link: Online copy
Extract: What is "Daisy"? What is "Daisy"? Daisy is a computer programming language with some interesting properties. Some of the adjectives that have been used (perhaps not altogether accurately) to describe it include: high-level, symbolic, list-processing, concurrent, functional and demand-driven.
- Daisy's "high-level" classification results from a number of features which
Daisy shares with other high level languages like Lisp, Scheme, BASIC, Perl, Tcl and Smalltalk. First, the basic constructs in the language tend to be more powerful yet less verbose than in conventional languages, and can be combined in more flexible ways. Second, Daisy includes built-in, automatic memory, process and device management systems. This combination leads to programs that are much shorter and more readable than in traditional programming languages, because they don't have to include a lot of code for allocating and managing system resources.
- Daisy is a symbolic, list processing language. Its primitive data types are
numbers, symbols (string-like objects) and lists. These three primitive types, combined with a general object system for building more compound types are sufficient to handle the vast majority of programming tasks one is likely to encounter.
- Daisy is a concurrent, demand-driven, functional language. In Daisy you
write programs that are compositions of functions, objects and data structures rather than statements that imply an ordered series of operations. Programs become more a specification of what than when. This gives the system a lot of flexibility in deciding the time and order of computing the results. Some computations might be delayed indefinitely if they are never used; others might be computed speculatively (i.e. on the chance that they might be used) or in parallel.
- Daisy has latent typing (aka dynamic typing). This means that it is values
and objects that have types associated with them and not variables. With latent types a variable can hold any value (since variables have no type). However, the system does expect specific value types for many kinds of operations, and errors will occur if the correct types of values are not supplied as arguments.
Resources - Daisy/DSI Programming System
DSI is a system for symbolic multiprocessing based on the underlying operational model of suspending construction . The fundamental synchronization mechanism in this model is the suspension a transparent object representing a computation. Suspensions evolve into manifest data values, which can be inspected and manipulated by other computations. Computation is demand oriented, a relaxation of demand-driven computation in which a system with available processing resources can speculatively activate suspensions for bounded execution. We are interested in this model as a general basis for improving the performance of limited-scale multiprocessors. Daisy is a surface language for programming in the DSI system. Daisy is an applicative language (a mutation of Scheme) with provisions for exploiting a suspending list constructor. Among these provisions are constructs for building networks of streams, including windowing operations for stream-based I/O. These facilities make Daisy a good language for modeling networks of self-timed communicating processes. external link
|