Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
Skip header Section
LUCID, the dataflow programming languageMay 1985
Publisher:
  • Academic Press Professional, Inc.
  • 525 B Street Suite 1900 San Diego, CA
  • United States
ISBN:978-0-12-729650-0
Published:01 May 1985
Pages:
312
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. ACM
    Sane A and Valadi J Teaching Programmers to Think of Program Dynamics Proceedings of the ACM Conference on Global Computing Education Vol 1, (140-146)
  2. Krs V, Měch R, Gaillard M, Carr N and Benes B (2021). PICO: Procedural Iterative Constrained Optimizer for Geometric Modeling, IEEE Transactions on Visualization and Computer Graphics, 27:10, (3968-3981), Online publication date: 1-Oct-2021.
  3. ACM
    Zhao T, Berger A and Li Y Asynchronous monad for reactive IoT programming Proceedings of the 7th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems, (25-37)
  4. ACM
    Mokhov S, Song M, Mudur S and Grogono P Hands-on ACM SIGGRAPH 2019 Studio, (1-33)
  5. ACM
    Mokhov S, Song M, Mudur S and Grogono P Hands-on SIGGRAPH Asia 2018 Courses, (1-32)
  6. ACM
    Melkonian O and Charalambidis A RHEA: a reactive, heterogeneous, extensible, and abstract framework for dataflow programming Proceedings of the 5th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems, (11-20)
  7. ACM
    Bourke T, Brun L, Dagand P, Leroy X, Pouzet M and Rieg L (2017). A formally verified compiler for Lustre, ACM SIGPLAN Notices, 52:6, (586-601), Online publication date: 14-Sep-2017.
  8. ACM
    Mainland G and Shanmugam S From high-level radio protocol specifications to efficient low-level implementations via partial evaluation Proceedings of the 6th ACM SIGPLAN International Workshop on Functional High-Performance Computing, (1-11)
  9. ACM
    Mokhov S, Song M, Mudur S and Grogono P Hands-on ACM SIGGRAPH 2017 Studio, (1-29)
  10. ACM
    Bourke T, Brun L, Dagand P, Leroy X, Pouzet M and Rieg L A formally verified compiler for Lustre Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, (586-601)
  11. Haubenwallner K, Seidel H and Steinberger M (2017). ShapeGenetics, Computer Graphics Forum, 36:2, (213-223), Online publication date: 1-May-2017.
  12. ACM
    Song M, Mokhov S, Mudur S and Grogono P Hands-on SIGGRAPH ASIA 2016 Courses, (1-29)
  13. ACM
    Boechat P, Dokter M, Kenzel M, Seidel H, Schmalstieg D and Steinberger M (2016). Representing and scheduling procedural generation using operator graphs, ACM Transactions on Graphics, 35:6, (1-12), Online publication date: 11-Nov-2016.
  14. ACM
    Song M, Mokhov S, Mudur S and Grogono P Rapid interactive real-time application prototyping for media arts and stage performance SIGGRAPH Asia 2015 Courses, (1-11)
  15. ACM
    Ertel S, Fetzer C and Felber P Ohua Proceedings of the Principles and Practices of Programming on The Java Platform, (51-64)
  16. ACM
    Petricek T, Orchard D and Mycroft A (2014). Coeffects, ACM SIGPLAN Notices, 49:9, (123-135), Online publication date: 26-Nov-2014.
  17. ACM
    Petricek T, Orchard D and Mycroft A Coeffects Proceedings of the 19th ACM SIGPLAN international conference on Functional programming, (123-135)
  18. Chen N and Johnson R JFlow Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering, (202-212)
  19. ACM
    Ohshima Y, Lunzer A, Freudenberg B and Kaehler T KScript and KSWorld Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software, (117-134)
  20. Fourtounis G, Papaspyrou N and Rondogiannis P The Generalized Intensional Transformation for Implementing Lazy Functional Languages Proceedings of the 15th International Symposium on Practical Aspects of Declarative Languages - Volume 7752, (157-172)
  21. Matthews S and Bukatin M An intelligent theory of cost for partial metric spaces Proceedings of the 5th international conference on Artificial General Intelligence, (168-176)
  22. ACM
    Ji Y, Mokhov S and Paquet J Unifying and refactoring DMF to support concurrent Jini and JMS DMS in GIPSY Proceedings of the Fifth International C* Conference on Computer Science and Software Engineering, (36-44)
  23. Duggan D and Yao J Static sessional dataflow Proceedings of the 26th European conference on Object-Oriented Programming, (484-508)
  24. Caporuscio M, Funaro M and Ghezzi C PaCE Proceedings of the 11th international conference on Software Composition, (51-67)
  25. ACM
    Duggan D and Yao J Sessional dataflow Proceedings of the 7th workshop on Declarative aspects and applications of multicore programming, (47-50)
  26. Oliner A, Kulkarni A and Aiken A Community epidemic detection using time-correlated anomalies Proceedings of the 13th international conference on Recent advances in intrusion detection, (360-381)
  27. ACM
    Orchard D, Bolingbroke M and Mycroft A Ypnos Proceedings of the 5th ACM SIGPLAN workshop on Declarative aspects of multicore programming, (15-24)
  28. ACM
    Meyerovich L, Guha A, Baskin J, Cooper G, Greenberg M, Bromfield A and Krishnamurthi S Flapjax Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, (1-20)
  29. ACM
    Meyerovich L, Guha A, Baskin J, Cooper G, Greenberg M, Bromfield A and Krishnamurthi S (2009). Flapjax, ACM SIGPLAN Notices, 44:10, (1-20), Online publication date: 25-Oct-2009.
  30. ACM
    Liu H, Cheng E and Hudak P (2009). Causal commutative arrows and their optimization, ACM SIGPLAN Notices, 44:9, (35-46), Online publication date: 31-Aug-2009.
  31. ACM
    Liu H, Cheng E and Hudak P Causal commutative arrows and their optimization Proceedings of the 14th ACM SIGPLAN international conference on Functional programming, (35-46)
  32. ACM
    Plaice J and Mancilla B The practical uses of TransLucid Proceedings of the first international workshop on Context-aware software technology and applications, (13-16)
  33. ACM
    Mokhov S, Paquet J and Tong X A type system for hybrid intensional-imperative programming support in GIPSY Proceedings of the 2nd Canadian Conference on Computer Science and Software Engineering, (101-107)
  34. Uustalu T and Vene V (2008). Comonadic Notions of Computation, Electronic Notes in Theoretical Computer Science (ENTCS), 203:5, (263-284), Online publication date: 1-Jun-2008.
  35. ACM
    McDirmid S (2007). Living it up with a live programming language, ACM SIGPLAN Notices, 42:10, (623-638), Online publication date: 21-Oct-2007.
  36. ACM
    McDirmid S Living it up with a live programming language Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applications, (623-638)
  37. Varbanescu A, Nijhuis M, González-Escribano A, Sips H, Bos H and Bal H SP@CE Proceedings of the 19th international conference on Languages and compilers for parallel computing, (33-48)
  38. Stefanescu G (2019). Interactive Systems with Registers and Voices, Fundamenta Informaticae, 73:1,2, (285-305), Online publication date: 1-Oct-2006.
  39. Juillerat N and Hirsbrunner B FOOD Proceedings of the 2006 conference on New Trends in Software Methodologies, Tools and Techniques: Proceedings of the fifth SoMeT_06, (452-461)
  40. Stefanescu G (2019). Interactive Systems with Registers and Voices, Fundamenta Informaticae, 73:1,2, (285-305), Online publication date: 1-Apr-2006.
  41. Cooper G and Krishnamurthi S Embedding dynamic dataflow in a call-by-value language Proceedings of the 15th European conference on Programming Languages and Systems, (294-308)
  42. Uustalu T and Vene V The essence of dataflow programming Proceedings of the Third Asian conference on Programming Languages and Systems, (2-18)
  43. ACM
    Edwards J Subtext Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (505-518)
  44. ACM
    Perera R, Foster J and Koch G A delta-driven execution model for semantic computing Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (63-71)
  45. ACM
    Edwards J (2019). Subtext, ACM SIGPLAN Notices, 40:10, (505-518), Online publication date: 12-Oct-2005.
  46. ACM
    Paquet J, Wu A and Grogono P Towards a framework for the general intensional programming compiler in the GIPSY Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, (164-165)
  47. Wan K, Alagar V and Paquet J Real time reactive programming in lucid enriched with contexts Proceedings of the First international conference on Theoretical Aspects of Computing, (387-402)
  48. Alagar V, Paquet J and Wan K Intensional programming for agent communication Proceedings of the Second international conference on Declarative Agent Languages and Technologies, (239-255)
  49. ACM
    Giavitto J, Michel O and Cohen J (2002). Pattern-matching and rewriting rules for group indexed data structures, ACM SIGPLAN Notices, 37:12, (76-87), Online publication date: 1-Dec-2002.
  50. ACM
    Giavitto J and Michel O Pattern-matching and rewriting rules for group indexed data structures Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming, (55-66)
  51. ACM
    Paterson R (2019). A new notation for arrows, ACM SIGPLAN Notices, 36:10, (229-240), Online publication date: 1-Oct-2001.
  52. ACM
    Wan Z, Taha W and Hudak P (2019). Real-time FRP, ACM SIGPLAN Notices, 36:10, (146-156), Online publication date: 1-Oct-2001.
  53. ACM
    Paterson R A new notation for arrows Proceedings of the sixth ACM SIGPLAN international conference on Functional programming, (229-240)
  54. ACM
    Wan Z, Taha W and Hudak P Real-time FRP Proceedings of the sixth ACM SIGPLAN international conference on Functional programming, (146-156)
  55. Bhattacharyya S, Buck J, Ha S and Lee E Generating compact code from dataflow specifications of multirate signal processing algorithms Readings in hardware/software co-design, (452-464)
  56. Edwards S, Lavagno L, Lee E and Sangiovanni-Vincentelli A Design of embedded systems Readings in hardware/software co-design, (86-107)
  57. Lee E and Parks T Dataflow process networks Readings in hardware/software co-design, (59-85)
  58. ACM
    Hamon G and Pouzet M Modular resetting of synchronous data-flow programs Proceedings of the 2nd ACM SIGPLAN international conference on Principles and practice of declarative programming, (289-300)
  59. ACM
    Wan Z and Hudak P Functional reactive programming from first principles Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, (242-252)
  60. ACM
    Wan Z and Hudak P (2019). Functional reactive programming from first principles, ACM SIGPLAN Notices, 35:5, (242-252), Online publication date: 1-May-2000.
  61. Elliott C (1999). An Embedded Modeling Language Approach to Interactive 3D and Multimedia Animation, IEEE Transactions on Software Engineering, 25:3, (291-308), Online publication date: 1-May-1999.
  62. ACM
    Scholz E (2019). Imperative streams—a monadic combinator library for synchronous programming, ACM SIGPLAN Notices, 34:1, (261-272), Online publication date: 1-Jan-1999.
  63. ACM
    Scholz E Imperative streams—a monadic combinator library for synchronous programming Proceedings of the third ACM SIGPLAN international conference on Functional programming, (261-272)
  64. Golshani F and Dimitrova N (1998). A Language for Content-Based Video Retrieval, Multimedia Tools and Applications, 6:3, (289-312), Online publication date: 1-May-1998.
  65. (2019). A Co-iterative Characterization of Synchronous Stream Functions, Electronic Notes in Theoretical Computer Science (ENTCS), 11:C, (1-21), Online publication date: 1-May-1998.
  66. Huang Y and Ravishankar C (1998). Constructive Protocol Specification Using Cicero, IEEE Transactions on Software Engineering, 24:4, (252-267), Online publication date: 1-Apr-1998.
  67. ACM
    Elliott C and Hudak P (2019). Functional reactive animation, ACM SIGPLAN Notices, 32:8, (263-273), Online publication date: 1-Aug-1997.
  68. ACM
    Elliott C and Hudak P Functional reactive animation Proceedings of the second ACM SIGPLAN international conference on Functional programming, (263-273)
  69. ACM
    Caspi P and Pouzet M (2019). Synchronous Kahn networks, ACM SIGPLAN Notices, 31:6, (226-238), Online publication date: 15-Jun-1996.
  70. ACM
    Caspi P and Pouzet M Synchronous Kahn networks Proceedings of the first ACM SIGPLAN international conference on Functional programming, (226-238)
  71. ACM
    Amagbégnon P, Besnard L and Le Guernic P Implementation of the data-flow synchronous language SIGNAL Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation, (163-173)
  72. ACM
    Amagbégnon P, Besnard L and Le Guernic P (2019). Implementation of the data-flow synchronous language SIGNAL, ACM SIGPLAN Notices, 30:6, (163-173), Online publication date: 1-Jun-1995.
  73. Rondogiannis P and Wadge W Compiling Higher-Order Functions for Tagged-Dataflow Proceedings of the IFIP WG10.3 Working Conference on Parallel Architectures and Compilation Techniques, (269-278)
  74. ACM
    Orgun M (1994). Temporal and modal logic programming, ACM SIGART Bulletin, 5:3, (52-59), Online publication date: 1-Jul-1994.
  75. ACM
    Rondogiannis P and Wadge W Higher-order dataflow and its implementation on stock hardware Proceedings of the 1994 ACM symposium on Applied computing, (431-435)
  76. Du W (1993). n Intentional Approach to Parallel Programming, IEEE Parallel & Distributed Technology: Systems & Technology, 1:3, (22-32), Online publication date: 1-Aug-1993.
  77. ACM
    Langan D A multi-purpose dataflow simulator Proceedings of the twenty-fourth SIGCSE technical symposium on Computer science education, (87-90)
  78. ACM
    Langan D (1993). A multi-purpose dataflow simulator, ACM SIGCSE Bulletin, 25:1, (87-90), Online publication date: 1-Mar-1993.
  79. Wendelborn A and Garsden H Exploring the Stream Data Type in SISAL and Other Languages Proceedings of the IFIP WG10.3. Working Conference on Architectures and Compilation Techniques for Fine and Medium Grain Parallelism, (283-294)
  80. ACM
    Langan D An object-oriented design for a dataflow simulator Proceedings of the 30th annual ACM Southeast Regional Conference, (417-420)
  81. ACM
    Salomon D (1992). Four Dimensions of programming-language independence, ACM SIGPLAN Notices, 27:3, (35-53), Online publication date: 1-Mar-1992.
  82. ACM
    Augeraud M (2019). Dynamic objects, ACM SIGOIS Bulletin, 12:2-3, (135-140), Online publication date: 1-Nov-1991.
  83. ACM
    Ratel C, Halbwachs N and Raymond P (2019). Programming and verifying critical systems by means of the synchronous data-flow language LUSTRE, ACM SIGSOFT Software Engineering Notes, 16:5, (112-119), Online publication date: 1-Nov-1991.
  84. ACM
    Augeraud M Dynamic objects Proceedings of the conference on Organizational computing systems, (135-140)
  85. ACM
    Ratel C, Halbwachs N and Raymond P Programming and verifying critical systems by means of the synchronous data-flow language LUSTRE Proceedings of the conference on Software for citical systems, (112-119)
  86. ACM
    Freeman-Benson B (2019). Kaleidoscope: mixing objects, constraints, and imperative programming, ACM SIGPLAN Notices, 25:10, (77-88), Online publication date: 1-Oct-1990.
  87. ACM
    Freeman-Benson B Kaleidoscope: mixing objects, constraints, and imperative programming Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications, (77-88)
  88. Du W and Wadge W (1990). A 3D Spreadsheet Based on Intensional Logic, IEEE Software, 7:3, (78-89), Online publication date: 1-May-1990.
  89. ACM
    Langan D A localized condition handling construct for a graphical dataflow language Proceedings of the 28th annual ACM Southeast Regional Conference, (118-124)
  90. Arvind K and Nikhil R (2019). Executing a Program on the MIT Tagged-Token Dataflow Architecture, IEEE Transactions on Computers, 39:3, (300-318), Online publication date: 1-Mar-1990.
  91. Skillicorn D and Glasgow J (2019). Real-Time Specification Using Lucid, IEEE Transactions on Software Engineering, 15:2, (221-229), Online publication date: 1-Feb-1989.
  92. ACM
    Risch T, Reboh R, Hart P and Duda R (1988). A functional approach to integrating database and expert systems, Communications of the ACM, 31:12, (1424-1437), Online publication date: 1-Dec-1988.
  93. Barstow D Automatic programming for streams II: transformational implementation Proceedings of the 10th international conference on Software engineering, (439-447)
  94. ACM
    DeForest D, Faustini A and Lee R Hyperflow Proceedings of the third conference on Hypercube concurrent computers and applications: Architecture, software, computer systems, and general issues - Volume 1, (482-488)
  95. ACM
    Andert E A simulation of dynamic task allocation in a distributed computer system Proceedings of the 19th conference on Winter simulation, (768-776)
  96. ACM
    Caspi P, Pilaud D, Halbwachs N and Plaice J LUSTRE: a declarative language for real-time programming Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, (178-188)
  97. ACM
    Kaplan I (1987). The LDF 100: a large grain dataflow parallel processor, ACM SIGARCH Computer Architecture News, 15:3, (5-12), Online publication date: 1-Jul-1987.
  98. ACM
    Kaplan I (1987). Programming the Loral LDF 100 dataflow machine, ACM SIGPLAN Notices, 22:5, (47-57), Online publication date: 1-May-1987.
  99. ACM
    Standley H A very high level language for large-grained data flow Proceedings of the 15th annual conference on Computer Science, (191-195)
Contributors
  • University of Victoria
  • Arizona State University

Reviews

Trevor R. Hanson

.abstract LUCID is a functional language, but one which supports variables, i.e., values which change with time. . . . The statements of a LUCID program are equations . . . defining a network of processors and communications lines. LUCIDs dataflow approach to programming . . . [resembles] that of the UNIX shell, with its filters and pipelines. — From the Back Cover Similar comments are found in the publishers advertising. The book evidently promises a novel language based on pipelines and filters. Its publication is noteworthy: dataflow is all the rage today, but books on dataflow languages are few. This book will attract both academic and commercial notice. A detailed review seems appropriate: (1) an overall impression; (2) a summary of the book; (3) a summary of the language LUCID; and (4) a brief assessment. (1) Overall impression—Although many good ideas and insights are to be found, the book was disappointing: it tends to ramble; its tone is whimsical; it is unconvincing. But this indictment is more due to the books missionary task—and tone—than to any individual flaw. (2) The book—LUCID grew from efforts, begun in 1974, to show that a purely declarative language could be adequate for mainstream programming. Pure LISP was discarded—useful LISP applications must rely on “impure” features such as PROG and REPLACA—but this was not thought to reflect a fundamental weakness of applicative languages. It was hoped that a language without assignment or goto statements could give mathematical respectability to practical computation; but this would only be useful if the language were powerful enough to implement complex iterative algorithms. Ultimately, these early project goals—for a new way to write traditional algorithms—were abandoned. This book seeks to prove that the authors model of dataflow computation is a viable alternative to imperative computing, and that LUCID is an appropriate notation for expressing dataflow algorithms. Chapters I–IV chronicle the development of LUCID from a rough idea to a usable language. Chapter V gives examples of LUCID programming—Hammings Problem, enumerating primes, sorting—and contrasts LUCID programming methods with those of imperative languages. Chapter VI presents techniques for transforming one program into another, each yielding identical results but having different semantics (they are thus equivalent); these are useful in refining a computation or in proving assertions. Chapter VII discusses LUCID extensions being considered: i.e., solutions to limitations discussed in earlier chapters. Perhaps the most valuable and readable part of the book is its Appendix, a copy of the programmers guide for an extant LUCID interpreter. This is a well-written manual. It gives a good feel for how the language is actually used; it bears out many of the texts claims, although it seems to belie a few as well. (3) The Language LUCID—LUCID is a descendant of ISWIM. ISWIM was introduced by Landin in 1966 [1], as evidence that purely functional languages need not be notationally inscrutable. ISWIM is actually a family of languages, each based on a given algebra; an ISWIM program is a mathematical expression, without side-effects, having a value with respect to the target algebra. ISWIM uses a where clause to define variables or functions local to an expression; thus ( (( a+ b)2) 2*(( a+ b)2)+1(( a+ b)2) ) 2*3 may be rewritten in simpler form: ( x 2* x+1 x) 2*3 where x=( a+ b)2 end Equations within an ISWIM where clause are definitions: rewrite rules, not executable assignment statements. They may occur in any sequence; they may refer to each other; they may be defined, in turn, by nested where clauses. LUCID programs look like ISWIM programs: both are expressions in a target algebra, supported by where clauses. LUCID adds iteration operators to the target algebra; more important, LUCID introduces a time vector to all data. LUCID variables are thus multivalued: they do not have “current” values, but hold infinite sequences or “histories” of values. They are streams; LUCID expressions are filters acting on those streams, accepting an unending series of inputs, and yielding an unending series of outputs. Thus, length( stg) isnt a single value, but represents a series of lengths, matching a series of strings. The valid filter operations and stream data types are defined by the target algebra. Complex filters are built from simpler ones by “plumbing” them together; pipeline computations are built using standard function notation: “ f( g( x))” means the pipeline x &vbm0; g &vbm0; f.” More complex plumbing can be expressed using where clauses, iteration, and conditionals. This creates an adequate framework for expressing dataflow computations: the nodes and arcs of most dataflow graphs can be expressed as filters and streams in a network of LUCID equations. LUCIDs practical value as a programming language is shown in the UNIX-based LUCID interpreter (documented in the books Appendix, and made publicly available by the authors). LUCID uses a simple algebra with integers, reals, words, strings, and finite lists: the algebra of POP-2 [2]. It is implemented using a demand-driven, garbage-collecting interpreter, which nicely resolves the problems of evaluating nonterminating computations and managing infinite series. The LUCID examples, including a simple but nontrivial screen editor, illustrate that LUCID really can be used to build large programs. (4) Assessment—LUCIDs goals and results are valid; but their presentation seems wrong. The books title and portrayal suggest a structured presentation of a robust tool, a tool in current practical use; something on the scale of the recent Smalltalk books [3] or a standard language reference: an introduction and guide to a mature system. Sweeping claims for LUCID, made in early chapters, could only be borne out in large-scale software development, maintenance, and training. But LUCID is strictly experimental. This book reads like a lecture on the genesis of LUCID, or like a dissertation on a new language idea. It does a fair job at this level: the book is worthwhile, but to a restricted audience. As the text traces LUCID development choices—with dead ends and abandoned constructs sketched along the way—LUCID is shown to be an unfinished solution, an arbitrary point in an evolutionary sequence. The book was generally readable; however, a few specific complaints can be made: :9BAfter tedious discussions of the obvious—e.g., handling conflicts among local variable names—many ideas of real interest are glossed over. Also, important topics are omitted, such as LUCIDs implications for compilers or databases. Other dataflow research receives only cursory treatment; some relevant work is unmentioned. A few examples of the latter: Smalltalk [3]; the &mgr;-calculus [4]; and Hewitts work on actor semantics [5]. A schoolboy humor permeates the book; this is typified by a roasting of most computer scientists, shown in caricature as Cowboy, Wizard, Preacher, Boffin, Mr. Fixit, and Handyman. These images and other witticisms recur throughout the book, and even the index. They are funny, but somewhat inappropriate. LUCID clearly can be used to express dataflow computations; but the reviewer remained unconvinced that LUCID is an appropriate way to do so. In fairness, it must be admitted that the books invitation to use the LUCID interpreter was not pursued; nevertheless, LUCIDs methods and message were presented clearly, and were felt to be understood correctly. LUCID is a vision. Embracing a techical vision is a near-mystical experience; a negative reaction can simply mean that the vision wasnt shared. But the LUCID vision lacks the intuitive clarity and the compelling weight needed to motivate a shift in world view. LUCID is a weak image, compared to past successes: UNIX pipelines; BNF; Smalltalk; the relational calculus. The dataflow model is itself a strong image: tokens flowing from node to node along the arcs of a dataflow template. LUCID gives a way to create these templates in a functional language; but the language doesnt feel like dataflow; it makes dataflow feel like LISP. The LUCID examples dont appear to be better than conventional programs. Although free of internal side-effects, data stream composition and linkage seem abstruse and implicit, as bad as the objectionable parts of traditional languages. LUCID, like other languages, has weaknesses as well as strengths. Perhaps this will change if the language is refined. Who should read this book People designing a dataflow or functional language; people building demand-driven or reduction systems, symbolic manipulators, or bizzare interpreters; people interested in the evolution of programming languages. The ideas are sound. Who should skip this book People seeking an introduction to dataflow concepts; people needing a dataflow language for use today, as an alternative to existing methods; people wanting an example of the dataflow mainstream. The book is frustrating: it offers good ideas, but perhaps in the wrong place. As a snapshot of some valid dataflow research, it is competent. As a paradigm for the next generation of programmers, it must be said to fall short.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Recommendations