Lenguaje de programación escrito gráficamente por un usuario.
En informática , un lenguaje de programación visual ( sistema de programación visual , VPL o VPS ), también conocido como programación diagramática , [1] [2] programación gráfica o codificación de bloques , es un lenguaje de programación que permite a los usuarios crear programas manipulando elementos del programa gráficamente en lugar de especificarlos textualmente . [3] Un VPL permite programar con expresiones visuales, disposiciones espaciales de texto y símbolos gráficos, utilizados como elementos de sintaxis o notación secundaria . Por ejemplo, muchos VPL se basan en la idea de "cajas y flechas", donde las cajas u otros objetos de la pantalla se tratan como entidades, conectadas por flechas, líneas o arcos que representan relaciones. Los VPL son generalmente la base de las plataformas de desarrollo Low-code .
Definición
Los VPL pueden clasificarse, según el tipo y el grado de expresión visual utilizada, en lenguajes basados en iconos, lenguajes basados en formularios y lenguajes de diagramas. Los entornos de programación visual proporcionan elementos gráficos o icónicos que los usuarios pueden manipular de forma interactiva según una gramática espacial específica para la construcción de programas.
El objetivo general de los VPL es hacer que la programación sea más accesible para los principiantes y apoyar a los programadores en tres niveles diferentes [4]
Sintaxis
Los VPL utilizan íconos/bloques, formas y diagramas intentando reducir o incluso eliminar el potencial de errores sintácticos ayudando con la organización de primitivas de programación para crear programas bien formados.
Semántica
Los VPL pueden proporcionar algunos mecanismos para revelar el significado de las primitivas de programación. Esto podría incluir funciones de ayuda que proporcionen funciones de documentación integradas en los lenguajes de programación.
Pragmática
Los VPL respaldan el estudio de lo que significan los programas en situaciones particulares. Este nivel de soporte permite a los usuarios poner artefactos creados con un VPL en un estado determinado para explorar cómo reaccionará el programa a ese estado. Ejemplos: en AgentSheets o AgentCubes, los usuarios pueden configurar juegos o simulaciones en un estado particular para ver cómo reaccionaría el programa. Con el lenguaje de programación Thymio, los usuarios pueden poner un robot en un estado determinado para ver cómo reaccionará, es decir, qué sensores se activarán.
A partir de 2005, los desarrollos actuales intentan integrar el enfoque de programación visual con los lenguajes de programación de flujo de datos para tener acceso inmediato al estado del programa , lo que da como resultado la depuración en línea, o la generación y documentación automáticas del programa. Los lenguajes de flujo de datos también permiten la paralelización automática , que probablemente se convierta en uno de los mayores desafíos de programación del futuro. [5]
Los lenguajes Visual Basic , Visual C# , Visual J# , etc. del entorno de desarrollo integrado (IDE) Microsoft Visual Studio no son lenguajes de programación visual: la representación de algoritmos, etc. es textual, aunque el IDE embellece las actividades de edición y depuración con una interfaz de usuario enriquecida. Una consideración similar se aplica a la mayoría de los demás entornos de desarrollo rápido de aplicaciones , que normalmente admiten un diseñador de formularios y, a veces, también tienen herramientas gráficas para ilustrar (pero no definir) el flujo de control y las dependencias de datos.
La siguiente lista no es excluyente entre sí, ya que algunos entornos de programación visual pueden incorporar elementos de varios paradigmas. La elección del paradigma de programación visual a menudo depende de los requisitos específicos de la aplicación o de las preferencias de los usuarios o los desarrolladores.
Programación basada en bloques
Popularizado por plataformas como Scratch y Blockly, utilizado en entornos educativos y para programación introductoria.
Ampliamente empleado en el desarrollo de juegos, sistemas de control y modelado de sistemas reactivos.
Programación basada en hojas
Se encuentra en aplicaciones de hojas de cálculo y en ciertos entornos de programación educativa.
Programación basada en línea de tiempo
Común en software multimedia y de animación para secuenciar eventos a lo largo del tiempo.
Programación espacial
Se aplica en ciertos entornos interactivos y de modelado 3D.
Programación basada en formularios
Se utiliza en aplicaciones donde la entrada del usuario y las interfaces gráficas juegan un papel importante, como las aplicaciones de ingreso de datos.
Lenguajes visuales de propósito general
La mayoría de los VPL están diseñados para uso educativo o de dominio específico donde los usuarios objetivo son programadores novatos. Pero hay algunos proyectos de investigación que intentan proporcionar un lenguaje de programación visual de propósito general que pueda ser utilizado por programadores convencionales en cualquier proyecto de software en lugar de utilizar lenguajes de programación textuales (como C , C++ , Java , etc.).
Por ejemplo, proyectos de investigación como Envision [8] [9] y PWCT [10] están diseñados para lograr este objetivo. Es común que un VPL se desarrolle utilizando un lenguaje de programación textual. El desarrollo de VPL de propósito general permite lo contrario. Por ejemplo, un nuevo lenguaje de programación textual, Compiler and Virtual Machine, se desarrolló utilizando programación visual en 2016. [11]
Lista de lenguajes visuales
A continuación se incluye una lista de lenguajes de programación visual notables.
Educativo
AgentCubes , herramientas de pensamiento computacional para el diseño de juegos 3D y 2D y diseño de simulación.
AgentSheets , herramienta de creación de juegos y creación de ciencias computacionales.
Alice , un lenguaje basado en objetos utilizado para programar entornos 3D.
Analytica , para construir y analizar modelos cuantitativos para el análisis de decisiones y riesgos.
Blockly , una biblioteca del lado del cliente para el lenguaje de programación JavaScript que permite crear lenguajes de programación visual (VPL) y editores basados en bloques. Blockly es conocido por su uso en Scratch .
Catrobat , lenguaje de programación visual basado en bloques para animaciones, aplicaciones y juegos
Etoys , desarrollado bajo la dirección de Alan Kay en Disney para apoyar el aprendizaje construccionista, influenciado por Seymour Papert y el lenguaje de programación Logo
Flowcode , una herramienta de programación visual para microcontroladores integrados y Windows.
Flowgorithm , crea diagramas de flujo ejecutables que se pueden convertir a varios idiomas.
Greenfoot , un IDE para Java o Stride diseñado principalmente para fines educativos, así como para el desarrollo de GUI y juegos.
Hopscotch , una aplicación para iPad y un lenguaje de programación visual para crear aplicaciones móviles orientadas a pantallas táctiles.
Kodu , una herramienta de programación visual para Logo .
Kojo , un lenguaje de programación, IDE y entorno de aprendizaje.
Kyma (lenguaje de diseño de sonido) , un lenguaje de programación visual para el diseño de sonido utilizado por músicos, investigadores y diseñadores de sonido.
Mama (software) , un lenguaje de programación e IDE para crear animaciones y juegos en 3D
Max (software) , un entorno de programación visual para crear aplicaciones multimedia y musicales interactivas en tiempo real
OpenMusic , un lenguaje de programación visual para aplicaciones de composición musical (basado en Common Lisp Object System (CLOS)) y aplicaciones móviles
Pure Data (Pd) es un lenguaje de programación visual desarrollado para crear música por computadora interactiva y obras multimedia.
Quartz Composer , un lenguaje para procesar y renderizar datos gráficos ( macOS )
SynthEdit , una herramienta de construcción de sintetizadores que utiliza un VPL.
TouchDesigner , lenguaje de programación visual para contenidos multimedia en tiempo real
Virtools , un middleware utilizado para crear experiencias 3D interactivas
vvvv , un kit de herramientas de propósito general con un enfoque especial en la síntesis de video en tiempo real y la programación de grandes entornos multimedia con interfaces físicas, gráficos en movimiento en tiempo real , audio y video.
WireFusion , entorno de programación visual para crear presentaciones web 3D interactivas
Juegos de vídeo
Babylon.js tiene un editor de materiales de nodos que se puede utilizar para crear sombreadores, texturas procedimentales, sistemas de partículas y efectos de posprocesamiento. [18]
Clickteam Fusion , un software de creación de juegos 2D con sistema de edición de eventos, desarrollado por Clickteam SARL, originalmente conocido como Klik n' Play, The Games Factory y Multimedia Fusion 2
Construct 2-3 son editores de juegos 2D basados en HTML5, desarrollados por Scirra Ltd.
Construct Classic es la versión anterior de Construct, de código abierto y basada en DirectX. [19] [20]
CryEngine tiene un lenguaje de programación visual basado en nodos llamado FlowGraph.
Dreams , que se ejecuta en PlayStation, tiene un lenguaje visual extenso que permite a los jugadores crear cualquier tipo de juego.
Stencyl , una herramienta de creación de videojuegos.
Unity tiene un sistema de scripting visual a partir del lanzamiento de ECS. (Originalmente conocido como Bolt)
Unreal Engine 4 tiene un lenguaje de programación visual basado en nodos llamado Blueprints, y también shaders.
Muchos videojuegos modernos utilizan árboles de comportamiento , que son en principio una familia de lenguajes de programación simples diseñados para modelar comportamientos de personajes no jugadores . Los comportamientos se modelan como árboles y, a menudo, se editan en editores gráficos.
BPEL (Business Process Execution Language) , actualmente un lenguaje de programación gráfico basado en el usuario que se utiliza para crear lógica de orquestación para datos y servicios web. Se basa en XML, pero tiene una interfaz gráfica para una codificación más rápida.
GNU Radio , un conjunto de herramientas de desarrollo que proporciona bloques de procesamiento de señales para implementar radios definidas por software y sistemas de procesamiento de señales
KNIME , Konstanz Information Miner, es una plataforma de análisis, informes e integración de datos de código abierto.
LabVIEW , un lenguaje gráfico diseñado para ingenieros y científicos
MST Workshop , un lenguaje de programación visual interactivo para crear soluciones matemáticas, prototipos rápidos y aplicaciones gráficas bidimensionales y tridimensionales
Node-RED : kit de herramientas para el desarrollo rápido de sistemas de software
Simcenter Amesim , entorno de programación gráfica para modelar, simular y analizar sistemas dinámicos multidominio
Simulink , entorno de programación gráfica para modelar, simular y analizar sistemas dinámicos multidominio
Stateflow , un lenguaje gráfico que incluye diagramas de transición de estados ejecutables, diagramas de flujo, tablas de transición de estados y tablas de verdad.
STELLA , un VPL para modelado de dinámica de sistemas
Softimage ICE , un sistema basado en nodos que se utiliza para crear y modificar modelos 3D , simular partículas y realizar varias otras tareas
Cube, un lenguaje esolang para emular un cubo 3D a través de una interfaz de texto 2D "Cube".
Kwikpoint , un traductor visual de isotipos creado por Alan Stillman
Morphic (software) , facilita la construcción y edición de objetos gráficos mediante manipulación directa y desde dentro de los programas; todo el entorno de programación Self (lenguaje de programación) está construido utilizando Morphic
Piet , un lenguaje esotérico, el programa es una imagen cuyos píxeles son los elementos del lenguaje.
PWCT , lenguaje de programación visual gratuito y de código abierto para el desarrollo de software
Pygmalion, un entorno de programación creativa desarrollado en 1975 por DARPA basado en la comunicación humana y el diseño de sistemas.
Atajos , un lenguaje de scripting visual desarrollado por Apple para crear macros en macOS , iOS , iPadOS y watchOS .
StreamBase Systems , StreamBase EventFlow es un lenguaje de programación visual para procesar eventos de transmisión
WebML es un lenguaje visual para diseñar aplicaciones web complejas con uso intensivo de datos que se pueden generar automáticamente.
Yahoo! Pipes es un sistema de programación de flujo de datos visual para procesar datos web [21]
^ Bragg, SD; Driskill, CG (1994). "Lenguajes de programación diagramático-gráficos y DoD-STD-2167A". Actas de AUTOTESTCON '94 . págs. 211–220. doi :10.1109/AUTEST.1994.381508. ISBN0-7803-1910-9.S2CID62509261 .
^ Kuhail, MA; Farooq, S.; Hammad, R.; Bahja, M. (2021). "Caracterización de enfoques de programación visual para desarrolladores de usuarios finales: una revisión sistemática". IEEE Access . 9 : 14181–14202. Bibcode :2021IEEEA...914181K. doi : 10.1109/ACCESS.2021.3051043 .
^ Jost, Beate; Ketterl, Markus; Budde, Reinhard; Leimbach, Thorsten (2014). "Entornos de programación gráfica para robots educativos: Open Roberta - ¿Otro más?". Simposio internacional IEEE sobre multimedia de 2014. págs. 381–386. doi :10.1109/ISM.2014.24. ISBN978-1-4799-4311-1.S2CID8272806 .
^ Repenning, Alexander (2017). "Más allá de la sintaxis: lecciones de 20 años de programación en bloques en AgentSheets". Revista de lenguajes visuales y sistemas sensibles . 3 : 68–91. doi : 10.18293/vlss2017-010 .
^ Johnston, WM; Hanna, JRP; Millar, RJ (2004). "Avances en lenguajes de programación de flujo de datos" (PDF) . ACM Computing Surveys . 36 (1): 1–34. doi :10.1145/1013208.1013209. S2CID 5257722 . Consultado el 16 de febrero de 2011 .
^ Rekers, J.; Schürr, A. (1997). "Definición y análisis de lenguajes visuales con gramáticas de grafos en capas". Revista de lenguajes visuales y computación . 8 (1): 27–55. doi :10.1006/jvlc.1996.0027. S2CID 40088910.
^ Zhang, D.-Q. (2001). "Un formalismo gramatical de grafos sensible al contexto para la especificación de lenguajes visuales". The Computer Journal . 44 (3): 186–200. doi :10.1093/comjnl/44.3.186. hdl : 10397/17637 . S2CID 14139133.
^ Asenov, D. y Muller, P., 2014, julio. Envision: un editor de código visual rápido y flexible con interacciones fluidas (descripción general). En el Simposio IEEE de 2014 sobre lenguajes visuales y computación centrada en el ser humano (VL/HCC) (pp. 9-12). IEEE.
^ "Visualizar".
^ Fayed, MS, Al-Qurishi, M., Alamri, A., Hossain, MA y Al-Daraiseh, AA, 2020. PWCT: un nuevo lenguaje de programación visual de propósito general en apoyo del desarrollo de aplicaciones generalizadas. CCF Transactions on Pervasive Computing and Interaction, 2, págs. 164-177.
^ Ayouni, M., 2020. Introducción a la programación del anillo (Vol. 978, No. 1, pp. 4842-5832). Aprendido.
^ "Editor de sombreadores: manual de Blender". docs.blender.org . Consultado el 22 de enero de 2021 .
^ "Composición: manual de Blender". docs.blender.org . Consultado el 22 de enero de 2021 .
^ "Edición de texturas: manual de Blender". docs.blender.org . Consultado el 22 de enero de 2021 .
^ "Referencia/Notas de la versión/2.92/Nodos de geometría - Wiki para desarrolladores de Blender". wiki.blender.org . Consultado el 22 de enero de 2021 .
^ "Nodos de geometría: Manual de Blender". docs.blender.org . Consultado el 2 de octubre de 2021 .
^ "Editor de materiales de nodos Babylon.js". nme.babylonjs.com . Consultado el 22 de enero de 2021 .
^ Página de inicio de Construct Classic
^ Página de Construct Classic en SourceForge
^ "Yahoo! Pipes". Archivado desde el original el 2015-01-03 . Consultado el 2015-01-03 .