Hacker News new | ask | show | jobs
by gitgud 2185 days ago
No-code means programming without text, it doesn't remove complexity, only abstracts it away, covering it with some visual programming GUI.

Here's some problems that I can think of with visual programming:

- Version control: Not only the logic of the system, but the shape of the visual representation needs to be tracked... along with a lot of other metadata.

- Debugging: Visual programs need yet another step of compilation and translation, to go from visual to text to machine code. This makes debugging much harder to implement, if it's even an option.

- Architecture: Visual programming environments are usually optimised for a certain way of doing things. This effectively cements the architecture of your system.

- Refactoring: Without text, you're going to have a hard time renaming variables and moving things around, basically it's back to the mouse... you could go through the text-source files and find/replace variable names, but that defeats the purpose of the visual abstraction.

- Verbosity: Displaying the programs visually - usually a graph of nodes - is extremely verbose and cumbersome. Trying to navigate a large graph/tree and work out what's going on is difficult. Text on the other hand scales much better for large programs.

- Integrations: Integrating the system with obscure libraries is often difficult or not possible at all. Using a library in node or python is simple, in a visual environment you're generally relying on the pre-built components/nodes...

- Vendor-lockin: Visual programming languages are generally all propitiatory making them extremely hard to migrate off.

- High Complexity: A text-based language simply needs a compiler to run, as text-editors are interchangeable. A visual language needs a compiler and a visual editor, which makes development of the system much more difficult and complex.

Basically, I think text-based programming is here to stay. Text is simple, flexible, efficient, elegant and most importantly it's one of the most concise ways to convey logic of a system.

3 comments

> Version control

The other day I tried to reverse engineer a lego mindstorm program from a pan across it in a youtube video(stitching together screenshot frames with Hugin panorama editor), only to find that that visual language was dependent of a silverlight app, and OSX had deprecated it, so I could only use scratch to re-create the logic. Then the scratch editor crashed and corrupted my project file, which when opened in a text editor was just a big encoded data blob. So I started from scratch and took to copying the file (file (1), file (2)..) every so often.. I did not feel like the future to me..

That sounds like a workflow issue. Instead of arbitrarily renaming files, which is what we used to do back in the 90's, 80's and probably before, you could have used something like git to take care of backups and version control.

Of course it doesn't feel like the future when you are maintaining your code with something other than modern practices.

What version of Scratch are you using?
I was using the lego mindstorm classroom program that has scratch built in, so I'm not sure of the exact details. It autosaved the project on every change, and didn't even tell me where it was keeping the files. The first time I was using it, it suddenly told me it couldn't open my project. So I found the save folder and just duplicated my recreated project as I went along. Not an ideal workflow, but fine for a few hours project.
The new Scratch 3 works right in the browser. There is a Lego Mindstorm extension for it, you just have to install this program called Scratch link to bridge the web to the hardware.
This is a comment about graphical programming interfaces, not no-code. No-code also encompasses tools such as Airtable, which can be used to make a great number of different serviceable crud applications without anything resembling programming.
Would love to hear your thoughts on our "low code for devs" as I have tried to eliminate many of (my shared) complaints about low code as a dev. Text based so you can use your IDE and terminal

https://github.com/hofstadter-io/hof

(sorry to post link twice in same topic, but seems helpful.to have it in the two spots more than not)