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 esquemá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, arreglos espaciales de texto y símbolos gráficos, utilizados ya sea como elementos de sintaxis o notación secundaria . Por ejemplo, muchos VPL se basan en la idea de "cuadros y flechas", donde los cuadros 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 se pueden clasificar además, según el tipo y el alcance de la expresión visual utilizada, en lenguajes basados en iconos, lenguajes basados en formas 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 de acuerdo con alguna 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 iconos/bloques, formularios y diagramas que intentan reducir o incluso eliminar el potencial de errores sintácticos, ayudando con la disposición de las 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 apoyan el estudio de lo que significan los programas en situaciones particulares. Este nivel de soporte permite a los usuarios colocar artefactos creados con una VPL en un estado determinado para explorar cómo reaccionará el programa ante 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 llevar un robot a 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 lenguajes de programación de flujo de datos para tener acceso inmediato al estado del programa , lo que resulta en depuración en línea, o generación y documentación automática 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) de 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 rica interfaz de usuario. 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 mutuamente excluyente, ya que algunos entornos de programación visual pueden incorporar elementos de múltiples 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 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 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
Aplicado en determinados 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 desempeñan un papel importante, como las aplicaciones de entrada de datos.
Lenguajes visuales de propósito general
La mayoría de los VPL están diseñados para educación o uso en un 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 puedan utilizar los 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 una VPL se desarrolle utilizando un lenguaje de programación textual. El desarrollo de VPL de propósito general permite lo contrario. Por ejemplo, en 2016 se desarrolló un nuevo lenguaje de programación textual, compilador y máquina virtual , utilizando programación visual . [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 diseño de simulación y diseño de juegos 3D y 2D.
AgentSheets , herramienta de creación de juegos y ciencia computacional.
Alice , un lenguaje basado en objetos utilizado para programar entornos 3D.
Analytica , para construir y analizar modelos cuantitativos para análisis de decisiones y riesgos.
Blockly , una biblioteca del lado del cliente para el lenguaje de programación JavaScript para crear editores y lenguajes de programación visual (VPL) basados en bloques. Blockly es conocido por su uso en Scratch .
Catrobat , lenguaje de programación visual basado en bloques para animaciones, apps 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 con fines educativos, así como para GUI y desarrollo de juegos.
Hopscotch , una aplicación para iPad y 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.
mBlock , una extensión de Scratch para interfaces de hardware Arduino . Desarrollado por Makeblock .
Open Roberta , entorno de programación online de Fraunhofer IAIS, diseñado para niños.
Pencil Code , un lenguaje de programación visual centrado en dibujar con un lápiz
Raptor , un producto de la USAF , para dibujar diagramas de flujo ejecutables.
Scratch , un producto del MIT , diseñado para niños de K-12 y programas extraescolares.
ScratchJr , una interpretación de Scratch pensada principalmente para un público más joven (niños de 5 a 7 años).
Kyma (lenguaje de diseño de sonido) , un lenguaje de programación visual para 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 3D
Max (software) , 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 interactiva por computadora y obras multimedia.
Quartz Composer , un lenguaje para procesar y renderizar datos gráficos ( macOS )
Scala Multimedia Authoring suite y sistema multimedia completo para AmigaOS y Windows
Softimage , con el Entorno Creativo Interactivo ICE.
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 conjunto 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 interactivas en 3D
Juegos de vídeo
Babylon.js tiene un editor de materiales de nodos que se puede utilizar para crear sombreadores, texturas de procedimiento, 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 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.
BPEL (lenguaje de ejecución de procesos de negocio) , actualmente un lenguaje de programación gráfico basado en usuarios que se utiliza para crear lógica de orquestación para datos y servicios web. Está basado 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, generación de 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 la creación de soluciones matemáticas, creación rápida de prototipos y aplicaciones gráficas bidimensionales y tridimensionales.
Node-RED : kit de herramientas de 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 estado ejecutables, diagramas de flujo, tablas de transición de estado y tablas de verdad.
STELLA , un VPL para el 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 otras tareas varias
Cube, un 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) se construye 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 creativo desarrollado en 1975 por DARPA basado en la comunicación humana y el diseño de sistemas.
Atajos , un lenguaje de secuencias de comandos 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 visual de flujo de datos para procesar datos web [21]
^ Bragg, SD; Driskill, CG (1994). "Lenguajes de programación gráfico-diagrama y DoD-STD-2167A". Actas de AUTOTESTCON '94 . págs. 211-220. doi :10.1109/AUTEST.1994.381508. ISBN0-7803-1910-9. S2CID 62509261.
^ 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". Acceso IEEE . 9 : 14181–14202. Código Bib : 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 2014 . págs. 381–386. doi :10.1109/ISM.2014.24. ISBN978-1-4799-4311-1. S2CID 8272806.
^ Repenning, Alexander (2017). "Más allá de la sintaxis: lecciones de 20 años de programación de 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) . Encuestas de Computación ACM . 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 gráficos en capas". Revista de Computación y Lenguajes Visuales . 8 (1): 27–55. doi :10.1006/jvlc.1996.0027. S2CID 40088910.
^ Zhang, D.-Q. (2001). "Un formalismo gramatical gráfico sensible al contexto para la especificación de lenguajes visuales". La revista informática . 44 (3): 186-200. doi : 10.1093/comjnl/44.3.186. hdl : 10397/17637 . S2CID 14139133.
^ Asenov, D. y Muller, P., julio de 2014. 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) (págs. 9-12). IEEE.
^ "Imaginar".
^ Fayed, MS, Al-Qurishi, M., Alamri, A., Hossain, MA y Al-Daraiseh, AA, 2020. PWCT: un novedoso lenguaje de programación visual de uso general que respalda el desarrollo generalizado de aplicaciones. Transacciones CCF sobre computación e interacción generalizadas, 2, páginas 164-177.
^ Ayouni, M., 2020. Inicio de la programación de Ring (Vol. 978, No. 1, págs. 4842-5832). Presione.
^ "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 del nodo Babylon.js". nme.babylonjs.com . Consultado el 22 de enero de 2021 .
^ Construir página de inicio clásica
^ Construir página clásica en SourceForge
^ "¡Yahoo! Tuberías". Archivado desde el original el 3 de enero de 2015 . Consultado el 3 de enero de 2015 .