| 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. |
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..