We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hello,
I have a question for people with experience doing generative design, it's not really about processing, but rather about doing generative design using a variety of tools. My question is this; do you guys feel that it is necessary to know computer programming in order to do generative design (the specific field/application isn't important)? (I'm thinking of tools like nodebox or grasshopper which could potentially be used without having computer programming experience).
Your input will be highly appreciated, this is for my school dissertation in CAD.
Thanks!
Comments
yes.
@Gio -- Re:
This depends on precisely how you design generative design! (and what you mean by necessary). If you mean something like the current Wikipedia page (which is kind of a mess):
and you are asking about algorithmic design problem solvers or "form-finding processes"...
...then I would say:
It is self-evidently not necessary to be a programmer in order to use algorithmic tools. Fact: non-programmers do use such tools every day. An algorithm-illiterate traffic engineer could use an "auto-intersection wizard" to design a traffic intersection without knowing anything about how the wizard works at the algorithmic level.
HOWEVER, in many circumstances that might not be a good idea. Without understanding how the generative design algorithms specify the problems and without understanding how it then attempts to "solve" the problems it defines, a technically illiterate user will often be a) asking the wrong question b) not customizing their approach to the situation (when you have a hammer, everything looks like a nail), c) failing to distinguish a good answer from a bad answer. For very standard problems, or for situations in which there is no such thing as a good or bad answer, a non-technical user can customize and run an EZ-design wizard and create interesting, fun results. However, if context, correctness, or creativity are priorities then it is crucial for the designer to possess a deeper understanding of the specific algorithmic processes.
If by generative design you actually mean something more like "generative art"...
...then I would point out that not all generative art is algorithmic / computational:
So with that different definition, again, no. Expertise in computer programming is not necessary -- someone working in generative systems could work with petri dishes and eye droppers instead of code classes and methods. However, also again, if the designer needs to do work that is contextually appropriate, or correct, or creative, then methodological expertise is key. In the case of the petri dishes, that might involve expertise in chemistry, biology, genetics, etc....
Dear Jeremy,
Thanks for taking the time to reply,
I think I get your point. The background for the question is the teaching of generative design in Industrial Design. I believe this is too valuable of an approach not to teach it to students, however I wonder how important it would be for students to have some sense of computer programming. It seems it would be helpful but not crucial.
It seems that (at least) industrial design schools have not moved far beyond fostering a set of 'traditional' computer skills (typically along the lines of what is typically understood by 'CAD' in the field). Those skills, although valuable, rest upon the 'domestication' of the computer into the design process. However, (and thus my question) in order to enable (industrial) designers to do things like Generative Design, I think it is necessary that the approach towards computer skills in schools shifts (or expands) from that traditional view of CAD (based on learning 3D modelling packages) and more towards a view aiming to develop computational thinking skills/computer science skills.
I'd be interested in learning what are your thoughts in terms of good resources and languages that you think would be good for novice designers to learn in order to do Generative Design.
@Gio --
Several years ago when I have taught workshop-length introductions to generative systems to non-programmers (in the arts) and I wanted to emphasize a few specific generative concepts rather than presenting computational thinking in general or giving a quick intro to programming course, I used things like ContextFree and NodeBox.
ContextFree is its own little language, but is entirely focused on generative context-free grammars. NodeBox used to use Python, but is now a patch-based / flow-control environment, like Max/MSP or PD.
Are you familiar with them, or programs like them?
I agree with you re:computational thinking skills. For this, rather than the fastest route to making and modifying generative systems, I am personally partial to Python, JavaScript, and Java -- although I think the learning tools, intro programming environment, and documentation / support ecosystem (like Processing, for example) probably matters more than the particular language chosen. Processing for example has modes in several languages, including those listed above and Ruby.
Dear Jeremy,
Thanks again for replying. This is very helpful, I may have a chance to do a couple of workshops in the summer and I wasn't sure what would be a good tool to use, so having the recommendation of someone with experience in generative design is very useful. So I'll probably use one of these two.
Yes, I am 'familiar' with both Context Free and NodeBox, I mean familiar in that I know about them, but I haven't really used them myself. May I just ask, what do you mean when you say that Processing 'has modes in several languages'? Does that mean that you can typing different programming languages inside Processing?
@Gio -- re:
Yes, through Programming Modes: https://processing.org/reference/environment/#Programming_modes
Most of these modes can be downloaded and used directly in the Processing IDE through the Contributions Manager.
ContextFree is its own little language, but is entirely focused on generative context-free grammars.
It is great for generation (randomized output / recursion / random walks etc.). HOWEVER it is designed for visual inspection of output -- there is no easy built-in feedback mechanism for progressive optimization -- solving, genetic algorithms etc. The other main drawback is that, because it is "its own little language" learners aren't simultaneously learning general programming skills to the same degree that they do while learning things like Processing.
I haven't used Context Free recently and the code hasn't been updated in a while, but it looks like the Gallery is still active and my experience was that it was quick to learn, there are tons of examples, and newcomers to programming find modifying existing sketches is simple and fun, with almost instant visual feedback.
Some example links: Circle Maze - Cubisia, Cubic Complex and v2 - Insignia - Jigsaw - Kaleidoscope Tiling - Mind the Gap - Generational - Night City Street - Recursive Rug - Socks Drawer - Space Invaders Sticker Collection
Other tags of interest linked to the gallery: buildings, landscape, map, mathematics, organic, recursive, writing.
Dear Jeremy,
Thanks a lot, really appreciate it.
The example of the socks actually shows how these techniques can be of great relevance beyond pure form generation. I'll try to do something similar to explain how these techniques can be useful to automate the exploration of possible configurations (problem spaces) like when packaging the internal components of a product.
Thanks
Br
G