designcoding
About Table of Contents Keywords Monthly Archive
Support designcoding!

30 years old Grasshopper

October 22, 2012 | Discourses
#data-flow #grasshopper

Nowadays I plan to enter Rhinoscript, Python, and DesignScript back again. However, I can’t leave Grasshopper3D without mentioning the “cognitive shift” it pioneered in the design computing community. Here is a phrase from a famous special issue of “Computer” Journal, published in 1982 with Tilak Agerwala and Arvind’s editorials;

Data flow languages form a subclass of the languages which are based primarily upon function application (i.e., applicative languages). By data flow language we mean any applicative language based entirely upon the notion of data flowing from one function entity to another or any language that directly supports such flowing. This flow concept gives data flow languages the advantage of allowing program definitions to be represented exclusively by graphs… There are many reasons for describing data flow languages in graphical representations, including the following:

(1) Data flow languages sequence program actions by a simple data availability firing rule: When a node’s arguments are available, it is said to be firable. The function associated with a firable node can be fired, i.e., applied to is arguments, which are thereby absorbed. After firing, the node’s results are sent to other functions, which need these results as their arguments. A mental image of this behavior is suggested by representing the program as a directed graph in which each node represents a function and each (directed) arc a conceptual medium over which data items flow…

(2) Data flow programs are easily composable into larger programs.

(3) Data flow programs avoid prescribing the specific execution order inherent to assignment-based programs. Instead, they prescribe only essential data dependencies. A dependency is defined as the dependence of the data at an output arc of a node on the data at the input arcs of the node. (For some functions, the dependency might be only apparent.) The lack of a path from one arc to another indicates that data flowing on those arcs can be produced independently. Hence, the functions producing those data can be executed concurrently. Thus, graphs can be used to present an intuitive view of the potential concurrency in the execution of the program.

Davis, A.L., and R.M. Keller. “Data flow program graphs.” Computer 15.2 (February 1982): 26

And finally, they conclude with a practical argument, from the perspective of a computer programmer. Nowadays, the same perspective is also changing “casual coder” architects’ understandings of the whole theory of algorithmic architecture. Except for the fact that it is 30 years later now.

Professional programmers with years of experience in writing Fortran code have become very good at writing Fortran-like solutions to problems. The change to Algol, Cobol, Pascal, etc., is not a large conceptual step, in that the structural styles of these languages are not radically different from Fortran’s. However, data flow languages require and support very different styles. Programmers trained only in conventional languages might be unwilling to try problem-solving techniques based on graphical or even functional program structures. Therefore, the potential gains of such techniques must be made apparent to programming management.

Davis, A.L., and R.M. Keller. “Data flow program graphs.” Computer 15.2 (February 1982): 41

There is still much to do with dataflow management in architecture and education, however as most computer scientists agree, these paradigms should also be used together with old ones, accepting their advantages. I’ll continue to work with Grasshopper3D, but also I need to give more time to new environments such as designscripting, python, and Dynamo. As my dissertation advisor Oya Pakdil says;  “neither of them, but both of them…”

Cite this post

Yazar, T. (2012, October 22). 30 years old Grasshopper. designcoding. Retrieved August 24, 2026, from https://www.designcoding.net/30-year-old-grasshopper/

Related Posts

Leveling in Dataflow

March 26, 2015

This is a great book, explaining very familiar concepts of dataflow diagrams for designers firsthand. Leveling is an interesting chapter there, I’m not sure if it completely fits with the use of “Clusters” in Grasshopper but it is obvious that the complex systems should be well organized not only to be perceptually “better” ones but also to develop a way to use parts of definitions again and again in different situations. …How do you actually DO the leveling of DFDs? The…

The DataFlow Approach

October 18, 2012

In 1982, it has been more than 15 years since the dataflow approach to algorithm designing are discussed in computer science. Computer journal publishes a special issue with the foreword of Tilak Agerwala; he says; …We have discussed two characteristics of the von Neumann model of computation: global updatable memory and a single program counter. It will become clear shortly that the data flow model has neither of these. First, the data flow model deals only with values and not with names of value containers…

Designing with Grasshopper

May 2, 2012

Today, there are pedagogical and practical challenges on the use of algorithms in architectural design, as computer puts not only a physical but also a cognitive layer between designer and the subject. Formulation of this cognitive layer is becoming important, regarding which model of computing is used to connect designer with the subject. Is it a “designerly” search, or design exploration in a visual programming environment? As most of the researchers admit that visual programming environments are very effective in generating variations,…

Data Domains in Grasshopper

March 24, 2024

In this short tutorial, I am showing the essentials of data domains in Grasshopper. A domain is a data type in Grasshopper that represents a portion of the 1d or 2d number space. This requires a starting and ending point in those spaces. In 1d, these points are two numbers. Then, the domain represents all the numbers between them. In 2d, a data domain is represented by two coordinates (u, v). This presentation illustrates this concept with the area defined…

Data Structures in Grasshopper

June 8, 2023

Data structures and data matching principles are important to be able to design with Grasshopper. In this tutorial, I show data matching procedures with arithmetic operations. Then I repeat them in the production of geometric objects. I think it should be easier to use this programming language once the students understand the basic principles. Therefore it would be easier to design with it. Sometimes the design process of these diagrams proceeds from left to right (by induction) but sometimes it…

  • Chapters

    • Algorithms
    • Discourses
    • Fabrications
    • Studios
  • Explore

    • All Keywords
    • Table of Contents
    • Monthly Archive
    • #rhino-python
    • #polyhedra
    • #parametric-surface
    • #robot
    • #tessellation
    • #boolean
    • #kuka-prc
    • #dome
    • #design-object
    • #image-sampler
    • #terrain
    • #sandblasting
    • #stone
    • #parametric-curve
    • #animation
    • #cycloid
    • #art
    • #simulation
    • #aperiodic
    • #tiling
  • Search

  • Support designcoding!

  • Enjoying designcoding? Support me on Patreon to keep it growing. Thank you!

  • copyright 2026 designcoding.net | about | privacy policy | end user license agreement