<div dir="ltr">The problem is it is too sparse because typically one line of code becomes a box. So what happens to a design that is 350 lines?<div><br></div><div>OpenSCAD is a very small language, it can all be summarised on the one page cheat sheet. I am surprised anybody would struggle to learn the syntax but using it to create geometry is much more complex than the language. It requires an ability to imagine a shape and then decompose it it cubes and cylinders, etc, and be able to understand what manifold is and do high school level trigonometry. I don't see how replacing the text with boxes helps with any of that. Code completion if the editor achieves more or less the same.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 25 Oct 2019 at 14:35, Doug Moen <<a href="mailto:doug@moens.org">doug@moens.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u><div><div>@nophead: Using text is a major benefit of OpenSCAD because it can be pasted into emails and checked into source control. It is also fairly concise. I imagine the graphical representation of my typical designs would be an enormous tree.<br></div><div><br></div><div>All this is true; text is important.<br></div><div><br></div><div>@nophead: Do people really struggle much with syntax?<br></div><div><br></div><div>Yes, some people do really struggle with syntax. The Elm community calls this "the syntax cliff": "How many people fall off the syntax cliff and give up on a language or just quit programming entirely?". <a href="https://elm-lang.org/news/the-syntax-cliff" target="_blank">https://elm-lang.org/news/the-syntax-cliff</a><br></div><div><br></div><div>As a professional software engineer, I can memorize large amounts of programming language syntax. It's a skill not everyone has, just as a concert pianist can sight read music notation while playing the piano in real time with all 10 fingers (I can't do that).<br></div><div><br></div><div>I know that OpenSCAD is a "CAD" program, but I got into it in order to make art. In the 3D computer graphics business, the most popular interface for programming languages aimed at artists is "node and wire" syntax. For example, Blender has this.<br></div><div><br></div><div style="margin:1em 0px;text-align:center"><img src="cid:16e032456c0cb971f161" style="max-width: 100%; height: auto;"></div><div>I'm not claiming that node+wire is the "best" graphical syntax. However, here are the benefits:<br></div><div>* You don't have to memorize module names. You can select a module from<br></div><div>   a hierarchical menu, or find a module using keyword search,<br></div><div>   and then a node is created which calls the module.<br></div><div>* You don't need to memorize module parameters.<br></div><div>   The parameters are all laid out for you in the node.<br></div><div>* You can continuously tweak numeric parameters using a slider.<br></div><div>   You can use a colour picker to tweak a colour parameter.<br></div><div><br></div><div>For me, the ability to tweak module parameters using a slider and get real time feedback in the preview window is a game changer. It makes me much productive in certain tasks. For other people, not having to memorize syntax is the key feature.<br></div><div><br></div><div>There are ways to combine the benefits of text syntax with the benefits I listed of the node+wire syntax. A "projectional editor" represents the program in memory, not as a character string, but as a syntax tree. As you edit the program, the syntax tree is modified, and the syntax tree is "projected" onto the display, possibly as text, or possibly using a graphical syntax, such as node+wire, or like BlocksCad. There are lots of text-based IDEs for conventional programming languages, which use this approach to provide assistance to the user, such as tab-completion of identifiers, auto-fill-in of function argument lists, and even sliders for tweaking numeric parameters. The GlslEditor supports sliders for live editing of GLSL shader programs (GLSL has a C-like text syntax).<br></div><div><br></div><div>What I think would be really cool is a projectional editor that lets you switch back and forth between text syntax and graphical syntax. I'm looking around to see if someone has implemented this idea already.<br></div></div>_______________________________________________<br>
OpenSCAD mailing list<br>
<a href="mailto:Discuss@lists.openscad.org" target="_blank">Discuss@lists.openscad.org</a><br>
<a href="http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org" rel="noreferrer" target="_blank">http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org</a><br>
</blockquote></div>