Articulo de referencia

Lenguaje de programación visual

Un bloque personalizado simple en el lenguaje de programación visual Snap!, que se basa en Scratch , que calcula la suma de todos los números con valores entre a y b En informát...

Un bloque personalizado simple en el lenguaje de programación visual Snap!, que se basa en Scratch , que calcula la suma de todos los números con valores entre a y b

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 de código bajo .

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 resulta en depuración en línea, o 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.

Los analizadores para lenguajes de programación visual se pueden implementar utilizando gramáticas gráficas . [6] [7]

Tipos de lenguajes visuales

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.
Diagramas de flujo
Ampliamente utilizado en ingeniería de software y diseño de sistemas para representar algoritmos y procesos.
Interfaces de arrastrar y soltar
Se utiliza comúnmente en herramientas de diseño de GUI y entornos de desarrollo para crear interfaces de usuario.
Gráficos de nodos
Se utiliza frecuentemente en lenguajes de programación visual, desarrollo de juegos y sistemas de flujo de datos.
Programación de flujo de datos
Popular en entornos de computación paralela, procesamiento de señales y programación visual.
Programación icónica
Se utiliza en diversos contextos para simplificar tareas de programación, a menudo asociadas con el desarrollo de aplicaciones móviles.
Máquinas de estados
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

Implementación de Ring Virtual Machine (VM) utilizando el lenguaje de programación visual PWCT

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 ha desarrollado y mantenido utilizando programación visual durante muchos años [11] . Este enfoque aumentó el nivel de abstracción, ocultando así detalles innecesarios. [12] Este mayor nivel de abstracción permite a los desarrolladores concentrarse en la estructura y funcionalidad general del programa en lugar de enredarse en los detalles de la sintaxis del código. [13] [14]

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.
  • App Inventor para Android , una herramienta para crear aplicaciones Android , basada en Blockly y Kawa .
  • 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.
  • mBlock , una extensión de Scratch para interfaces de hardware de Arduino . Desarrollado por Makeblock .
  • Open Roberta , entorno de programación en línea 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 desde preescolar hasta 12.º grado y programas extraescolares.
  • ScratchJr , una interpretación de Scratch diseñada principalmente para públicos más pequeños (niños de 5 a 7 años).
  • Snap!, una reimplementación de BYOB basada en navegador y una extensión de Scratch , con procedimientos y listas de primera clase. Se utiliza para la enseñanza en la Universidad de California en Berkeley .
  • Stagecast Creator , un sistema de enseñanza basado en Java.
  • StarLogo , un lenguaje de simulación basado en agentes desarrollado por Mitchel Resnick , Eric Klopfer y otros en el MIT Media Lab . Una extensión del lenguaje de programación Logo (un dialecto de Lisp ).
  • ToonTalk , sistema de programación para niños.
  • Visual Logic , para crear diagramas de flujo ejecutables.
  • Entorno de programación visual de IoT/robótica VIPLE

Multimedia

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. [21]
  • Blender Game Engine (Editor de lógica gráfica)
  • Caja de construcción
  • 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. [22] [23]
  • 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.
  • Game Builder Garage , una herramienta de creación de juegos en 3D y 2D para Nintendo Switch , desarrollada por Nintendo .
  • GameMaker Studio , tiene un sistema de creación de juegos de arrastrar y soltar desarrollado por YoYo Games.
  • GameSalad es una herramienta de creación de juegos visuales desarrollada por GameSalad, Inc.
  • GDevelop es una herramienta de creación de juegos visuales creada por Florian Rival (4ian).
  • El motor de juego Godot permite crear scripts de juegos y sombreadores gráficos utilizando lenguajes de programación visual de gráficos de nodos.
  • Human Resource Machine es un juego de rompecabezas basado en programación visual desarrollado por Tomorrow Corporation .
  • Kodu , un software diseñado para programar juegos con una interfaz 3D desarrollado por Microsoft Research.
  • MakeCode Arcade, de Microsoft
  • Pixel Game Maker MV es una herramienta de desarrollo de videojuegos 2D basada en interfaz.
  • Rec Room incluye un sistema de creación de juegos con un lenguaje de programación visual basado en nodos llamado Circuits.
  • Snowdrop tiene un sistema de scripting visual.
  • 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.

Sistemas / simulación

Automatización

Almacenamiento de datos / inteligencia empresarial

Misceláneas

  • Bubble , para crear aplicaciones web listas para producción .
  • 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.
  • ProtoFlux, lenguaje visual utilizado en el sistema de realidad virtual Resonite .
  • 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 [24]
  • YAWL , lenguaje de flujo de trabajo gráfico

Legado

Estilos visuales

Véase también

Referencias

  1. ^ 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. ISBN 0-7803-1910-9.S2CID62509261  .
  2. ^ 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 .
  3. ^ 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. ISBN 978-1-4799-4311-1.S2CID8272806  .
  4. ^ 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 .
  5. ^ 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 .
  6. ^ Rekers, J.; Schürr, A. (1997). "Definición y análisis de lenguajes visuales con gramáticas de grafos en capas". Journal of Visual Languages ​​& Computing . 8 (1): 27– 55. doi :10.1006/jvlc.1996.0027. S2CID  40088910.
  7. ^ 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.
  8. ^ 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.
  9. ^ "Visualizar".
  10. ^ 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.
  11. ^ Ayouni, M., 2020. Programación inicial del anillo (Vol. 978, No. 1, pp. 4842-5832). Aprendido.
  12. ^ Fayed, Mahmoud Samir y Yousef A. Alohali. "Ring: un lenguaje de programación dinámico, ligero y versátil para múltiples plataformas desarrollado mediante programación visual". Electronics 13, n.º 23 (2024): 4627.
  13. ^ Green, T.; Blackwell, A. Dimensiones cognitivas de los artefactos de información: un tutorial. En Actas de la Conferencia BCS HCI, Sheffield, Reino Unido, 1-4 de agosto de 1998; Volumen 98, págs. 1-75
  14. ^ Green, TR; Blandford, AE; Church, L.; Roast, CR; Clarke, S. Dimensiones cognitivas: logros, nuevas direcciones y preguntas abiertas. J. Vis. Lang. Comput. 2006, 17, 328–365
  15. ^ http://www.computermusicjournal.org/reviews/31-* * * 2/regan-bidule.html
  16. ^ "Editor de sombreadores: manual de Blender". docs.blender.org . Consultado el 22 de enero de 2021 .
  17. ^ "Composición: manual de Blender". docs.blender.org . Consultado el 22 de enero de 2021 .
  18. ^ "Edición de texturas: manual de Blender". docs.blender.org . Consultado el 22 de enero de 2021 .
  19. ^ "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 .
  20. ^ "Nodos de geometría: Manual de Blender". docs.blender.org . Consultado el 2 de octubre de 2021 .
  21. ^ "Editor de materiales de nodos Babylon.js". nme.babylonjs.com . Consultado el 22 de enero de 2021 .
  22. ^ Página de inicio de Construct Classic
  23. ^ Página de Construct Classic en SourceForge
  24. ^ "Yahoo! Pipes". Archivado desde el original el 2015-01-03 . Consultado el 2015-01-03 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Lenguaje_de_programación_visual&oldid=1266147438"