hi am writing a paper on my use of Grasshopper and i just need some basic terminology questions answered:
some scripts in Grasshopper control all or most of the model while others control only local parts of the model, is there a name for this such as Globalscript vs. Local or Superscript vs. minor???
what is the difference between a Grasshopper: Definition, Script or Expression (assuming these are all ways to describe a block of connected Grasshopper symbols performing a function)
I honestly believe it really doesn’t matter what you call things as long as you’re consistent within the scope of the paper and you don’t mix them up so that the paper is not confusing.
That said, it’s kinda accepted to call Grasshopper files (.gh) “Definitions”. You can as well call them “Scripts” however, if you have actual scripting components inside it may lead to confusion.
And now for the Components. The “Symbols” you mention. I belive “Component” is the widely accepted term, although in some parts of the World they call it “Battery” (Beats me why, maybe because of the shape). To me “Battery” is funny and inappropriate.
If you have scripting components I suggest using “C# scripting component” and “GhPython component” and refer to the actual script inside as “code”.
Anyways, that’s what I would do. As I said above, it’s up to you, just keep it consistent and clear. Maybe even leave a section at the end of the paper to clarify the terms. I have never written a paper using GH . The last time I wrote a paper GH didn’t exist (or was in an early stage of development and I didn’t know about it. )
Not sure what do you mean with that. GH has a cascade flow, if you change something all downstream components will be updated. You can measure by each component (usually a source parameter) what percentage of the definition (and model) it affects, but there is room to reformulate the definition and change this, so I don’t think it’s something fundamental and generic. This could make sense in specific design fields, with restricted construction topologies, where certain algorithms are better than others or are so similar that it is convenient to have templates in which the outputs of the parts of the definition are structured. But this is within the specific modeling fields, so here I think it is convenient to differentiate between local and global parts. But tell me if you understand that differently.
As all language, it has a context. Same word in different context can mean something different. In McNeel language, as far as I understand, definition is the gh circuit, because you define the model explicitly, that’s the point of GH. Some people call this script as well, but from my point of view this should be avoided so it doesn’t get confused with the written code in a conventional programming language. I’ve never seen this called expression, though. In the context of GH, it refers to the Expression components or instructions within them. Language is good to the extent that we understand each other and avoids misunderstandings. Generally, the context of the message gives the necessary information to dispel ambiguity. Then comes personal preference, I’ve learned to name it this way, I think I follow McNeel’s language, but I don’t think you can say it’s wrong as long as it’s clear what you mean. For efficiency, it’s best to use the same language that the software uses.
The first thing I learned about Grasshopper from @DavidRutten was:
Parameters - remember stuff. Components - do stuff.
Generally, what you create in Grasshopper is called a “definition”.
I, myself - sometimes call it a “solution”, which is somewhat wrong but I usually refer to it as such, when I have many clusters of grasshopper definitions, that impact the same model.
ex. Can you give me the solar analysis definition? / Can you give me the environmental study solution?
Again, this is just me.
Scripts are all the small bits of code you put inside a component (if you have any).
This shouldn’t be confused with other terminology since you can write and execute scripts in Rhino without Grasshopper, but via a compiler.
Then again, Grasshopper is a visual programming/scripting language, so referring to the “definition” as a “script” it’s not technically wrong.
I like to also call them algorithms since they are sequential, but someone could find that term confusing as algorithms mean rather different things for different disciplines.
I never thought the word “script” was appropriate for a GH file because that word already has several established meanings, none of which relates to what a GH file actually is. When I first started using GH I tried using the word “layout” for the contents of a GH file, but no one seemed to like that. Full disclosure: “Layout” also refers to all the components of a model railroad.
Same as script, in the McNeel language, layout means something very specific.
lol, yes, I would never understand why would someone use that word for
paper space or a
sheet of a drawing
Aha! I don’t use Rhino so I had no idea there was such a thing as a Rhino layout. So thanks for pointing that out. Do you think there could/would be confusion between a GH layout and a Rhino layout?
definitely. A layout is something that doesn’t necessarily have logical connection. Algorithm and Definition implies a connection between the “laid” objects (components)
If we already have a reserved word to refer to a “definition”, why to use others. Any alternative is subject to context.
The definition/code script/function/circuit… is the drawing of the algorithm, while the algorithm is the idea behind the implementation. At least I like to see it that way.
Hi Aileen, there is a Grasshopper primer that should answer your questions consistently for your paper.
Grasshopper primer V3
Thank You so much everyone, your input has helped clarify the terminology!