Daisy(ID:1392/dai002)


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
Scheme => Daisy   Evolution of

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