En enkel kodeblokk laget i det visuelle programmeringsspråket Snap!, som er basert på Scratch (koden beregner summen av alle tall i verdiområdet mellom *a* og *b*)
**Visuell programmering**, også kjent som **blokkoding**, **blokkprogrammering** eller **grafisk programmering**, vil si å lage et dataprogram ved å manipulere objekter i et grafisk brukergrensesnitt i stedet for å skrive i konvensjonell tekstkode. Det gjør at man kan programmere på en romlig og visuell måte ved hjelp av både tekst og grafiske symboler, enten som deler av syntaksen eller som hjelpenotasjon. Mange visuelle programmeringsspråk er basert på "bokser og piler" der boksene (eller andre objekter) representerer entiteter, mens piler, streker og linjer representerer relasjoner.

Et av formålene med visuell programmering er å gjøre programmering tilgjengelig for nybegynnere. Det kan også brukes av erfarne programmerere for hjelp til syntaks, semantikk og pragmatikk.

  

Per 2005 var den daværende trenden å forsøke å integrere visuell programmering med dataflytprogrammering slik at man har umiddelbar tilgang til programmets tilstand slik at man letter feilsøking eller automatisk kan generere dokumentasjon. Dataflytspråk tillater også automatisk parallellisering som antas å bli en av fremtidens største programmeringsutfordringer.

Typer visuelle språk
--------------------

Følgende liste er ikke gjensidig utelukkende, siden noen visuelle programmeringsmiljø kan inkludere elementer fra flere paradigmer. Valget av det visuelle programmeringsparadigmet avhenger ofte av de spesifikke kravene til applikasjonen eller preferansene til brukerne eller utviklerne.

**Blokkbasert programmering**
Popularisert av plattformer som Scratch og Blockly, brukt for introduksjon til programmering i utdanning.
**Flytdiagrammer**
Mye brukt i programvareutvikling og systemdesign for å representere algoritmer og prosesser.
**Dra-og-slipp-grensesnitt**
Vanlig i grafiske designverktøy og utviklingsmiljø for å lage brukergrensesnitt.
**Nodegrafer**
Ofte brukt i visuelle programmeringsspråk, spillutvikling og dataflytsystemer.
**Dataflytprogrammering**
Populært i miljøer for parallellprosessering, signalbehandling og visuell programmering.
**Ikonisk programmering**
Brukes for å forenkle programmeringsoppgaver, eksempelvis for utvikling av mobilapplikasjoner.
**Tilstandsmaskiner**
Mye brukt i spillutvikling, styringssystemer og modellering av reaktive systemer.
**Arkbasert programmering**
Finnes i regnearksapplikasjoner og visse pedagogiske programmeringsmiljø.
**Tidslinjebasert programmering**
Vanlig i multimedia- og animasjonsprogramvare for sekvensering av hendelser over tid.
**Romlig programmering**
Brukes i visse interaktive og 3D-modelleringsmiljø.
**Skjemabasert programmering**
Brukes i applikasjoner der brukerinndata og grafiske grensesnitt spiller en betydelig rolle, for eksempel applikasjoner for dataregistrering.

Visuelle språk til generell bruk
--------------------------------

 Implementering av Ring Virtual Machine (VM) ved å bruke det visuelle programmeringsspråket PWCT
De fleste grafiske programmeringsspråk er laget for utdanning eller domenespesifikk bruk hvor brukerne er nybegynnere på programmering. 

Det har vært noen forsøk på å utvikle visuelle programmeringsspråk til generell bruk som et alternativ til for eksempel C, C++, Java og så videre. Noen eksempler er forskningsprosjekter som Envision og PWCT.

Det er vanlig at visuelle programmeringsspråk utvikles ved hjelp av et tekstbasert programmeringsspråk. Dersom man utvikler et generelt visuelt programmeringsspråk vil det motsatte også være mulig.

Liste over visuelle språk
-------------------------

Følgende inneholder en liste over noen notable eksempler på visuelle programmeringsspråk.

### Pedagogisk

* Scratch, et produkt fra MIT designet for barn i grunnskolen og skolefritidsordninger.

### Multimedia

* Blender, en 3D-grafikkpakke med åpen kildekode som inkluderer nodegrafer for å bygge shaders,  compositing  og teksturer,  ikke-destruktiv geometri.
* Pure Data, et visuelt programmeringsspråk utviklet for å lage interaktiv datamusikk og multimedieverk.
* Virtools, en mellomvare som brukes for å lage interaktiv 3D

### Videospill

* Nintendo Switch, utviklet av Nintendo
* GameMaker Studio, har et spillopprettingssystem med dra-og-slipp
* Godot, en spillmotor som lar spillskript og grafikk bygges ved hjelp av en nodegraf
* Unreal Engine 4 har et nodebasert visuelt programmeringsspråk kalt Blueprints

Mange moderne videospill bruker atferdstrær, som i prinsippet er en familie enkle programmeringsspråk designet for å modellere atferd for ikke-spillere. Atferdene er modellert som trær, og blir ofte redigert i grafiske vinduer.

### Systemer og simulering

* DRAKON, et grafisk algoritmisk språk
* Node-RED, verktøy for rask utvikling av programvaresystem

### Automasjon

* Automator

### Datavarehus og forretningsinnsikt

* Microsoft Access, funksjonalitet for å designe spørringer
* Microsoft SQL Server Integration Services (SSIS), en plattform for dataintegrasjon og arbeidsflytapplikasjoner
* Pentaho Data Integration (PDI), tidligere kalt Kettle, et ETL-verktøy med åpen kildekode

### Diverse

* YAWL, grafisk arbeidsflytspråk

Visuelle stiler
---------------

* DRAKON, et SDL- og AADL-påvirket visuelt 2D-programmeringsspråk designet for å utvikle det innebygde sanntidssystemet for automatisk flyging og landing av den sovjetiske Buran-romfergen
* Kjørbar UML, en profil av Universal Modeling Language som definerer kjørbar semantikk for en delmengde av UML
* Flytskjema
* Subtext, et moderat visuelt programmeringsspråk

Se også
-------

* Argumentdiagram
* Cognitive dimensions of notations - Notasjonsvurdering for visuelle og ikke-visuelle språk
* Konseptdiagram
* Dataflytprogrammering
* Deutsch-grensen, en aforisme om at det ikke bør være mer enn 50 primitiver på en skjerm samtidig
* Domenespesifikk modellering
* Dra og slipp
* Flytbasert programmering
* Graftegning
* Lavkode programvareutvikling
* Kodefri programvareutvikling
* Unified Modeling Language

Referanser
----------

1. ↑  «Micro:bit Forslag til undervisningsopplegg, Nils Kr. Rossing, Vitensenteret Trodheim» (PDF).
2. ↑  «Blokkprogrammering og tekstprogrammering | statped.no». *www.statped.no*. Besøkt 10. mars 2024.
3. ↑  Drange, Pål Grønås (19. januar 2024). «blokkprogrammering». *Store norske leksikon* **(norsk)**. Besøkt 10. mars 2024.
4. ↑  Jost, Beate; Ketterl, Markus; Budde, Reinhard; Leimbach, Thorsten. «Graphical Programming Environments for Educational Robots: Open Roberta - Yet Another One?». *2014 IEEE International Symposium on Multimedia*. ISBN 978-1-4799-4311-1. doi:10.1109/ISM.2014.24.
5. ↑  «Advances in dataflow programming languages» (PDF).
6. ↑  Asenov, D. and Muller, P. 2014, July. Envision: A fast and flexible visual code editor with fluid interactions (overview). In 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) (pp. 9-12). IEEE.
7. ↑  «Envision».
8. ↑  Fayed, M.S. Al-Qurishi, M. Alamri, A. Hossain, M.A. and Al-Daraiseh, A.A. 2020. PWCT: a novel general-purpose visual programming language in support of pervasive application development. CCF Transactions on Pervasive Computing and Interaction, 2, pp.164-177.
9. ↑  «Shader Editor — Blender Manual». Besøkt 22. januar 2021.
10. ↑  «Compositing — Blender Manual». Besøkt 22. januar 2021.
11. ↑  «Texture Editing — Blender Manual». Besøkt 22. januar 2021.
12. ↑  «Reference/Release Notes/2.92/Geometry Nodes - Blender Developer Wiki». Besøkt 22. januar 2021.
13. ↑  «Geometry Nodes — Blender Manual». Besøkt 2. oktober 2021.