Questionnaire about textual vs visual programming for generative design

Hello everyone (nice to be back on the GHForums :))!

I am having… not so much of a Grasshopper problem, but rather a call for help in a research project that I have been doing within the Honours Programme of my university (3rd year TU Delft Architecture).

The thing is this: for said project, I have been researching the benefits (and drawbacks) of using textual programming (as opposed to visual, i.e. Grasshopper and such) within an architecture design environment. Apart from just satisfying my personal curiosity, one of the purposes of this project is to provide future Architecture students of my faculty with a convenient list of sorts for considering if they want to get into e.g. using Python components in Grasshopper.

My research up until now has comprised of looking up appropriate literature, as well as myself trying (and partially succeeding) to achieve a self-imposed design brief in Grasshopper with nearly only Python components, and the results have been massively interesting!

However, as a last part of the process I very much want to incorporate a "real" perspective, i.e. actually interviewing architects who have used visual and textual programming within their design processes and that way getting that look into what is actually practical in an architectural design context.

This is where the reason for this post comes in: as I know there are a lot of architects on this forum, I was hoping to find someone who (a) uses (apart from Grasshopper, of course) any sort of textual programming within their architectural design process (this can be Python/C#/VB.net components within Grasshopper but also e.g. niche IDEs like VisualScheme) and (b) is willing to have a call (using Skype or whatever) on a relatively short notice (ideally within the next week or so) where I ask some interview questions and we can hopefully just have a casual chat about this topic.

I am really looking forward to hopefully getting some response! (^▽^)

(Or if no one is available I might eventually change the format to just posting a few questions in here that people can answer using replys to this post :])

Thank you so much in advance,

Jiri Swen

Okay, so after waiting / personally also neglecting this post for a bit too long I’ve decided that indeed it should be a better idea to put this in the form of a questionnaire that anyone could give some answers to.

If you just feel inclined to answer a few of the questions that is of course still greatly appreciated!
Also: feel free to make your answers as brief or extensive as you deem appropriate :slight_smile:

For the purposes of this questionnaire, "Visual programming for generative design" is often substituted for "Grasshopper", but in case of the use of a different IDE for visual programming, your answers are still relevant!

General questions about Grasshopper

  1. For what (main) purposes do you use Grasshopper? (e.g. experimentation, optimisation, refinement…)

  2. Which are the design phases in which you use Grasshopper the most / exclusively?

  3. Are there certain projects where you use Grasshopper more than with others, and if so, what sets these projects apart?

  4. What are the reasons to use Grasshopper in your design process? (compared to not using it) (e.g. easy tweaking, dealing with certain kinds of complexity…)

  5. What would be your prevalent selection criteria for software which supports any type of "scripting" for generative design?(e.g. ease of use for novices, quick drafting of ideas, methods for abstraction, architecture-specific components, certain calculative abilities…)

  6. Do you use a lot of external plugins within Grasshopper and could you please give one or a few examples?

Questions about textual programming

  1. For which activities/phases/projects do you use textual programming (which can be the Python/C#/VB.net components inside Grasshopper, or something else entirely like the VisualScheme IDE)?

  2. Which types of functionality do you think do not work well/efficiently enough or are even outright impossible using only Grasshopper (therefore making you move towards using/incorporating textual programming in certain situations)? (e.g. manipulation of certain objects/structures, control of camera/baking/etc., certain programming principles like iteration or class structures…)

  3. Are there any other reasons that you sometimes prefer (for large or small (sub-)tasks) textual scripting over going the visual route? (e.g. efficiency, visual complexity, available libraries…)

  4. On the other hand, do you have any specific reasons that you have not mentioned yet that visual programming may sometimes be a better option for certain tasks?

  5. Could you give any concrete examples of where and why you used textual programming over visual programming in your design process? (the description does not have to be very detailed, but I am mostly just genuinely interested :))

Thank you so much for your response!

Interesting questions. Would also love to see some answers here:

I’m not working as architect, so I can’t answer the first questions, however I could answer the questions about “textual” programming.
First of all I don’t see much of a difference. Its programming. If you have an addiction to it, you’ll master both. If not, you won’t stand a chance. Textual programming seems to be more difficult, but on a scripting level its not. The complexity of visual programming is totally underestimated.

  1. Most scripts I write contain textual scripts. I use it to create geometrical patterns, predominantly surface models in all phases of product development. Difficulty exponentially raises when it comes to final data.
    Textual scripts often simplifies things for me, but quite often are the only way to proceed.

  2. Well everything which breaks the downstream logic, such as recursive, event-based or time-based logic.
    Furthermore visual programming is limited to predefined components. So whenever you are missing something you need to write it for yourself or hope that someone else has made it. In addition to that, its always a good idea to truly understand what you are doing, using plugins and external scripts doesn’t necessarily help you in solving a (real world) problem

  3. Visual complexity is a big issue. I find it much harder to read and maintain definitions with hundreds or even thousands of components. However the most “additional” reason is reliability. Its much easier to handle failure or unexpected results. Efficiency is overrated. Efficiency does not come from smart programming or using a “fast” language, but rather from understanding what’s going on. Being able to write efficient algorithms is the key. But in real world, who cares if you need 1 min or 1 hour in computation, if you safe 1 day.

  4. Proof of concept, Speed coding,

  5. I think I can break it down into 3 aspects.
    1.Sorting/Ordering/DataManagement,
    2.Extending functionality
    3.Special case handling.

I’ve written a whole NURBS/Bezier library, constantly improving and reusing. Most other scripts are always tailor-made.

Just one more thought. Often its not clear if manually solving a problem is faster. GD often overcomplicates things. I think there are not many people having a real benefit in real world jobs (if you count in the learning curve), so I have the feeling that GH is overrated in professional use. It would be interesting to know who really works with it all day. I consider myself as someone using it quite often (its strongly declining for me, but previous years it was about 25 % of the annual work)…