9

When the first computers were introduced they worked using commands. E.g. to save a document you must write a specific command on the prompt line like save c:\\ document 'name'.

Soon commands were replaced by pictures. Instead of writing the commands you press a intuitive picture from the menu. So I ask, is this done for software coding? There you also have to write commands. Why not simply use pictures which will do the same?

B.e. if you want to start a cycle you press a ring and you get all necessary commands prepared. Then a label may ask about what parameters do you want etc. Does something like that exist?

6
  • 7
    These languages exist, but they aren't widely used because they're painful slow and clunky to use and difficult to maintain and debug. Commented Mar 6 at 13:10
  • Not writing an answer since I haven't used it myself, but there's JetBrains MPS which allow you to program with tables, diagrams and mathematical expressions, for instance.
    – user86740
    Commented Mar 7 at 17:05
  • @marcelm Wasn't there a whole lawsuit against Microsoft's Windows OS? I think the suit from from Apple regarding their Macintosh System Software and the lawsuit was dropped as part of the $150 million investment Microsoft made in Apple? Commented Mar 7 at 23:09
  • 3
    I would edit out the history lesson from your post. It's simplified to the point of being inaccurate, and it just distracts from your question.
    – PC Luddite
    Commented Mar 8 at 3:49
  • @PCLuddite Very true. But I'm not good at that.
    – Mercury
    Commented Mar 9 at 13:27

15 Answers 15

25

Many different programming languages do something like that, yes. I've found a couple of pictures for you.

Visual programming languages have long history. For example, here's a YouTube video on RAND's GraIL (not to be confused with Grails):

https://www.youtube.com/watch?v=QQhVQ1UG6aM

GraIL was published in the late 60's.

Grail

MATLAB's Simulink for simulating processes:

Simulink

Blender nodes are not that different:

Blender

Which again looks like how Unreal Engine works with nodes:

Unreal Engine

Visual AppBuilder from '94:

Visual AppBuilder

Most Programmable Logic Controllers (PLCs) can be programmed with something called Ladder diagrams:

Ladder diagram

3
  • Would be nice to have some links to the mentioned programs as well.
    – albert
    Commented Mar 6 at 10:46
  • @albert Added 6 additional links.
    – Mast
    Commented Mar 6 at 11:35
  • 3
    I was looking for a mention of Unreal blueprints - that's probably the most commercially viable visual scripting language I can think of, since nowadays most games made with Unreal (the vast majority of big budget games) make heavy use of blueprints Commented Mar 6 at 23:29
23

Piet is an esolang in which programs look like abstract art in the style of Piet Mondrian. [Esolangs Wiki]

For example, this is one way of writing the ubiquitous "Hello World" program:

Hello World program in Piet
Source

Here's a gallery of programs written in Piet.

3
22

Do you mean something like ScratchJr, Scratch or MakeCode?

Starting with visual languages such as Scratch or MakeCode allows your child to begin to understand the basic concepts of programming without needing any developed reading and keyboard skills.

Kids' coding languages

7
  • 5
    @Mercury Good question! I suspect that eventually, as the programming language elements become more complex, the visual symbols become too complex to be easily used. This is why, I think, the humanity moved from simple drawings to "mostly letters plus some drawings plus some emojis" in written communication. If we need to express something complex, such as find_or_create_by() or corr(x, y, method="spearman"), etc, visually, it becomes a hard problem, eventually... Commented Mar 5 at 21:08
  • 3
    @Mercury mm, it seems like everyone has a go at making a visual programming language at some point and i've not encountered one that's usable for complex programs yet. my theory is that it needs a compact display, labels that are text for the reason Timur mentions, and an editor that can be controlled entirely through the keyboard - dragging and dropping or editing as an image are too slow and you need to be able to fit a lot of information onscreen at once
    – Silver
    Commented Mar 6 at 13:41
  • 1
    @Silver Unreal's blueprints are probably the closest I've seen, and that's only because they abstract out a lot of it with prebuilt blocks
    – GammaGames
    Commented Mar 6 at 15:36
  • 7
    @Mercury The main reason is probably that typing out the commands is not the difficult part of programming. There are other reasons, like compactness of display, how to show changes, speed of entry (people can type fast), all the existing tooling that works with text, to some extent tradition — but the main one is that typing out the commands is not the difficult part, and replacing the commands with pictures won't make any difference to the difficult parts. Commented Mar 7 at 0:40
  • 1
    @Mercury Ironically, I recently had a meeting with a medical researcher. He said that when students are setting up automated microscopy stuff, they often do use Scratch, because they aren't very skilled at coding.
    – Graham
    Commented Mar 7 at 22:07
18

BPMN is a graphical notation for specifying business processes that are executable (IOW: BPMN diagrams are programs that can be run.)

Hello World program in Piet
Source

16

To give yet another example: LabVIEW is a graphical programming language used in research labs to connect several (physical hardware) scientific instruments together into a more complex piece of experimental hardware and automate a series of experiments. It works by connecting many "VI"s together with "wires" which carry data values. When data is ready at all of the inputs to a VI, it executes and puts the results of the execution on the output wires, where they are carried on to the next VI.

Here's an example from Wikipedia: Example labview code (Image by Aldhair.gsnt - Own work, CC BY-SA 4.0)

5
  • 1
    Also, the programming "language" for Lego Mindstorms (makecode.mindstorms.com/blocks) is very similar, as it is based on LabVIEW with a simplified interface.
    – Paul
    Commented Mar 7 at 9:18
  • 1
    FYI, VI stands for Virtual Instrument. The underlying concept is to make programs as if we were connecting devices (instruments) after each other. I used this a lot for my thesis and it's a very interesting (and fun!) experience, much different from usual coding even though you use the same concepts (loops, if/else, classes, functions) at the very core. And it's not a "toy language" - you can write very complicated software with it. Most commerically available scientific instruments (at least in my area, laser physics) use LabView in one way or another.
    – Neinstein
    Commented Mar 7 at 9:24
  • @Paul From the look of it - isn't it more like Scratch?
    – Neinstein
    Commented Mar 7 at 9:26
  • @Neinstein, it is a LabVIEW skin but I provided the wrong link... This is the one I meant: generationrobots.com/blog/en/…
    – Paul
    Commented Mar 7 at 9:38
  • I don't have the rep (yet ;) to comment on Jack B's answer so I'll have to "answer" instead. National Instrument's LabVIEW is a great example, and so I have to mention that Hewlett Packard did a near copy/clone called HP VEE (Visual Engineering Environment). Unlike LabVIEW HP VEE didn't survive, and neither did HP really. There's a link to the product on HP's successor's site here. It was actively developed for around a decade, the last release seems to have been in 2008. As @Jack B notes these are data driven, where "data" can Commented Mar 7 at 19:07
14

Thyrd is a concatenative programming language (hence the name, an obvious play on Forth).

Thyrd is a two-dimensional programming language heavily inspired by spreadsheets, in which opcodes are represented as icons.

Here is an introduction to Thyrd from the inaugural Emerging Languages Camp 2010. I still remember how it blew me away when I first saw this talk 14 years ago.

Here's an example of a Thyrd function, taken from one of the screencasts on the homepage:
A Thyrd function

4

Back in the day Jackson Structured Programming was a popular way of representing a program graphically, and I know of at least one project that would allow you to create a diagram and generate a program from it.

3

The answers above by Jörg W Mittag, Mast, and Jack B show an important commonality among many of the most effective, practical uses of visual programming:

BPMN, Simulink, Blender Nodes, Unreal Engine, and ladder diagrams all are mostly limited to a specific purpose. The "visual vocabulary" can stay relatively concise when you aren't trying to do general-purpose computing.


Additional examples:

Just about any modern electronic circuit simulation software allows for grahical schematic diagram entry. Live designs on the web-based platform CircuitLab can even be embedded in questions and answers over on electronics.stackexchange.com.

Well within the capabilities of this and similar packages is simulation of Analog Computing.

In truth, electronic schematics are themselves a visual programming language. The ladder diagrams mentioned in Mast's answer were derived from a very specific subset of electrical schematic diagram using electromechanical relays for industrial control. This style is still in common use in this realm.

Similar to Blender Nodes and Unreal Engine are Fusion Nodes within the video production suite DaVinci Resolve. Fusion nodes in DaVinci Resolve

The graphical aspect only relates to the interconnections between processing nodes; individual nodes still need a lot of text or numerical data to define their behavior.

2

I actually just randomly came across this and remembered your question, so I thought I'd write yet another answer to it.

https://www.flyde.dev
https://github.com/flydelabs/flyde

It's an open source visual programming language and while I haven't taken a deeper look into it, I've found it pretty cool!

enter image description here

1

There are a lot of good answers here already. I want to mention another, less known "graphical" way of programming, which is specifically for 3D coordinate measuring machines of Mitutoyo.

It's a commercial software called Mitutoyo MCOSMOS, and only useful if you have such a 3D machine (so, don't simply buy it).

You program these machines by clicking on images in the toolbar and those images will then appear in your measurement program like this:

Screenshot

IMHO that's really great for the average user. And it's incredible what you can actually achieve with it. However, there may also be some power users who preferred a more classical textual programming style.

If you know a textual programming language first, and then switch to graphical programming, that may be a hurdle.

4
  • Is there a link you can share to such a program?
    – albert
    Commented Mar 7 at 14:59
  • 1
    @albert: integrated a link. But don't buy it. It will not be useful for you Commented Mar 7 at 15:22
  • Possibly. It works now.
    – Mast
    Commented Mar 9 at 14:20
  • 1
    Node-Red is another lesser known graphical way of programming. (Actually, the web site says that it's a low code way of programming, as you still have to write some code in the nodes themselves.) It's up and coming in the building automation industry. Some of the newer controllers that the company that I work for makes support it.
    – RobH
    Commented Mar 14 at 19:32
1

There used to be a language, on Macs at least, called ProGraph (I reviewed it for Personal Computer World in 1990). It was quite pretty but a potent generator of spaghetti. I don't know if it's around any more.

1

There is a game where you can program robots using graph programming language. Called "Plasma".

enter image description here

0

Taking in account your example the most resembling thing would be Outsystems, BPMN based, almost all-kind purpose.

Outsystems flow example

0

Depends on what the goal of the "language" should be.

If for example learning logic or understanding how basic program flows work, then here are some examples of tools that would accomplish that yet be useful for daily usage, unlike some specialistic languages/tools mentioned in other answers:

  • Automa - a web extension that lets you build any kind of JavaScript browser flows/automation, like buying a product at specific hour, farming in a game or doing a repetitive multistep action in one click. It can utilize basic control flows like conditions or loops and variables.

Automa flow

  • Automate - one of commonly used Android automation tools, this is the most graphical one I'd say. You can build flows to auto reject unwanted calls, launch specific application(s) if you connect to specific network(s), turn off notifications at specific hours, etc. Likewise, it supports all the basic control flows and variables.

Automate blocks

  • less graphical but much more robust alternative is Tasker, where the representation of the logic is more text-based. This is somewhere between Automate and regular programming I'd say, in case someone would want to transition with less steep curve.

Tasker flow

These kind of tools can make your life much easier if utilized creatively. Thinking about how to solve certain problems optimally will definitely help in solving textual programming problems at a later point.

0

Another potential solution to look at is software that generates code from diagrams, e.g. UML (Unified Modeling Language).

This language is purely made to have graphical representation of flows and is very commonly used by programmers to design systems/applications or parts of them to check if the ideas make sense and then have a quick reference to look at while implementing the code or estimating how long it will take to program.

While modeling languages don't produce code themselves, there's a possibility to convert them. This is known as code generation. For example this free puml2code has capability to output these languages:

  • Python
  • TypeScript
  • C++
  • PHP etc.

Note that the functionality of such code will be limited to mostly:

  • classes with properties
  • basic logic

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.