Visuell programmering, også kjent som blokkoding,[1]blokkprogrammering[2] eller grafisk programmering,[3] vil si å lage et dataprogram ved å manipulere objekter i et grafisk brukergrensesnitt i stedet for å skrive konvensjonell tekstkode.[4] 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.[5]
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.
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
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[6][7] og PWCT.[8]
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.
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.
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
^Drange, Pål Grønås (19. januar 2024). «blokkprogrammering». Store norske leksikon (på norsk). Besøkt 10. mars 2024.
^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. ISBN978-1-4799-4311-1. doi:10.1109/ISM.2014.24.
^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.
^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.