# Linguagem de programação visual

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. 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) 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:
* 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.
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.
Os analisadores para linguagens de programação visual podem ser implementados usando gramáticas gráficas.

## Lista
### 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;
* App Inventor, uma ferramenta de criação de aplicativos para Android, baseada em Blockly [en] e Kawa [en];
* 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;
* Bubble [en], para criar aplicações web prontas para produção;
* 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;
* Stagecast Creator [en], um sistema de ensino baseado em Java;
* StarLogo, uma linguagem de simulação baseada em agentes desenvolvida por Mitchel Resnick [en], Eric Klopfer e outros no MIT Media Lab. Uma extensão da linguagem de programação Logo (um dialeto de Lisp);
* ToonTalk, sistema de programação para crianças;
* Visual Logic [en], para criação de fluxogramas executáveis;
* VIPLE [en], Ambiente de linguagem de programação de IoT/Robótica Visual.

### Multimídia

* AudioMulch [en], um ambiente de criação de som e música baseado no fluxo de sinal de áudio;
* Bidule [en], um ambiente modular com nós e conectores para a criação de música interativa e multimídia (Windows, MacOS);
* Blender, o pacote de gráficos 3D de código aberto, inclui grafos de nós para a construção de sombreadores, Composição [en] e texturas [en], geometria não destrutiva [en];
* Cameleon [en], linguagem gráfica funcional;
* Série The Games Factory/Multimedia Fusion da Clickteam [en], ambientes feitos para o desenvolvimento visual de jogos;
* DYNAMO [en], uma interface de modelagem generativa para o Autodesk Revit;
* Filter Forge [en], geração de filtros baseados em nós para processamento de imagens;
* Houdini (software), software de efeitos visuais, modelagem e animação;
* GenerativeComponents, um software CAD paramétrico desenvolvido pela Bentley Systems.
* Grasshopper 3D, uma interface de modelagem generativa para o Rhinoceros 3D;
* 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
** Max/MSP
** Pure Data
** nato.0+55+3d
* 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);
* Reaktor [en], uma linguagem DSP e de processamento MIDI da Native Instruments [en].
* 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;
* Blender Game Engine (editor de lógica gráfica);
* UPBGE (Uchronia Project Blender Game Engine) fork do Blender Game Engine criado por Tristan Porteries;
* Buildbox [en];
* 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.
** Construct Classic é a versão anterior de código aberto baseada em DirectX do Construct.
* O CryEngine tem uma linguagem de programação visual baseada em nós chamada FlowGraph;
* Dreams, que roda no PlayStation, tem uma linguagem visual extensa que permite aos jogadores criar qualquer tipo de jogo;
* Game Builder Garage [en], uma ferramenta de criação de jogos 3D e 2D para o Nintendo Switch, desenvolvida pela Nintendo;
* 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;
* Human Resource Machine [en] é um jogo de quebra-cabeça baseado em programação visual desenvolvido pela Tomorrow Corporation [en];
* Kodu, um software projetado para programar jogos com uma interface 3D desenvolvido pela Microsoft Research;
* MakeCode Arcade, da Microsoft;
* Pixel Game Maker MV [en] é uma ferramenta de desenvolvimento de videogame 2D baseada em interface;
* Rec Room [en] inclui um sistema de criação de jogos com uma linguagem de programação visual baseada em nós chamada Circuits;
* O Snowdrop [en] tem um sistema de script visual;
* 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;
* DRAKON, uma linguagem algorítmica gráfica;
* EICASLAB, um conjunto de software que inclui uma linguagem gráfica para apoiar o projeto de arquiteturas de controle;
* Flowcode é uma linguagem de programação gráfica para programar microprocessadores incorporados;
* Diagramas de blocos de função [en], usados em controladores lógicos programáveis;
* 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;
* Ladder logic, uma linguagem que simula a lógica de relé comumente usada em controladores lógicos programáveis;
* MeVisLab [en], framework de aplicação multiplataforma para processamento de imagens médicas e visualização científica;
* Microsoft Visual Programming Language [en], linguagem de fluxo de dados para programação robótica que é um componente do Microsoft Robotics Studio [en];
* MindRover [en], um jogo de programação de robôs que incorpora uma linguagem de "fiação" de fluxo de dados;
* Minibloq, linguagem de programação visual para placas compatíveis com robótica e Arduino;
* 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;
* NXT-G, uma linguagem de programação visual para o kit de robótica Lego Mindstorms NXT;
* 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);
* Orange (software) [en] - Uma ferramenta de programação visual de código aberto para mineração de dados, análise de dados estatística e aprendizado de máquina;
* OutSystems, uma linguagem de modelagem visual para desenvolver e alterar todas as camadas de aplicativos da Web centrados em negócios;
* Prograph [en] - uma linguagem de programação orientada a objetos que usa símbolos icônicos para representar ações a serem executadas nos dados;
* Projeto Ptolemy [en] - um projeto destinado a modelar e projetar sistemas embarcados de computação em tempo real;
* Interface gráfica Qucs para configurar a simulação do comportamento de sinais e ruídos de circuitos eletrônicos;
* Reallusion [en] - iClone [en], um software 3D com linguagem Lua e design de programação visual;
* ROBO Pro, uma linguagem de programação visual para o kit de robótica da Fischertechnik [en];
* Scicos [en] Uma linguagem gráfica associada ao pacote de análise numérica ScicosLab [en] (originalmente SciLab);
* Sequential function chart [en], uma linguagem de programação semelhante a uma rede de Petri para controladores lógicos programáveis;
* 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.

### Automação

* Automator;
* 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;
* IBM Cognos Business Intelligence [en], é um exemplo de programas front-end em aplicativos Business Intelligence, que são usados para gerar consultas SQL para execução em bancos de dados RDBMS;
* IBM InfoSphere DataStage, uma ferramenta de ETL;
* Informatica Powercenter, uma ferramenta de ETL para projetar mapeamentos graficamente para carregamento de dados em sistemas de Data Warehouse;
* Microsoft SQL Server Integration Services (SSIS) [en], uma plataforma para integração de dados e aplicativos de fluxo de trabalho;
* Pentaho Data Integration (PDI), anteriormente denominada Kettle, uma ferramenta ETL de código aberto.

### Diversos

* 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;
* Shortcuts [en], uma linguagem de script visual desenvolvida pela Apple para criar macros no macOS, iOS, iPadOS e watchOS;
* StreamBase EventFlow é uma linguagem de programação visual para processamento de eventos de streaming;
* WebML, é uma linguagem visual para projetar aplicativos complexos da Web com uso intensivo de dados que podem ser gerados automaticamente;
* Yahoo! Pipes [en] é um sistema de programação visual de fluxo de dados para processar dados da Web;
* YAWL, linguagem gráfica de fluxo de trabalho.

### Legado

* AppWare [en], também conhecido como MicroBrew, programação baseada em ícones para Mac OS Classic e Microsoft Windows;
* Macromedia Authorware [en] - linguagem de programação baseada em fluxogramas;
* Helix e Double Helix, um sistema pioneiro de gerenciamento de banco de dados para a plataforma Apple Macintosh, criado em 1983;
* Illumination Software Creator [en], uma linguagem e IDE para a criação visual de software para desktop e dispositivos móveis;
* Eclipse IDE editor WYSIWYG de várias linguagens de programação (WindowBuilder);
* NetBeans IDE editor WYSIWYG (GUIBuilding);
* Quill e MooEditable editores JavaScript WYSIWYG moderno;
* Vaadin Visual View Builder
* ThingLab.

## Estilos visuais

* 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;
* Executable UML [en], um perfil da especificação Universal Modeling Language que define a semântica executável para um subconjunto da UML;
* Fluxograma;
* Subtext.