Язык программирования, написанный пользователем графически
В вычислительной технике язык визуального программирования ( система визуального программирования , 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 общего назначения позволяет сделать наоборот. Например, в 2016 году с использованием визуального программирования разработан новый язык текстового программирования Compiler and Virtual Machine. [11]
Список визуальных языков
Ниже приведен список известных языков визуального программирования.
Образовательный
AgentCubes , инструменты вычислительного мышления для 3D и 2D игр и моделирования.
AgentSheets — инструмент для разработки игр и вычислительной техники.
Алиса — объектно-ориентированный язык, используемый для программирования 3D-сред.
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 .
Откройте Roberta , онлайн-среду программирования от Fraunhofer IAIS, предназначенную для детей.
Pencil Code — язык визуального программирования, основанный на рисовании карандашом.
Raptor , продукт ВВС США , для рисования исполняемых блок-схем.
Max (программное обеспечение) , среда визуального программирования для создания интерактивных музыкальных и мультимедийных приложений в реальном времени.
Nodal — приложение для генеративного программирования на основе узлов для создания музыки.
Nuke — объектно-ориентированное программное обеспечение для визуального программирования для создания визуальных эффектов от The Foundry на базе Tcl, Python и Blink-script.
OpenMusic , язык визуального программирования для создания музыкальных приложений (на основе Common Lisp Object System (CLOS)) и мобильных приложений.
Pure Data (Pd) — язык визуального программирования, разработанный для создания интерактивной компьютерной музыки и мультимедийных произведений.
Quartz Composer — язык обработки и рендеринга графических данных ( macOS )
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, имеет обширный визуальный язык, позволяющий игрокам создавать любые игры.
Unreal Engine 4 имеет основанный на узлах язык визуального программирования под названием Blueprints, а также шейдеры.
Во многих современных видеоиграх используются деревья поведения , которые, по сути, представляют собой семейство простых языков программирования, предназначенных для моделирования поведения неигровых персонажей . Поведения моделируются в виде деревьев и часто редактируются в графических редакторах.
BPEL (язык выполнения бизнес-процессов) , в настоящее время графический язык пользовательского программирования, используемый для создания логики оркестровки данных и веб-сервисов. Он основан на XML, но имеет графический интерфейс для более быстрого кодирования.
GNU Radio — набор инструментов для разработки, который предоставляет блоки обработки сигналов для реализации программно-определяемых радиостанций и систем обработки сигналов.
KNIME , Konstanz Information Miner, представляет собой платформу для анализа данных, отчетности и интеграции с открытым исходным кодом.
LabVIEW — графический язык, предназначенный для инженеров и ученых.
MST Workshop — интерактивный визуальный язык программирования для создания математических решений, быстрого прототипирования, двухмерных и трехмерных графических приложений.
Node-RED : набор инструментов для быстрой разработки программных систем
Simcenter Amesim , среда графического программирования для моделирования, моделирования и анализа многодоменных динамических систем
Simulink , среда графического программирования для моделирования, моделирования и анализа многодоменных динамических систем.
Stateflow — графический язык, который включает в себя исполняемые диаграммы перехода состояний, блок-схемы, таблицы перехода состояний и таблицы истинности.
STELLA , VPL для моделирования системной динамики.
Softimage ICE — узловая система, которая используется для создания и модификации 3D-моделей , моделирования частиц и выполнения различных других задач.
VEE — это мощная графическая среда программирования для автоматизированного тестирования, измерения и расширенного анализа, используемая в тестировании.
VisSim , язык моделирования и симуляции , позволяет быстро создавать математические модели и выполнять их в режиме реального времени.
Cube, esolang для эмуляции 3D-куба через 2D-текстовый интерфейс «Cube».
Kwikpoint — визуальный переводчик изотипов, созданный Аланом Стиллманом.
Lava — экспериментальный объектно-ориентированный язык RAD .
Морфический (программный) упрощает создание и редактирование графических объектов путем прямого манипулирования и из программ; вся среда программирования Self (язык программирования) построена с использованием Morphic.
Пит , эзотерический язык, программа представляет собой изображение, пиксели которого являются элементами языка.
PWCT — бесплатный язык визуального программирования с открытым исходным кодом для разработки программного обеспечения.
Пигмалион, творческая среда программирования, разработанная в 1975 году DARPA на основе человеческого общения и проектирования систем.
Ярлыки — язык визуальных сценариев, разработанный Apple для создания макросов в macOS , iOS , iPadOS и watchOS .
StreamBase Systems , StreamBase EventFlow — визуальный язык программирования для обработки потоковых событий.
WebML — это визуальный язык для разработки сложных веб-приложений с интенсивным использованием данных, которые могут создаваться автоматически.
Yahoo! Pipes — это система визуального программирования потоков данных для обработки веб-данных [21].
^ Брэгг, SD; Дрискилл, К.Г. (1994). «Диаграммно-графические языки программирования и DoD-STD-2167A». Материалы АВТОТЕСТКОН '94 . стр. 211–220. дои : 10.1109/AUTEST.1994.381508. ISBN0-7803-1910-9. S2CID 62509261.
^ Кухейл, Массачусетс; Фарук, С.; Хаммад, Р.; Бахья, М. (2021). «Характеристика подходов к визуальному программированию для разработчиков конечных пользователей: систематический обзор». Доступ IEEE . 9 : 14181–14202. Бибкод : 2021IEEA...914181K. дои : 10.1109/ACCESS.2021.3051043 .
^ Йост, Беате; Кеттерл, Маркус; Бадд, Рейнхард; Леймбах, Торстен (2014). «Среды графического программирования для образовательных роботов: Open Roberta - еще один?». Международный симпозиум IEEE по мультимедиа 2014 . стр. 381–386. дои : 10.1109/ISM.2014.24. ISBN978-1-4799-4311-1. S2CID 8272806.
^ Репеннинг, Александр (2017). «Выходя за рамки синтаксиса: уроки 20 лет блочного программирования в AgentSheets». Журнал визуальных языков и разумных систем . 3 : 68–91. дои : 10.18293/vlss2017-010 .
^ Джонстон, WM; Ханна, JRP; Миллар, Р.Дж. (2004). «Достижения в языках программирования потоков данных» (PDF) . Обзоры вычислительной техники ACM . 36 (1): 1–34. дои : 10.1145/1013208.1013209. S2CID 5257722 . Проверено 16 февраля 2011 г.
^ Рекерс, Дж.; Шюрр, А. (1997). «Определение и анализ визуальных языков с помощью грамматик многоуровневых графов». Журнал визуальных языков и вычислений . 8 (1): 27–55. дои : 10.1006/jvlc.1996.0027. S2CID 40088910.
^ Асенов Д. и Мюллер П., июль 2014 г. Envision: быстрый и гибкий визуальный редактор кода с плавным взаимодействием (обзор). В 2014 году состоялся симпозиум IEEE по визуальным языкам и человеко-ориентированным вычислениям (VL/HCC) (стр. 9–12). IEEE.
^ «Предвидение».
^ Файед, М.С., Аль-Куриши, М., Аламри, А., Хоссейн, М.А. и Аль-Дарайсе, А.А., 2020. PWCT: новый язык визуального программирования общего назначения для поддержки повсеместной разработки приложений. Транзакции CCF по всеобъемлющим вычислениям и взаимодействию, 2, стр. 164–177.
^ Аюни, М., 2020. Начало кольцевого программирования (том 978, № 1, стр. 4842-5832). Апресс.