A trend in CAD has been a move to parametric desig...
# thinking-together
g
A trend in CAD has been a move to parametric design. I was wondering software design would trend the same way. What do you think?
The programming language that best matches is prolog.
in CAD the process for designing a part would be 1. lay down a basic shape. 2. add constraints and features. 3. the software tells you where there is wiggle room or you made a contradiction. 4. while not done goto 2.
i
Maybe if you contrasted that process against what CAD was moving away from, we might be more easily able to find some interesting analogies to programming
g
i think prolog does step 1 & 2 ok but i think the key is checking under/over constrained parts. Directing the programmers skill to picking just the right constraint to lock down what the program can do.
k
I suspect the problem with applying this idea to software design is step 3 - we have no idea how to define an equivalent of wiggle room. Related reading: "Building robust systems" by G Sussman. http://sites.google.com/site/adaptiveunm/seminar/paper_suggestions/robust-systems.pdf
☝️ 2
m
would the set of available methods constitute as the wiggle room?
otherwise you create a new method
r
Interesting point re parametric design on the rise in CAD, another example of this in a different industry is the rise of a variety of procedural node-based editors in special effects for film production. In particular, Foundry Nuke for compositing, and SideFX Houdini for procedural special effects. I just saw this tweet yesterday about Nuke, which contains an info graphic with which software was used for Sundance Film Festival entries https://twitter.com/JulianCrespi/status/1220556492664967168
Another example is constraint-based layout systems like Apple's Auto Layout, which is the default way to layout interfaces that can scale to various device and window sizes in macOS and iOS. https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/
(PS please correct me if I'm wrong about any of these being examples of "parametric design", this is the first time I've heard this term and I think recognize the pattern, but I might not have it quite right.)
On another angle is that this throws a monkey wrench in the idea that some things that have traditionally been done programmatically, are now being done visually, e.g., this post (which I love) by Webflow CEO Vlad Magdalin https://medium.com/@callmevlad/a-cheeky-guide-to-creative-tools-e5e3388c4614 It seems that the full story is that visual tools are adopting programmatic techniques just as much as vice-versa.
g
I was wondering if a formal definition of what a program should do would be enough for a computer to generate the program for us. Not unlike an ML but have the generator be able to express how much latitude it has. To help programmer decide if that is okay.
it would be more like a conversation. programmer: I want a program that can do X. generator: I can do that by A, B, or kill all humans. programmer: please don’t kill all humans program: ok I’ll use A.
s
@George - the conversational model has fluttered around in my mind as well. Excerpt:
we can also consider replacing the write-then-run program idea (this is the ‘submit a paper’ model) with an incremental model where the programmer successively provides more detail about the desired behavior and a constraint solving system refines the behavior (this is the ‘have a conversation’ model).
I think it's an interesting direction and I'm not aware of much exploration of this idea. Maybe there could be a model where the computer is aware of 'all possibilities'. Then the programmer provides some information and this prunes the set of possibilities - the remaining possibilities are visualized. The programmer then provides even more information, and so on. This is quite vague of course—the hard problem is defining the models and languages used in this scheme. BTW, one paradigm that might be somewhat related is behavioral programming, where you describe behavior for specific scenarios: https://cacm.acm.org/magazines/2012/7/151241-behavioral-programming/fulltext. WDYT?
📝 1
a
I like the “submit a paper” vs “have a conversation” models idea. Interesting concepts to think with.