Live data from Hacker News

Unit is a general purpose visual programming system

unit.software

81–84 of 84 posts

Re: Unit is a general purpose visual programming system

#81
post #76

Earlier quoted context omitted.

The internal representation isn't the problem, or even a problem. It's not even beginning to address what I described. E.g this is a real line of code: link = wf["links"].find{ _1["rel"] == "self" && _1["type"] == "application/activity+json" } Now consider I have a visual programming version representing that expression, and I want to ask someones opinion about it on Slack. Unless your visual programming environment…

Your assumption is that visual programming and textual programming are disjoint, but I have not observed this to be true (necessarily). Being able to edit a program in a semantic fashion does not preclude its having syntax. I don't see syntax as a boondoggle to be eliminated, but rather the highest-bandwidth way we know how to convey information! I think you're right that the end game of any successful attempt at sta…

I've assumed nothing of the sort, nor have I argued for syntax to be eliminated. Both wildly misrepresent what I've argued.

On the contrary you will find that throughout this thread my biggest issue with visual programming is the reverse:

That a textual syntax that maps cleanly to the visual representation is an absolute necessity.

The problem is no visual programming system has included such a system. They've either been only visual, or they've been visual representations of programs written in classical programming languages.

Nobody has come up with, e.g. a language designed specifically to facilitate new visual programming capabilities without losing the ability to cleanly roundtrip to text.

I tried and gave up. Maybe I'll revisit it again in retirement, but I really hope someone beats me to it and finds something that works.

Re: Unit is a general purpose visual programming system

#82
post #78

Earlier quoted context omitted.

The problem is that I'm not talking about markup. Markup - unless it's so lightweight as to be near unnoticeable is not a solution. Unless every application you're transferring it via supports CSTML, the representation needs to be as compact and readable as a regular programming language . To take your example, pretty much anything longer than [1, true, "3"] is a non-starter if someone is pasting it into Slack, or se…

We're using markup to communicate right now and it's the overhead is small enough to be unnoticeable. Try copy and pasting some HTML-formatted text from this page into your paste buffer. I assure you that what goes into the buffer is HTML. You can verify this because if you paste the text into an HTML-embedding WYSIWYG editor (such as an HTML email composer) the formatting will be preserved. But if you paste the cont…

Now try pasting it into your terminal, or any of a large number of other tools that doesn't support HTML.

Now try doing the same with CSTML, in applications that so support HTML.

Now consider how little that markup contributed to the semantics of the text here - most of it can be stripped and the text retains it's meaning.

Then consider how long it took for HTML to percolate through these applications despite HTML - unlike CSTML- having universal utility.

And here's the thing: As someone with a history of writing compilers, parsers, language tools over 30+ years, CSTML is too verbose for me to want to use even for tooling. It's way too low level even as an internal representation for tooling.

It also still doesn't help: You still will need a compact textual representation anyway so people can represent it in contexts where the tooling doesn't exist, or can't exist, such as paper and handwriting, and speech.

All I can do is encourage you to try. If you succeed, great, and if not you will understand the difficulties involved.

I've tried the custom syntax representation (though I used XML which saved me from writing a custom parser) - it turned out to just be an obnoxious detour. I tried syntax aimed at removing ambiguity in round-trips, and it sort of worked but got too verbose. I tried a purely visual approach, and hence why I'm so insistent you need to be able to roundtrip to text. I spent years trying things and looking at others attempts.

I'd love to be wrong, but I very much don't expect any big breakthroughs in this area in decades - the attempts I keep seeing keep repeating all the same mistakes with few signs of lessons learned.

Re: Unit is a general purpose visual programming system

#83
post #82

Earlier quoted context omitted.

We're using markup to communicate right now and it's the overhead is small enough to be unnoticeable. Try copy and pasting some HTML-formatted text from this page into your paste buffer. I assure you that what goes into the buffer is HTML. You can verify this because if you paste the text into an HTML-embedding WYSIWYG editor (such as an HTML email composer) the formatting will be preserved. But if you paste the cont…

Now try pasting it into your terminal, or any of a large number of other tools that doesn't support HTML. Now try doing the same with CSTML, in applications that so support HTML. Now consider how little that markup contributed to the semantics of the text here - most of it can be stripped and the text retains it's meaning. Then consider how long it took for HTML to percolate through these applications despite HTML -…

Sorry maybe I wasn't clear VSCode is an application which doesn't support HTML embedding. It's no different than pasting in to Notepad, or a web browser text input. Did you actually try it? Did you notice that the HTML internal to the paste snippet didn't appear and ruin your day, no matter what application you pasted to? I was expecting you to see that only in the HTML email editor would you find any sign that there had been embedded formatting data.

Re: Unit is a general purpose visual programming system

#84
post #53
post #9

Love unit, long time admirer. If you're into this, you might also be into Substrate - a non-visual but also graph-based programming model, for multi-step ML programs https://www.substrate.run/

https://guides.substrate.run/changelog#june-20-2024 > Added `If` Uh, that's a pretty weird thing to add in a second release

Second release since our public launch – we've been around in private beta for a bit and have had different versions of conditional support for a while!
Post reply on HN