Язык программирования, написанный пользователем в графическом виде
В вычислительной технике визуальный язык программирования ( визуальная система программирования , VPL или VPS ), также известный как диаграммное программирование , [1] [2] графическое программирование или блочное кодирование , — это язык программирования , который позволяет пользователям создавать программы , манипулируя элементами программы графически, а не указывая их текстово . [3] VPL позволяет программировать с помощью визуальных выражений, пространственных расположений текста и графических символов, используемых либо как элементы синтаксиса , либо как вторичные обозначения . Например, многие VPL основаны на идее «коробок и стрелок», где коробки или другие объекты экрана рассматриваются как сущности, соединенные стрелками, линиями или дугами, которые представляют отношения. VPL, как правило, являются основой платформ разработки Low-code .
Определение
VPL могут быть далее классифицированы в соответствии с типом и степенью используемого визуального выражения на языки на основе иконок, языки на основе форм и языки диаграмм. Среды визуального программирования предоставляют графические или иконические элементы, которыми пользователи могут манипулировать интерактивным способом в соответствии с некоторой конкретной пространственной грамматикой для построения программ.
Основная цель VPL — сделать программирование более доступным для новичков и оказать поддержку программистам на трех разных уровнях [4]
Синтаксис
VPL используют значки/блоки, формы и диаграммы, пытаясь уменьшить или даже устранить потенциальные синтаксические ошибки, помогая в организации примитивов программирования для создания хорошо сформированных программ.
Семантика
VPL могут предоставлять некоторые механизмы для раскрытия смысла примитивов программирования. Это может включать функции помощи, предоставляющие функции документирования, встроенные в языки программирования.
Прагматика
VPL поддерживают изучение того, что программы означают в конкретных ситуациях. Этот уровень поддержки позволяет пользователям помещать артефакты, созданные с помощью VPL, в определенное состояние, чтобы исследовать, как программа будет реагировать на это состояние. Примеры: в AgentSheets или AgentCubes пользователи могут устанавливать игры или симуляции в определенное состояние, чтобы увидеть, как программа будет реагировать. С помощью языка программирования Thymio пользователи могут перевести робота в определенное состояние, чтобы увидеть, как он будет реагировать, т. е. какие датчики будут активированы.
По состоянию на 2005 год текущие разработки пытаются интегрировать подход визуального программирования с языками программирования потоков данных , чтобы либо иметь немедленный доступ к состоянию программы , что приводит к онлайн-отладке, либо автоматическую генерацию программ и документирование. Языки потоков данных также позволяют автоматическое распараллеливание , что, вероятно, станет одной из величайших задач программирования будущего. [5]
Языки Visual Basic, Visual C#, Visual J# и т. д. интегрированной среды разработки ( IDE ) Microsoft Visual Studio не являются визуальными языками программирования: представление алгоритмов и т. д. является текстовым, хотя IDE украшает редактирование и отладку с помощью богатого пользовательского интерфейса. Аналогичное соображение применимо к большинству других сред быстрой разработки приложений , которые обычно поддерживают конструктор форм и иногда также имеют графические инструменты для иллюстрации (но не определения) потока управления и зависимостей данных.
Парсеры для визуальных языков программирования могут быть реализованы с использованием графовых грамматик . [6] [7]
Типы визуальных языков
Следующий список не является взаимоисключающим, поскольку некоторые среды визуального программирования могут включать элементы из нескольких парадигм. Выбор парадигмы визуального программирования часто зависит от конкретных требований приложения или предпочтений пользователей или разработчиков.
Блочное программирование
Получил популярность благодаря таким платформам, как Scratch и Blockly, используется в образовательных учреждениях и для вводного программирования.
Широко применяется в разработке игр, систем управления и моделировании реактивных систем.
Программирование на основе листов
Встречается в приложениях для работы с электронными таблицами и некоторых образовательных средах программирования.
Программирование на основе временной шкалы
Распространено в мультимедийном и анимационном программном обеспечении для задания последовательности событий во времени.
Пространственное программирование
Применяется в определенных интерактивных средах и средах 3D-моделирования.
Программирование на основе форм
Используется в приложениях, где пользовательский ввод и графические интерфейсы играют важную роль, например, в приложениях ввода данных.
Визуальные языки общего назначения
Большинство VPL предназначены для образования или использования в конкретных областях , где целевыми пользователями являются начинающие программисты. Но есть некоторые исследовательские проекты, которые пытаются предоставить визуальный язык программирования общего назначения , который может использоваться программистами основного направления в любом программном проекте вместо использования текстовых языков программирования (таких как C , C++ , Java и т. д.).
Например, исследовательские проекты, такие как Envision [8] [9] и PWCT [10], предназначены для достижения этой цели. Обычно VPL разрабатывается с использованием текстового языка программирования. Разработка VPL общего назначения допускает обратный путь. Например, новый текстовый язык программирования Compiler and Virtual Machine был разработан с использованием визуального программирования в 2016 году. [11]
Список визуальных языков
Ниже приведен список известных языков визуального программирования.
Образовательный
AgentCubes — инструменты вычислительного мышления для 3D- и 2D-дизайна игр и моделирования.
AgentSheets , инструмент для создания игр и вычислительной науки.
Alice — объектно-ориентированный язык, используемый для программирования трехмерных сред.
Analytica — для построения и анализа количественных моделей для принятия решений и анализа рисков.
Blockly — клиентская библиотека для языка программирования JavaScript, позволяющая создавать блочные визуальные языки программирования (VPL) и редакторы. Blockly известна своим использованием в Scratch .
Catrobat , блочный визуальный язык программирования для анимации, приложений и игр
Etoys , разработанный под руководством Алана Кея в Disney для поддержки конструкционистского обучения, под влиянием Сеймура Паперта и языка программирования Logo.
Flowcode — визуальный инструмент программирования для встраиваемых микроконтроллеров и Windows.
Flowgorithm создает исполняемые блок-схемы, которые можно конвертировать на несколько языков.
Greenfoot — IDE для Java или Stride, в первую очередь предназначенная для образовательных целей, а также для разработки графических интерфейсов и игр.
Hopscotch — приложение для iPad и визуальный язык программирования для создания мобильных приложений, ориентированных на сенсорные экраны.
Kodu , визуальный инструмент программирования для Logo .
Kojo — язык программирования, IDE и среда обучения.
mBlock , расширение Scratch для аппаратных интерфейсов Arduino . Разработано Makeblock .
Open Roberta , онлайн-среда программирования от Fraunhofer IAIS, разработанная для детей.
Pencil Code — визуальный язык программирования, ориентированный на рисование карандашом.
Raptor — продукт ВВС США , предназначенный для рисования исполняемых блок-схем.
Max (программное обеспечение) , среда визуального программирования для создания интерактивных музыкальных и мультимедийных приложений в реальном времени
SynthEdit — инструмент для создания синтезаторов с использованием VPL.
TouchDesigner , визуальный язык программирования для создания мультимедийного контента в реальном времени
Virtools — промежуточное программное обеспечение, используемое для создания интерактивных 3D-приложений.
vvvv — универсальный набор инструментов, специально предназначенный для синтеза видео в реальном времени и программирования больших медиасред с физическими интерфейсами, графикой движения в реальном времени , аудио и видео.
WireFusion , среда визуального программирования для создания интерактивных 3D веб-презентаций
Видеоигры
Babylon.js имеет редактор материалов узлов, который можно использовать для создания шейдеров, процедурных текстур, систем частиц и эффектов постобработки. [18]
Clickteam Fusion — программное обеспечение для создания 2D-игр с системой редактора событий, разработанное Clickteam SARL, изначально известное как Klik n' Play, The Games Factory и Multimedia Fusion 2
Construct 2-3 — это редакторы 2D-игр на базе HTML5, разработанные компанией Scirra Ltd.
Construct Classic — предыдущая версия Construct с открытым исходным кодом на базе DirectX. [19] [20]
CryEngine имеет основанный на узлах визуальный язык программирования под названием FlowGraph.
Dreams , работающая на PlayStation, имеет обширный визуальный язык, позволяющий игрокам создавать любые виды игр.
GameMaker Studio — это система создания игр методом перетаскивания, разработанная YoYo Games.
GameSalad — это визуальный инструмент для создания игр, разработанный компанией GameSalad, Inc.
GDevelop — это визуальный инструмент для создания игр, созданный Флорианом Ривалем (4ian).
Игровой движок Godot позволяет создавать игровые скрипты и графические шейдеры с использованием визуальных языков программирования на основе графов узлов.
Unity имеет визуальную систему скриптования с момента выпуска ECS. (Официально известная как Bolt)
Unreal Engine 4 имеет основанный на узлах визуальный язык программирования под названием Blueprints, а также шейдеры.
Многие современные видеоигры используют деревья поведения , которые в принципе являются семейством простых языков программирования, разработанных для моделирования поведения неигровых персонажей . Поведения моделируются в виде деревьев и часто редактируются в графических редакторах.
BPEL (Business Process Execution Language) , в настоящее время графический пользовательский язык программирования, используемый для создания оркестровки логики для данных и веб-сервисов. Он основан на XML, но имеет графический интерфейс для более быстрого кодирования.
GNU Radio — набор инструментов для разработки, предоставляющий блоки обработки сигналов для реализации программно-определяемых радиосистем и систем обработки сигналов.
KNIME (Konstanz Information Miner) — это платформа с открытым исходным кодом для анализа данных, создания отчетов и интеграции.
LabVIEW — графический язык, разработанный для инженеров и ученых.
MST Workshop , интерактивный визуальный язык программирования для создания математических решений, быстрого прототипирования, двухмерных и трехмерных графических приложений
Node-RED : набор инструментов для быстрой разработки программных систем
OpenWire — добавляет возможности визуального программирования потоков данных в Delphi с помощью компонентов Visual Component Library (VCL) и графического редактора (одноименный двоичный протокол не имеет отношения к делу)
Softimage ICE — система на основе узлов, которая используется для создания и изменения 3D-моделей , моделирования частиц и выполнения различных других задач.
VEE — это мощная графическая среда программирования для автоматизированного тестирования, измерений и расширенного анализа, используемая в испытательной инженерии.
VisSim , язык моделирования и имитации , позволяет быстро создавать математические модели и выполнять их в режиме реального времени.
ДРАКОН (Dragon) , визуальный двумерный язык программирования, разработанный под влиянием SDL и AADL и предназначенный для разработки бортовой программной системы жесткого реального времени для автоматического полета и посадки советского/российского орбитального космического корабля «Буран» (Snowstorm).
^ Брэгг, SD; Дрискилл, CG (1994). «Диаграммно-графические языки программирования и DoD-STD-2167A». Труды AUTOTESTCON '94 . стр. 211–220. doi :10.1109/AUTEST.1994.381508. ISBN0-7803-1910-9. S2CID 62509261.
^ Кухейл, МА; Фарук, С.; Хаммад, Р.; Бахджа, М. (2021). «Характеристика подходов к визуальному программированию для разработчиков конечных пользователей: систематический обзор». IEEE Access . 9 : 14181–14202. Bibcode : 2021IEEEA...914181K. doi : 10.1109/ACCESS.2021.3051043 .
^ Йост, Беате; Кеттерль, Маркус; Бадде, Рейнхард; Леймбах, Торстен (2014). «Графические среды программирования для образовательных роботов: Open Roberta — Yet Another One?». Международный симпозиум IEEE по мультимедиа 2014 г. стр. 381–386. doi :10.1109/ISM.2014.24. ISBN978-1-4799-4311-1. S2CID 8272806.
^ Репеннинг, Александр (2017). «Выход за рамки синтаксиса: уроки 20-летнего блочного программирования в AgentSheets». Журнал визуальных языков и разумных систем . 3 : 68–91. doi : 10.18293/vlss2017-010 .
^ Рекерс, Дж.; Шюрр, А. (1997). «Определение и анализ визуальных языков с помощью грамматик многоуровневых графов». Журнал визуальных языков и вычислений . 8 (1): 27–55. doi :10.1006/jvlc.1996.0027. S2CID 40088910.
^ Чжан, Д.-К. (2001). «Формализм грамматики графов, чувствительный к контексту, для спецификации визуальных языков». The Computer Journal . 44 (3): 186–200. doi : 10.1093/comjnl/44.3.186. hdl : 10397/17637 . S2CID 14139133.
^ Асенов, Д. и Мюллер, П., 2014, июль. Envision: быстрый и гибкий визуальный редактор кода с текучими взаимодействиями (обзор). В 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) (стр. 9-12). IEEE.
^ «Представьте».
^ Файед, М.С., Аль-Куриши, М., Аламри, А., Хоссейн, МА и Аль-Дарайсех, А.А., 2020. PWCT: новый визуальный язык программирования общего назначения для поддержки разработки всеобъемлющих приложений. Труды CCF по всеобъемлющим вычислениям и взаимодействию, 2, стр. 164-177.
^ Аюни, М., 2020. Программирование начального кольца (т. 978, № 1, стр. 4842-5832). Apress.