May 20, 2024

Visible programming instruments (additionally known as ‘no-code’ or ‘low-code’) have been getting a number of press not too long ago. This, in flip, has generated a number of dialogue about whether or not visible or textual content based mostly programming (coding) is ‘finest’. As somebody who makes use of textual content programming (C++) to create a visible programming data wrangling tool (Easy Data Transform) I’ve some pores and skin on this sport and have considered it fairly a bit.

At some stage, all the pieces is visible. Textual content continues to be visible (glyphs). By visible programming right here I particularly imply software program that means that you can program utilizing nodes (packing containers) and vertexes (arrows), laid out on a digital canvas utilizing drag and drop. 

A well-known instance of this form of drag and drop visible programming is Yahoo Pipes:

Yahoo Pipes
Credit score: Tony Hirst

However there are many others, together with my very own Straightforward Knowledge Rework:

Word that I’m not speaking about Excel, Scratch or drag and drop GUI designers. Though among the dialogue may apply to them.

By textual content programming, I imply mainstream programming languages akin to Python, Javascript or C++, and related instruments. Right here is the QtCreator Interactive Improvement Setting (IDE) that I exploit to jot down C++ in, to create Straightforward Knowledge Rework:

The benefits of visible programming are:

  • Intuitive. People are very visible creatures. A whole lot of our mind is given over to visible processing and our visible processing bandwidth is excessive. Take a look at just about any whiteboard, at any firm, and there’s a good likelihood you will note packing containers and arrows. Even in non-techie corporations.
  • Faster to get began. Drag and drop instruments can mean you can begin fixing issues in minutes.
  • Greater stage abstractions. Which suggests you may work sooner (assuming they’re the correct abstractions).
  • Much less hidden state. The connections between nodes are proven on display, moderately than you having to construct an inside mannequin in your individual reminiscence.
  • Much less configuration. The system parts work collectively with out modification.
  • No syntax to recollect. Which suggests it’s much less arcane for individuals who aren’t skilled programmers.
  • Much less run-time errors, as a result of the system usually gained’t allow you to do something invalid. You don’t have to fret about getting operate names or parameter ordering and kinds proper.
  • Quick suggestions on each motion. No must compile and run.

The benefits of textual content programming are:

  • Denser illustration of knowledge.
  • Higher flexibility. Simpler to do issues like looping and recursion.
  • Higher tooling. There’s a huge ecosystem of instruments for manipulating textual content, akin to editors and model management methods.
  • Much less lock-in. You may usually transfer your C++ or Python code from one IDE to a different with out a lot drawback.
  • Extra alternatives for optimization. As a result of you’ve got lower-level entry there may be extra scope to optimize pace and/or reminiscence as required.

The benefits and drawbacks of every are two sides of the identical coin. A better stage of abstraction makes issues easier, but in addition reduces the expressiveness and adaptability. The express exhibiting of connections could make issues clearer, however can even improve on-screen litter.

The everyday complaints you hear on-line about visible programming methods are:

It makes 95% of issues simple and 5% of issues unimaginable

Visible programming methods will not be as versatile. Nonetheless many visible programming methods will allow you to drop down into textual content programming, when required, to implement that extra 5%.

Jokes apart, I believe this hybrid method does loads to mix the strengths of each approaches.

It doesn’t scale to advanced methods

Managing advanced methods has been a lot improved through the years in textual content programming, utilizing methods akin to hierarchy and encapsulation. However there isn’t any purpose these identical methods can’t even be utilized to visible programming.

It isn’t excessive sufficient efficiency

The creators of a visible programming system are making a number of design selections for you. If you want to tune a system for top efficiency on a selected drawback, you then most likely want the low stage management that textual content based mostly programming permits. However with most issues you most likely don’t care if it takes a couple of additional seconds to run, if you are able to do the programming in a fraction of the time. Additionally, a number of visible programming methods are fairly quick. Straightforward Knowledge Rework can be part of 2 a million row datasets on a laptop computer in ~5 seconds, which is faster than base R.

It finally ends up as spaghetti

Labview spaghetti from DailyWTF
Unreal Blueprint spaghetti from

I’m certain we’ve all seen examples of spaghetti diagrams. However you too can create horrible spaghetti code with textual content programming. Additionally, having the ability to instantly see {that a} visible program has been sloppily constructed may function a helpful cue.

In case you are cautious to structure your nodes, you may preserve issues manageable (ravioli, moderately than spaghetti). Nevertheless it begins to grow to be difficult when you’ve got 50+ nodes with a average to excessive diploma of connectivity, particularly if there isn’t any help for hierarchy (nodes inside nodes).

Automated structure of graphs for simpler comprehension (e.g. to reduce line crossings) is tough (NP-complete, in the identical class of issues because the ‘travelling salesman’).

No help for versioning

It’s attainable to model visible programming instruments in the event that they retailer the knowledge in a textual content based mostly file (e.g XML). Attempting to diff uncooked XML isn’t excellent, however some visible based mostly programming instruments do have built-in diff and merge instruments.

It isn’t searchable

There is no such thing as a purpose why visible programming instruments shouldn’t be searchable.

An excessive amount of mousing

Skilled programmers love their keyboard shortcuts. However there isn’t any purpose why visible programming instruments can’t additionally make good use of keyboard shortcuts.

Vendor lock-in

Many visible programming instruments are proprietary, which implies the fee will be excessive for switching from one to a different. So, if you will make investments time and/or cash closely in a visible programming software, take time to make a sensible choice and think about how you possibly can transfer away from it if you want to. In case you are doing fast and soiled one-offs to resolve a selected drawback that you simply don’t want to resolve once more, then this doesn’t actually matter.

No code’ simply means ‘another person’s code’

In case you are utilizing Python+Pandas or R as an alternative of Straightforward Knowledge Rework, then you might be additionally balancing on prime of an infinite pile of another person’s code.

We’re specialists, we don’t want no stinkin drag and drop

In case you are an skilled textual content programmer, you then aren’t actually the goal marketplace for these instruments. Straightforward Knowledge Rework is aimed on the analyst or enterprise man attempting to wrangle a motley assortment of Excel and CSV recordsdata, not the skilled information scientist who goals in R or Pandas. Nonetheless even an expert code jockey may discover visible instruments sooner for some jobs.

Each visible and textual content programming have their locations. Visible programming is great for exploratory work and prototyping. Textual content based mostly programming is sort of all the time a more sensible choice for specialists creating manufacturing methods the place efficiency is essential. After I wish to analyse some gross sales information, I exploit Straightforward Knowledge Rework. However once I work on Straightforward Knowledge Rework itself, I exploit C++.

Textual content programming is extra mature than visible programming. FORTRAN appeared within the Fifties. Functions with graphical person interfaces solely began changing into mainstream within the Eighties. A few of the shortcomings with visible programming replicate it’s relative lack of maturity and I believe we will anticipate to see continued enhancements within the tooling related to visible programming.

Visible programming works finest in particular domains, akin to:

  • 3d graphics and animations
  • picture processing
  • audio processing
  • sport design
  • information wrangling

These domains are inclined to have:

  • A single, nicely outlined information kind. Corresponding to a desk of knowledge (dataframe) for information wrangling.
  • Nicely outlined abstractions. Corresponding to be part of, to merge 2 tables of knowledge utilizing a standard key column.
  • A comparatively simple management move. Sometimes a step-by-step pipeline, with out loops, recursion or advanced management move.

My teenage son has been capable of do some (I believe) pretty impressive 3D modelling and animations simply with Blender’s visible instruments.

Visible programming has been a lot much less profitable when utilized to generic programming, the place you want a number of totally different information sorts, a variety of abstractions and doubtlessly advanced management move.

I’ve been an expert software program developer since 1987. Individuals (principally in advertising) have talked about changing code and programmers with level and click on instruments for a lot of that point. That’s clearly not going to occur. Textual content programming is the most effective method for some sorts of issues and can stay so for the foreseeable future. However domain-specific visible programming will be very highly effective and has a a lot decrease barrier to entry. Visible programming empowers folks to do issues that may be out of their attain with textual content programming and may by no means get carried out if they’ve to attend for the IT division to do it.

So, unsurprisingly, the reply to ‘which is best?’ could be very a lot ‘it relies upon’. Each have their place and neither goes away.

Additional studying:

Hacker News folk wisdom on visual programming

Visual Programming Codex

The life and times of Yahoo Pipes

The ‘No Code’ Delusion and HN discussion

‘Visual programming doesnt suck’ HN discussion (original article seems to have disappeared)

Visual Programming Languages – Snapshots

A Personal History of Visual Programming Environments

Is the future of data science drag and drop?

Rethinking Visual Programming with Go

Responses to this put up on Reddit: