Virtually everyone uses the internet, and many would also like to make their own mark. Everyday life comes with many chal­lenges that can be solved with pro­grammed ap­plic­a­tions (or apps) and cor­res­pond­ing end devices. But the obstacles to pro­gram­ming are often great. A func­tion­ing program comprises a range of com­pon­ents in the form of a pro­gram­ming language with a huge amount of “vocab­u­lary”: variables, constants, looped processes, con­di­tions, formulas, actions, and regular ex­pres­sions.

Working with such text-based pro­gram­ming languages takes extensive knowledge, a strong ability to abstract, and the ability to maintain a high con­cen­tra­tion for long periods of time. Learning a text-based pro­gram­ming language can be put on equal footing with learning a foreign language. To overcome these hurdles, visual de­vel­op­ment en­vir­on­ments have been created since the 1960s. Here, pro­gram­mers don’t use tediously composed text codes but instead make use of graphical elements.

What Is Visual Pro­gram­ming?

With visual pro­gram­ming, the elements of a pro­gram­ming language are provided in the form of graphical building blocks. That’s why the approach is also called graphical pro­gram­ming. Based on the ap­pear­ance and labels of these elements, you can tell which tasks in pro­gram­ming can be solved using which com­pon­ents. The pic­to­grams help provide reference points and avoid highly complex struc­tures or great ab­strac­tions.

Note

Visual pro­gram­ming language is commonly ab­bre­vi­ated to VPL.

The fun­da­ment­al pro­gram­ming style – or pro­gram­ming paradigm – has the following at­trib­utes:

  • Visual: Elements are inserted into the program sequence using drag and drop.
  • Event-based: Each program step starts once a pre­vi­ously defined event occurs.
  • Im­per­at­ive: Pro­gram­ming comprises a sequence of commands.
  • Object-based: The in­di­vidu­al objects are assigned defined tasks.

Depending on the visual pro­gram­ming language, pro­gram­mers use many pre-made program elements. These can include texts and images, be organised logically, and be changed in their ap­pear­ance or ex­pres­sion. Control elements allow actions to be inserted, which are dependent on con­di­tions. Operators permit con­nec­tions and math­em­at­ic­al cal­cu­la­tions, while variables or links can be inserted, removed or changed. The pro­gram­ming elements are designed to fit together like puzzle pieces. If elements don’t logically fit together, this is detected by the editor and indicated using colour – e.g. by greying out – and sometimes even using sounds. The pro­gram­ming elements are usually split into colour-coded groups. This makes it easier to select the right element.

The de­scrip­tions of the in­di­vidu­al elements and the un­der­ly­ing processes represent human ex­pres­sions or actions, such as “do...”, “say...”, “press the key...” or “wait until...” The elements of the program are assembled using drag and drop. You can tell whether graphical elements can be connected based on the recesses and pro­tru­sions, which have to fit together like puzzle pieces. This makes assembly processes easy and intuitive, without having to know a text-based pro­gram­ming language.

How visual pro­gram­ming differs from “normal” pro­gram­ming

The biggest dif­fer­ence is that visual pro­gram­mers don’t need to work with huge amounts of command syntax. The difficult process of learning “vocab­u­lary” for a pro­gram­ming language is also un­ne­ces­sary. In the case of “normal” pro­cessing, a strong ability to abstract is required in order to achieve the intended outcome based on the in­struc­tions of the pro­gram­ming language. Although many pro­gram­ming editors offer the function “auto complete”, which auto­mat­ic­ally finishes in­struc­tions and processes, the pro­gram­mers still need to be careful of typing mistakes when entering code; just one forgotten un­der­score and the whole routine would result in an error message. This often means that pro­gram­mers have to spend hours reviewing their code for errors.

Just like learning a foreign language, when pro­gram­ming you need to first learn the most important “vocab­u­lary” to “get by”. Each new pro­gram­ming task requires you to learn new terms. The scope of modern, text-based pro­gram­ming languages has expanded massively over the years, in order to keep pace with the needs of the modern internet. Pro­gram­ming sections can be placed in separate files and in­teg­rated in the pro­gram­ming process. Although this sim­pli­fies text-based pro­gram­ming, it requires a com­pre­hens­ive overview, well-annotated code, and careful doc­u­ment­a­tion.

What are the ad­vant­ages and dis­ad­vant­ages of visual pro­gram­ming?

Visual pro­gram­ming breaks down technical barriers and makes pro­gram­ming more ac­cess­ible. This way, for example, children can benefit from the playful approach to pro­gram­ming. Pro­gram­mers can focus on the logical processes in their program, free from dis­trac­tion. Usable results are quickly achieved, providing mo­tiv­a­tion for new and bigger projects.

Fact

By mid-2015 – after launching in March 2007 – the visual pro­gram­ming language Scratch had around 1.3 million re­gistered online users aged between 8 and 16 years. More than 3 million self-developed Scratch projects have been created online.

Ad­vant­ages of visual pro­gram­ming

Only a small amount of learning is required. Es­sen­tially, an idea can be “written” as a program straight away. Il­lus­trat­ive symbols ensure easy com­pre­hen­sion. Since there’s no syntax, no typos can creep in. This helps pro­gram­mers un­der­stand the basic concept of a pro­gram­ming language.

Visual pro­gram­ming languages enable a process known as ex­plor­at­ive pro­gram­ming. Simply begin and build a program step by step, before an exact solution has been fully thought through. Existing pro­gram­ming steps can be tested for their func­tion­al­ity time and again. Pro­gram­mers mainly work with browser-based solutions that work re­gard­less of the computer operating system. The results can normally be exported to other, text-based pro­gram­ming languages.

Dis­ad­vant­ages of visual pro­gram­ming

Part of graphical pro­gram­ming is tied to special ap­plic­a­tions or certain systems, hardware or end devices. In general, it’s not possible to create in­di­vidu­al elements or add comments for project team members to review. This makes it hard to maintain an overview even with only slightly more complex programs. Moreover, visually pro­grammed projects can only be scaled to a limited extent. Adjusting them to large or rapidly growing projects is therefore difficult. In the case of big projects, the advantage of ex­plor­at­ive pro­gram­ming can quickly become a dis­ad­vant­age in the form of un­struc­tured code. Programs like these are awkward to maintain and expand.

What visual pro­gram­ming languages exist?

A wide range of visual pro­gram­ming languages is available. Here’s just a selection:

Scratch

The best-known and, by far, the most wide­spread visual pro­gram­ming language is Scratch. It was first released in 2007 and is intended to make learning pro­gram­ming easy for children. The offshoot ScratchJr is a free app intended for children aged between 5 and 7 years. Some other languages for graphical pro­gram­ming have been developed based on Scratch, such as BYOB 4.0/Snap!.

Blockly

Blockly is a type of library. It offers a visual pro­gram­ming editor that is added to Android, iOS and web ap­plic­a­tions. Blockly also uses in­ter­linked, graphical blocks. The pro­grammed al­gorithms can be exported as JavaS­cript or Python code, for example.

NEPO

NEPO is based on Scratch and uses the freely available library Blockly. It has been expanded with its own func­tion­al­it­ies. An advantage of NEPO includes the open in­ter­faces that can also control other hardware or robotic systems.

Grape

Grape is a graphical de­vel­op­ment en­vir­on­ment. It allows even pro­gram­ming novices to code mi­cro­con­trol­lers in simple steps.

App Inventor

App Inventor ori­gin­ally comes from Google. The graphical interface enables ap­plic­a­tions for Android phones to be pro­grammed with graphical blocks.

Ardublock

This graphical pro­gram­ming language is es­pe­cially suited to pro­gram­ming the mi­cro­con­trol­ler Arduino without text entries.

Pure Data

This visual pro­gram­ming language is based on data flows and is also a de­vel­op­ment en­vir­on­ment. Pure Data is used to produce in­ter­act­ive mul­ti­me­dia software – such as for syn­thes­izers.

Lego Mind­storms

A product line from the toy man­u­fac­turer Lego, it revolves around pro­gram­mable Lego blocks: Using electric motors, sensors, and Lego tech­no­logy pieces, it’s possible to build and program robots and other in­ter­act­ive systems.

Go to Main Menu