Linguagem de programação visual

Um bloco personalizado simples na linguagem de programação visual Snap! (baseada no Scratch) calculando a soma de todos os números entre a e b

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[editar | editar código-fonte]

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 ou AgentCubes, 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 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, 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.

Os analisadores para linguagens de programação visual podem ser implementados usando gramáticas gráficas.[6][7]

Lista de linguagens visuais[editar | editar código-fonte]

Educacionais[editar | editar código-fonte]

  • AgentCubes, ferramentas de pensamento computacional para design de jogos 3D e 2D e design de simulação;
  • AgentSheets, ferramenta de criação de jogos e de ciência computacional;
  • Alice, uma linguagem baseada em objetos usada para programar ambientes 3D;
  • Analytica, 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 e Kawa;
  • 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, para criar aplicações web prontas para produção;
  • Catrobat, 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, uma ferramenta de programação visual para microcontroladores incorporados e Windows;
  • Flowgorithm, cria fluxogramas executáveis que podem ser convertidos em várias linguagens;
  • Hopscotch, 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, uma linguagem de programação, IDE e ambiente de aprendizado;
  • mBlock, uma extensão do Scratch para interfaces de hardware Arduino. Desenvolvido por Makeblock;
  • Open Roberta, ambiente de programação on-line da Fraunhofer IAIS, projetado para crianças;
  • Pencil Code, uma linguagem de programação visual centrada no desenho com um lápis;
  • Raptor, 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, 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, um sistema de ensino baseado em Java;
  • StarLogo, uma linguagem de simulação baseada em agentes desenvolvida por Mitchel Resnick, 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, para criação de fluxogramas executáveis;
  • VIPLE Ambiente de linguagem de programação de IoT/Robótica Visual.

Multimídia[editar | editar código-fonte]

Videogames[editar | editar código-fonte]

  • O Babylon.js 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]
  • Blender Game Engine (editor de lógica gráfica);
  • Buildbox;
  • Clickteam Fusion, 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.
  • 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, 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 é 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 é um jogo de quebra-cabeça baseado em programação visual desenvolvido pela Tomorrow Corporation;
  • Kodu, um software projetado para programar jogos com uma interface 3D desenvolvido pela Microsoft Research;
  • MakeCode Arcade, da Microsoft;
  • Pixel Game Maker MV é uma ferramenta de desenvolvimento de videogame 2D baseada em interface;
  • Rec Room inclui um sistema de criação de jogos com uma linguagem de programação visual baseada em nós chamada Circuits;
  • O Snowdrop tem um sistema de script visual;
  • Stencyl, 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 árvores de comportamento, 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[editar | editar código-fonte]

Automação[editar | editar código-fonte]

Armazenamento de dados/inteligência empresarial[editar | editar código-fonte]

Diversos[editar | editar código-fonte]

  • Kwikpoint, um tradutor visual de isotipos criado por Alan Stillman;
  • Lava, uma linguagem experimental de RAD orientada a objetos;
  • Morphic (software), 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, linguagem de programação visual gratuita de código aberto para desenvolvimento de software;
  • Shortcuts, 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 é um sistema de programação visual de fluxo de dados para processar dados da Web;[17]
  • YAWL, linguagem gráfica de fluxo de trabalho.

Legado[editar | editar código-fonte]

Estilos visuais[editar | editar código-fonte]

Ver também[editar | editar código-fonte]

Referências

  1. Jost, Beate; Ketterl, Markus; Budde, Reinhard; Leimbach, Thorsten (dezembro de 2014). «Graphical Programming Environments for Educational Robots: Open Roberta - Yet Another One?»: 381–386. doi:10.1109/ISM.2014.24. Consultado em 8 de julho de 2022 
  2. Bragg, S.D.; Driskill, C.G. (setembro de 1994). «Diagrammatic-graphical programming languages and DoD-STD-2167A»: 211–220. doi:10.1109/AUTEST.1994.381508. Consultado em 8 de julho de 2022 
  3. Kuhail, Mohammad Amin; Farooq, Shahbano; Hammad, Rawad; Bahja, Mohammed (2021). «Characterizing Visual Programming Approaches for End-User Developers: A Systematic Review». IEEE Access: 14181–14202. ISSN 2169-3536. doi:10.1109/ACCESS.2021.3051043. Consultado em 8 de julho de 2022 
  4. 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-010Acessível livremente 
  5. Johnston, W.M.; Hanna, J.R.P.; Millar, R.J. (2004). «Advances in dataflow programming languages» (PDF). ACM Computing Surveys (em inglês). 36 (1): 1-34. doi:10.1145/1013208.1013209. Consultado em 16 de fevereiro de 2011 
  6. Rekers, J.; Schürr, A. (1997). «Defining and parsing visual languages with layered graph grammars». Journal of Visual Languages & Computing (em inglês). 8 (1): 27-55. doi:10.1006/jvlc.1996.0027 
  7. Zhang, D.-Q. (2001). «A context-sensitive graph grammar formalism for the specification of visual languages». The Computer Journal (em inglês). 44 (3): 186-200. doi:10.1093/comjnl/44.3.186 
  8. http://www.computermusicjournal.org/reviews/31-* * * 2/regan-bidule.html
  9. «Shader Editor — Blender Manual». docs.blender.org (em inglês). Consultado em 22 de janeiro de 2021 
  10. «Compositing — Blender Manual». docs.blender.org (em inglês). Consultado em 22 de janeiro de 2021 
  11. «Texture Editing — Blender Manual». docs.blender.org (em inglês). Consultado em 22 de janeiro de 2021 
  12. «Reference/Release Notes/2.92/Geometry Nodes - Blender Developer Wiki». wiki.blender.org (em inglês). Consultado em 22 de janeiro de 2021 
  13. «Geometry Nodes — Blender Manual». docs.blender.org (em inglês). Consultado em 2 de outubro de 2021 
  14. «Babylon.js Node Material Editor». nme.babylonjs.com (em inglês). Consultado em 22 de janeiro de 2021 
  15. «Game Making Software - Construct 3 ★★★★★». www.construct.net (em inglês) 
  16. «Construct Classic». SourceForge (em inglês). 25 de maio de 2016 
  17. «Yahoo! pipes» (em inglês). Consultado em 3 de janeiro de 2015. Cópia arquivada em 3 de janeiro de 2015 

Ligações externas[editar | editar código-fonte]