Uma linguagem de programação visual (sigla VPL) é qualquer linguagem de programação que permite aos usuários criar programas manipulando elementos de programa graficamente ao invés da utilização de textos.[1] Uma VPL permite programar com expressões visuais, arranjos espaciais de texto e símbolos gráficos, usados como elementos de sintaxe ou notação secundária. Por exemplo, muitas VPLs (conhecidos como fluxo de dados ou programação diagramática)[2][3] são baseados na ideia de "caixas e setas", onde caixas ou outros objetos de tela são tratados como entidades, conectadas por setas, linhas ou arcos que representam relações.
Definição
As Linguagens de Programação Visual (VPLs) podem ser classificadas conforme o tipo e extensão da expressão visual utilizada em linguagens baseadas em ícones, linguagens baseadas em formulários e linguagens de diagramas. Ambientes de programação visual fornecem elementos gráficos ou icônicos que podem ser manipulados pelos usuários de forma interativa, de acordo com alguma gramática espacial específica para a construção de programas.
O objetivo geral das VPLs é tornar a programação mais acessível para iniciantes e oferecer suporte a programadores em três níveis diferentes:[4]
Sintaxe: As VPLs utilizam ícones/blocos, formulários e diagramas na tentativa de reduzir ou até eliminar o potencial de erros sintáticos, auxiliando no arranjo de primitivas de programação para criar programas bem formados.
Semântica: As VPLs podem fornecer alguns mecanismos para revelar o significado das primitivas de programação. Isso pode incluir funções de ajuda que fornecem documentação e funções incorporadas às linguagens de programação.
Pragmática: As VPLs oferecem suporte ao estudo do significado dos programas em situações específicas. Esse nível de suporte permite que os usuários coloquem artefatos criados com uma VPL em um determinado estado para explorar como o programa reagirá a esse estado. Exemplos: No AgentSheets [en] ou AgentCubes [en], os usuários podem definir jogos ou simulações em um estado específico para ver como o programa reagirá. Com a linguagem de programação Thymio, os usuários podem colocar um robô em um determinado estado para ver como ele reagirá, ou seja, quais sensores serão ativados.
Os desenvolvimentos atuais tentam integrar a abordagem de programação visual com linguagens de programação de fluxo de dados [en] para ter acesso imediato ao estado do programa, resultando em depuração on-line, ou geração e documentação automáticas do programa. As linguagens de fluxo de dados também permitem a paralelização automática [en], que provavelmente se tornará um dos maiores desafios da programação do futuro.[5]
As linguagens Visual Basic, Visual C#, Visual J#, etc. do IDE do Microsoft Visual Studio não são linguagens de programação visual: a representação de algoritmos é textual, embora o IDE embeleze as atividades de edição e depuração com uma interface de usuário avançada. Uma consideração semelhante se aplica à maioria dos outros ambientes de desenvolvimento rápido de aplicações que normalmente suportam um construtor de interface gráfica e, às vezes, também têm ferramentas gráficas para ilustrar (mas não definir) o fluxo de controle e as dependências de dados.
Esta é uma lista dinâmica e pode ser impossível torná-la completa de acordo com certos critérios. Você pode ajudar a Wikipédia expandindo-a com informações baseadas em fontes confiáveis.
Educacionais
AgentCubes [en], ferramentas de pensamento computacional para design de jogos 3D e 2D e design de simulação;
AgentSheets [en], ferramenta de criação de jogos e de ciência computacional;
Alice [en], uma linguagem baseada em objetos usada para programar ambientes 3D;
Analytica [en], para criar e analisar modelos quantitativos para análise de decisões e riscos;
Blockly, uma biblioteca do lado do cliente para a linguagem de programação JavaScript para a criação de linguagens de programação visual (VPLs) e editores baseados em blocos. A Blockly é conhecida por seu uso no Scratch;
Catrobat [en], linguagem de programação visual baseada em blocos para animações, aplicativos e jogos;
Etoys, desenvolvida sob a direção de Alan Kay na Disney para apoiar o aprendizado construcionista, influenciada por Seymour Papert e pela linguagem de programação Logo;
Flowcode [en], uma ferramenta de programação visual para microcontroladores incorporados e Windows;
Flowgorithm [en], cria fluxogramas executáveis que podem ser convertidos em várias linguagens;
Hopscotch [en], um aplicativo para iPad e uma linguagem de programação visual para a criação de aplicativos móveis orientados para a tela sensível ao toque;
Kodu, uma ferramenta de programação visual para Logo;
Kojo [en], uma linguagem de programação, IDE e ambiente de aprendizado;
mBlock [en], uma extensão do Scratch para interfaces de hardware Arduino. Desenvolvido por Makeblock;
Open Roberta [en], ambiente de programação on-line da Fraunhofer IAIS, projetado para crianças;
Pencil Code [en], uma linguagem de programação visual centrada no desenho com um lápis;
Raptor [en], um produto da USAF, para desenhar fluxogramas executáveis;
Scratch, um produto do MIT, projetado para crianças no ensino fundamental e médio e em programas pós-escolares;
ScratchJr [en], uma interpretação do Scratch projetada principalmente para públicos mais jovens (crianças de 5 a 7 anos);
Snap!, uma reimplementação baseada em navegador do BYOB e extensão do Scratch, com procedimentos e listas de primeira classe. Usado para ensinar na UC Berkeley;
Isadora [en], um ambiente gráfico proprietário de programação para Mac OS X e Microsoft Windows, com ênfase na manipulação em tempo real de vídeo digital;
Kyma [en], uma linguagem de programação visual para design de som usada por músicos, pesquisadores e designers de som;
Mama [en] – uma linguagem de programação e IDE para construir animações e jogos 3D;
Max (software), ambiente de programação visual para construir aplicativos interativos de música e multimídia em tempo real
Nodal [en], um aplicativo de software de programação generativa baseado em nós para composição musical;
Nuke [en], um software de programação visual baseado em objetos para composição de efeitos visuais pela The Foundry [en], alimentado por Tcl, Python e Blink-script;
OpenMusic, uma linguagem de programação visual para composição musical (baseada no Common Lisp Object System (CLOS)), aplicações e aplicativos móveis;
Pure Data (Pd) é uma linguagem de programação visual desenvolvida para criar obras interativas de música e multimídia em computador;
Quartz Composer [en], uma linguagem para processamento e renderização de dados gráficos (macOS);
Scala Multimedia [en], uma suíte de autoria e sistema multimídia completo para AmigaOS e Windows;
Softimage, com ICE Interactive Creative Environment;
SynthEdit [en], uma ferramenta de construção de sintetizador usando uma VPL;
TouchDesigner [en], linguagem de programação visual para conteúdo multimídia em tempo real;
Virtools, um middleware usado para criar experiências interativas 3D;
vvvv [en], um conjunto de ferramentas de propósito geral com foco especial na síntese de vídeo em tempo real e programação de grandes ambientes de mídia com interfaces físicas, gráficos de movimento em tempo real, áudio e vídeo;
WireFusion, ambiente de programação visual para criar apresentações web interativas em 3D.
Videogames
O Babylon.js [en] tem um editor de material de nó que pode ser usado para criar sombreadores, texturas processuais, sistemas de partículas e efeitos de pós-processamento;[14]
Clickteam [en], um software de criação de jogos 2D com sistema de editor de eventos, desenvolvido pela Clickteam SARL, originalmente conhecido como Klik n' Play, The Games Factory e Multimedia Fusion 2;
Construct 2-3 são editores de jogos 2D baseados em HTML5, desenvolvidos pela Scirra Ltd.
GameMaker Studio, tem um sistema de criação de jogos de arrastar e soltar desenvolvido pela YoYo Games;
GameSalad [en] é uma ferramenta de criação de jogos visuais desenvolvida pela GameSalad, Inc.;
GDevelop é uma ferramenta de criação de jogos visuais criada por Florian Rival (4ian);
O mecanismo de jogo Godot permite que scripts de jogos e sombreadores gráficos sejam criados usando linguagens de programação visual de gráficos de nós;
Stencyl [en], uma ferramenta de criação de jogos de vídeo;
Unity tem um sistema de script visual a partir da versão ECS;
O Unreal Engine 4 tem uma linguagem de programação visual baseada em nós chamada Blueprints e também sombreadores.
Muitos videogames modernos usam Árvore de comportamento [en], que são, em princípio, uma família de linguagens de programação simples projetadas para modelar comportamentos para personagens não-jogáveis. Os comportamentos são modelados como árvores e são geralmente editados em editores gráficos.
Sistemas/simulação
Analytica, uma linguagem visual comercial para modelos de decisão baseados em diagramas de influência [en];
BPEL (Business Process Execution Language), atualmente uma linguagem de programação gráfica baseada no usuário, utilizada para criar lógica de orquestração para dados e serviços da Web. É baseada em XML, mas tem uma interface gráfica para uma codificação mais rápida;
GNU Radio [en], um kit de ferramentas de desenvolvimento que fornece blocos de processamento de sinais para implementar rádios definidos por software e sistemas de processamento de sinais;
KNIME, o Konstanz Information Miner, é uma plataforma de análise de dados, relatórios e integração de código aberto;
LabVIEW, uma linguagem gráfica projetada para engenheiros e cientistas;
MST Workshop [en], uma linguagem de programação visual interativa para criar soluções matemáticas, prototipagem rápida, aplicativos gráficos bidimensionais e tridimensionais;
Node-RED [en]: kit de ferramentas de desenvolvimento rápido de sistemas de software;
Visualização de dados científicos OpenDX usando uma linguagem de programação visual e um modelo de fluxo de dados;
OpenWire [en] - adiciona habilidades de programação visual de fluxo de dados ao Delphi por meio de componentes Visual Component Library [en] (VCL) e um editor gráfico (o homônimo protocolo binário não está relacionado);
Simcenter Amesim [en], ambiente de programação gráfica para modelagem, simulação e análise de sistemas dinâmicos multidomínios;
Simulink, ambiente de programação gráfica para modelagem, simulação e análise de sistemas dinâmicos de múltiplos domínios;
Stateflow [en], uma linguagem gráfica que inclui diagramas de transição de estado executáveis, fluxogramas, tabelas de transição de estado e tabelas verdadeiras;
STELLA [en], uma VPL para modelagem de dinâmica de sistemas;
Softimage ICE, um sistema baseado em nós que é usado para criar e modificar modelos 3D, simular partículas e executar várias outras tarefas;
VEE [en] é um poderoso ambiente de programação gráfica para testes automatizados, medições e análises avançadas usadas em engenharia de testes;
O VisSim [en], linguagem de modelagem e simulação, permite criar modelos matemáticos rapidamente e executá-los em tempo real.
CiMPLE [en], linguagem de programação visual da ThinkLABs para o ensino de robótica;
Flow [en], uma linguagem de integração gráfica usada na plataforma webMethods;
Pipeline Pilot [en] é uma linguagem de programação científica visual e de fluxo de dados e a ferramenta de autoria para a Accelrys Enterprise Platform.
Armazenamento de dados/inteligência empresarial
Ab Initio [en], uma ferramenta para processamento ETL por meio da criação de gráficos;
Alteryx Designer [en], uma ferramenta para processamento e análise de dados que incorpora SQL, R e Python;
Apache NiFi [en], projeto de software para automatizar o fluxo de dados entre sistemas de software;
Kwikpoint [en], um tradutor visual de isotipos criado por Alan Stillman;
Lava, uma linguagem experimental de RAD orientada a objetos;
Morphic (software) [en], facilita a criação e a edição de objetos gráficos por meio de manipulação direta e de dentro de programas. Todo o ambiente de programação Self foi criado usando o Morphic;
Piet, uma linguagem esotérica em que o programa é uma imagem cujos pixels são os elementos da linguagem;
PWCT [en], linguagem de programação visual gratuita de código aberto para desenvolvimento de software;
DRAKON (Dragon), uma linguagem de programação visual 2D influenciada pela SDL e pela AADL [en], projetada para desenvolver o sistema de software em tempo real a bordo para voo e pouso automáticos da espaçonave soviética/russa Buran;
↑Repenning, Alexander (2017). «Moving Beyond Syntax: Lessons from 20 Years of Blocks Programing in AgentSheets». Journal of Visual Languages and Sentient Systems (em inglês). 3: 68–91. doi:10.18293/vlss2017-010