Discussion about this post

User's avatar
Alcides Fonseca's avatar

Have you looked into the Hazel editor? It has the good things of ascii and the good things about type-safe editing of ASTs. https://hazel.org

Expand full comment
David Roberts's avatar

Having worked on a couple of "no-code" systems over the years, I'll tell you that in general visual programming systems only work if you limit the domain severely. You talk about Game Maker and say that it only allows 2D RPGs. Yep, exactly. That's the only way it works. Visual state charts are great, but they only work for state charts, not general programs, and to be honest they only scale so far. Editing large state charts is annoying. I think it's instructive to look at the hardware side of the house because they've been dealing with this split between graphics and text for a long time. Things like schematic capture are graphical. The job there is to select chips from a library and "wire them up" virtually. That's an inherently graphical sort of task and the user benefits from seeing the visual representation. But when you go to design a complex CPU, for instance, things suddenly go to Verilog and ASCII text. Why? Because I'm effectively programming and my task is to specify very complex behavior. Could I do that graphically? Yes, but it's cumbersome. In fact, that's the issue with most visual programming systems--they are cumbersome. The user cannot see the whole program at once. Changing behaviors requires clicking on this, reading some text (ironically), clicking on this other thing, editing a bit of text, etc. Click, edit, click, edit. That sucks. Better to just edit, edit, edit in a text editor. That's one reason that schematic capture being visual works better. It's more click, click, click, edit, click, click, click, edit. Yes, every now and then you need to name a bus or a component, but otherwise you're pretty much just selecting, moving, and connecting things, all done with the mouse. Anyway, I think the answer to why programming is still mostly ASCII text-based is that ASCII-text is the best way to do most programming. Where a graphical representation of part of a program makes a lot of sense (e.g., state charts), then visual tools can be used to generate code for linking with other parts of the program written in ASCII text. In a certain sense, ASCII text sucks, except for all the other things we've tried which suck worse.

Expand full comment
3 more comments...

No posts