Data-flow refers both to a language-level paradigm of computation and to a family of processor architectures based on this paradigm. This article elaborates data-flow language issues and the evolution of data-flow languages. In considering limits to the expressive power of these languages, underlying architectural issues are of necessity discussed. Although the article attempts to present a complete history of data-flow languages, it concentrates on those languages that specifically belong to this class and have been implemented for a data-flow machine. In many cases, the distinctions between issues of language semantics and machine architecture are unclear. Usually we have found that this reflects the evolution of data-flow, and the close association between language and architecture development. In some sections of the article, it may appear that there is an imbalance in the amount of detail presented when compared with other sections. This imbalance is proportional to the publications and the amount of information readily available for the topics.ata-flow languages derive from a base paradigm of the D datu-flow graph -that is, the modeling of a program as a set of operator nodes interconnected by a set of datacarrying arcs. Under this paradigm there is no current operation, and each operator is free to execute when its data arrives. The interpretation of the language is naturally concurrent, and the concurrency is inherently fine-grained.The data-flow model has the single-assignment property. Values are data tokens that are transported from their producing node to the node that consumes them; there is no concept of a variable with a state that can be arbitrarily updated at a later time. In data-flow, identifiers may be used to name these data tokens. Such identifiers are thus either undefined (not yet produced) or carry a single unique value; they cannot be updated.For a counterpoint to data-flow, languages belonging to the class referred to as functional languages model programs as nested mathematical functions. In pure functional languages, identifiers denote subexpressions, and given that a sub-expression has a single unique value (which cannot be updated), these languages likewise share the singleassignment property.In examining the development of data-flow languages, a strong mutual influence between data-flow and functional languages appears. This is probably due to their contemporary development, the sharing of certain fundamental properties that stood in stark contrast to the popular imperative languages of their time, and similar problems of efficient implementation shared by both language classes. Most modern data-flow languages do not have their semantics defined in terms of program graphs. There are fundamental limitations of such a strict definition of data-flow. In the first place, certain programming language facilities that have proved to be useful (such as iteration) are not easily represented in terms of a static data-flow graph. Second, the efficient implementation of certain operations, par...
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
hi@scite.ai
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.