Визуальный язык программирования

Язык программирования, написанный пользователем в графическом виде
Простой пользовательский блок в визуальном языке программирования Snap!, основанный на Scratch , вычисляющий сумму всех чисел со значениями от a до b

В вычислительной технике визуальный язык программирования ( визуальная система программирования , VPL или VPS ), также известный как диаграммное программирование , [1] [2] графическое программирование или блочное кодирование , — это язык программирования , который позволяет пользователям создавать программы , манипулируя элементами программы графически, а не указывая их текстово . [3] VPL позволяет программировать с помощью визуальных выражений, пространственных расположений текста и графических символов, используемых либо как элементы синтаксиса , либо как вторичные обозначения . Например, многие VPL основаны на идее «коробок и стрелок», где коробки или другие объекты экрана рассматриваются как сущности, соединенные стрелками, линиями или дугами, которые представляют отношения. VPL, как правило, являются основой платформ разработки с низким объемом кода .

Определение

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-моделирования.
Программирование на основе форм
Используется в приложениях, где пользовательский ввод и графические интерфейсы играют важную роль, например, в приложениях ввода данных.

Визуальные языки общего назначения

Реализация виртуальной машины Ring (VM) с использованием визуального языка программирования PWCT

Большинство VPL предназначены для образования или использования в конкретных областях , где целевыми пользователями являются начинающие программисты. Но есть некоторые исследовательские проекты, которые пытаются предоставить визуальный язык программирования общего назначения , который может использоваться программистами основного направления в любом программном проекте вместо использования текстовых языков программирования (таких как C , C++ , Java и т. д.).

Например, такие исследовательские проекты, как Envision [8] [9] и PWCT [10], предназначены для достижения этой цели. Обычно VPL разрабатывается с использованием текстового языка программирования. Разработка VPL общего назначения допускает обратный процесс. Например, новый текстовый язык программирования Compiler и Virtual Machine разрабатывались и поддерживались с использованием визуального программирования в течение многих лет [11] . Такой подход повысил уровень абстракции, тем самым скрывая ненужные детали. [12] Этот повышенный уровень абстракции позволяет разработчикам сосредоточиться на общей структуре и функциональности программы, а не запутываться в деталях синтаксиса кода. [13] [14]

Список визуальных языков

Ниже приведен список известных языков визуального программирования.

Образовательный

  • AgentCubes — инструменты вычислительного мышления для 3D- и 2D-дизайна игр и моделирования.
  • AgentSheets , инструмент для создания игр и вычислительной науки.
  • Alice — объектно-ориентированный язык, используемый для программирования трехмерных сред.
  • Analytica — для построения и анализа количественных моделей для принятия решений и анализа рисков.
  • App Inventor для Android , инструмент для создания приложений Android , основанный на Blockly и Kawa .
  • 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 — продукт ВВС США , предназначенный для рисования исполняемых блок-схем.
  • Scratch — продукт Массачусетского технологического института , предназначенный для детей от детского сада до 12 класса, а также для программ послешкольного образования.
  • ScratchJr — интерпретация Scratch, предназначенная в первую очередь для младшей аудитории (детей 5–7 лет).
  • Snap! — браузерная реализация BYOB и расширение Scratch с первоклассными процедурами и списками. Используется для обучения в Калифорнийском университете в Беркли .
  • Stagecast Creator — обучающая система на основе Java.
  • StarLogo — язык агентного моделирования , разработанный Митчелом Резником , Эриком Клопфером и другими в MIT Media Lab . Расширение языка программирования Logo ( диалект Lisp ).
  • ToonTalk , система программирования для детей.
  • Visual Logic — для создания исполняемых блок-схем.
  • VIPLE Visual IoT/Среда языка программирования робототехники

Мультимедиа

  • AudioMulch — среда создания звука и музыки на основе потока аудиосигналов
  • Bidule , модульная среда узлов и коммутационных шнуров для создания интерактивной компьютерной музыки и мультимедиа (Windows, MacOS). [15]
  • Blender , пакет 3D-графики с открытым исходным кодом , включает в себя графы узлов для построения шейдеров , [16] композитов [17] текстур , [18] и неразрушающей геометрии . [19] [20]
  • Cameleon , графический функциональный язык
  • Серия игровых фабрик/мультимедийных слияний от Clickteam , среды, созданные для визуальной разработки игр
  • Dynamo , интерфейс генеративного моделирования для Autodesk Revit
  • Filter Forge — генерация фильтров на основе узлов для обработки изображений
  • Houdini (программное обеспечение) — программное обеспечение для создания визуальных эффектов, моделирования и анимации.
  • GenerativeComponents — параметрическое программное обеспечение САПР, разработанное Bentley Systems
  • Grasshopper 3D , интерфейс генеративного моделирования для Rhinoceros 3D
  • Isadoraфирменная графическая среда программирования для macOS и Microsoft Windows , ориентированная на обработку цифрового видео в реальном времени.
  • Kyma (язык звукового дизайна) — визуальный язык программирования для звукового дизайна, используемый музыкантами, исследователями и звукорежиссерами.
  • Mama (программное обеспечение) , язык программирования и IDE для создания 3D-анимаций и игр
  • Max (программное обеспечение) , среда визуального программирования для создания интерактивных музыкальных и мультимедийных приложений в реальном времени
  • Nodal — программное обеспечение для генеративного программирования на основе узлов для сочинения музыки
  • Nuke — объектно-ориентированное визуальное программное обеспечение для программирования визуальных эффектов от The Foundry, работающее на Tcl, Python и Blink-script.
  • OpenMusic — визуальный язык программирования для создания музыкальных композиций (на основе Common Lisp Object System (CLOS)) и мобильных приложений
  • Pure Data (Pd) — визуальный язык программирования, разработанный для создания интерактивной компьютерной музыки и мультимедийных произведений.
  • Quartz Composer , язык для обработки и рендеринга графических данных ( macOS )
  • Reaktor — язык цифровой обработки сигналов и MIDI от Native Instruments
  • Scala Multimedia Authoring Suite и полная мультимедийная система для AmigaOS и Windows
  • Softimage с интерактивной творческой средой ICE.
  • SynthEdit — инструмент для создания синтезаторов с использованием VPL.
  • TouchDesigner , визуальный язык программирования для создания мультимедийного контента в реальном времени
  • Virtools — промежуточное программное обеспечение, используемое для создания интерактивных 3D-приложений.
  • vvvv — универсальный набор инструментов, специально предназначенный для синтеза видео в реальном времени и программирования больших медиасред с физическими интерфейсами, графикой движения в реальном времени , аудио и видео.
  • WireFusion , среда визуального программирования для создания интерактивных 3D веб-презентаций

Видеоигры

  • Babylon.js имеет редактор материалов узлов, который можно использовать для создания шейдеров, процедурных текстур, систем частиц и эффектов постобработки. [21]
  • Blender Game Engine (Графический редактор логики)
  • Строительная коробка
  • 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. [22] [23]
  • CryEngine имеет основанный на узлах визуальный язык программирования под названием FlowGraph.
  • Dreams , работающая на PlayStation, имеет обширный визуальный язык, позволяющий игрокам создавать любые виды игр.
  • Game Builder Garage — инструмент для создания 3D- и 2D-игр для Nintendo Switch , разработанный компанией Nintendo .
  • GameMaker Studio — это система создания игр методом перетаскивания, разработанная YoYo Games.
  • GameSalad — это визуальный инструмент для создания игр, разработанный компанией GameSalad, Inc.
  • GDevelop — это визуальный инструмент для создания игр, созданный Флорианом Ривалем (4ian).
  • Игровой движок Godot позволяет создавать игровые скрипты и графические шейдеры с использованием визуальных языков программирования на основе узловых графов.
  • Human Resource Machine — это игра-головоломка, основанная на визуальном программировании, разработанная Tomorrow Corporation .
  • Kodu — программное обеспечение, предназначенное для программирования игр с 3D-интерфейсом, разработанное Microsoft Research.
  • MakeCode Arcade от Microsoft
  • Pixel Game Maker MV — это интерфейсный инструмент для разработки 2D-видеоигр.
  • Rec Room включает в себя систему создания игр с использованием языка визуального программирования на основе узлов под названием Circuits.
  • В Snowdrop реализована визуальная система сценариев.
  • Stencyl — инструмент для создания видеоигр.
  • Unity имеет визуальную систему скриптования с момента выпуска ECS. (Официально известная как Bolt)
  • Unreal Engine 4 имеет основанный на узлах визуальный язык программирования под названием Blueprints, а также шейдеры.

Многие современные видеоигры используют деревья поведения , которые в принципе являются семейством простых языков программирования, разработанных для моделирования поведения неигровых персонажей . Поведения моделируются в виде деревьев и часто редактируются в графических редакторах.

Системы/симуляция

Автоматизация

Хранилище данных/бизнес-аналитика

  • Ab Initio , инструмент для обработки ETL путем создания графиков
  • Alteryx Designer — инструмент для обработки и анализа данных, включающий SQL , R и Python.
  • Apache Nifi , программный проект для автоматизации потока данных между программными системами.
  • IBM Cognos Business Intelligence — это пример интерфейсных программ в приложениях бизнес-аналитики , которые используются для генерации SQL- запросов для работы с базами данных СУРБД.
  • IBM InfoSphere DataStage , инструмент ETL
  • Informatica Powercenter — это инструмент ETL для графического проектирования отображений для загрузки данных в системы хранилищ данных.
  • Microsoft Access , функциональность проектирования запросов
  • Microsoft SQL Server Integration Services (SSIS) , платформа для интеграции данных и приложений рабочего процесса
  • Pentaho Data Integration (PDI) , ранее называвшийся Kettle, инструмент ETL с открытым исходным кодом

Разнообразный

  • Bubble — для создания готовых к использованию веб-приложений .
  • Cube — эсоланг для эмуляции 3D-куба с помощью 2D-текстового интерфейса «Cube».
  • Kwikpoint — визуальный переводчик изотипов, созданный Аланом Стиллманом
  • Morphic (программное обеспечение) упрощает создание и редактирование графических объектов путем прямого манипулирования и из программ; вся среда программирования Self (язык программирования) построена с использованием Morphic
  • Piet , эзотерический язык, программа представляет собой изображение, пиксели которого являются элементами языка.
  • ProtoFlux, визуальный язык, используемый в системе виртуальной реальности Resonite .
  • PWCT , бесплатный визуальный язык программирования с открытым исходным кодом для разработки программного обеспечения
  • Pygmalion — творческая среда программирования, разработанная в 1975 году DARPA на основе человеческого общения и проектирования систем.
  • Shortcuts — визуальный язык сценариев, разработанный Apple для создания макросов в macOS , iOS , iPadOS и watchOS .
  • StreamBase Systems , StreamBase EventFlow — визуальный язык программирования для обработки потоковых событий.
  • WebML — визуальный язык для проектирования сложных веб-приложений с большим объемом данных, которые могут быть сгенерированы автоматически.
  • Yahoo! Pipes — это визуальная система программирования потоков данных для обработки веб-данных [24]
  • YAWL , графический язык рабочего процесса

Наследие

  • AppWare , также известный как MicroBrew, программирование на основе иконок для классической Mac OS и Microsoft Windows
  • Macromedia Authorware — язык программирования на основе блок-схем
  • Helix и Double Helix — новаторская система управления базами данных для платформы Apple Macintosh, созданная в 1983 году.
  • Illumination Software Creator — язык и IDE для визуального создания настольного и мобильного программного обеспечения
  • ThingLab

Визуальные стили

Смотрите также

Ссылки

  1. ^ Брэгг, SD; Дрискилл, CG (1994). «Диаграммно-графические языки программирования и DoD-STD-2167A». Труды AUTOTESTCON '94 . стр.  211– 220. doi :10.1109/AUTEST.1994.381508. ISBN 0-7803-1910-9. S2CID  62509261.
  2. ^ Кухейл, МА; Фарук, С.; Хаммад, Р.; Бахджа, М. (2021). «Характеристика подходов к визуальному программированию для разработчиков конечных пользователей: систематический обзор». IEEE Access . 9 : 14181– 14202. Bibcode : 2021IEEEA...914181K. doi : 10.1109/ACCESS.2021.3051043 .
  3. ^ Йост, Беате; Кеттерль, Маркус; Бадде, Рейнхард; Леймбах, Торстен (2014). «Графические среды программирования для образовательных роботов: Open Roberta — Yet Another One?». Международный симпозиум IEEE по мультимедиа 2014 г. стр.  381–386 . doi :10.1109/ISM.2014.24. ISBN 978-1-4799-4311-1. S2CID  8272806.
  4. ^ Репеннинг, Александр (2017). «Выход за рамки синтаксиса: уроки 20-летнего блочного программирования в AgentSheets». Журнал визуальных языков и разумных систем . 3 : 68–91 . doi : 10.18293/vlss2017-010 .
  5. ^ Джонстон, WM; Ханна, JRP; Миллар, RJ (2004). «Достижения в языках программирования потоков данных» (PDF) . ACM Computing Surveys . 36 (1): 1– 34. doi :10.1145/1013208.1013209. S2CID  5257722 . Получено 16.02.2011 .
  6. ^ Рекерс, Дж.; Шюрр, А. (1997). «Определение и анализ визуальных языков с помощью грамматик многоуровневых графов». Журнал визуальных языков и вычислений . 8 (1): 27– 55. doi :10.1006/jvlc.1996.0027. S2CID  40088910.
  7. ^ Чжан, Д.-К. (2001). «Формализм контекстно-зависимой графовой грамматики для спецификации визуальных языков». The Computer Journal . 44 (3): 186– 200. doi : 10.1093/comjnl/44.3.186. hdl : 10397/17637 . S2CID  14139133.
  8. ^ Асенов, Д. и Мюллер, П., 2014, июль. Envision: быстрый и гибкий визуальный редактор кода с текучими взаимодействиями (обзор). В 2014 IEEE Symposium on Visual Languages ​​and Human-Centric Computing (VL/HCC) (стр. 9-12). IEEE.
  9. ^ «Представьте».
  10. ^ Файед, М.С., Аль-Куриши, М., Аламри, А., Хоссейн, МА и Аль-Дарайсех, А.А., 2020. PWCT: новый визуальный язык программирования общего назначения для поддержки разработки всеобъемлющих приложений. Труды CCF по всеобъемлющим вычислениям и взаимодействию, 2, стр. 164-177.
  11. ^ Аюни, М., 2020. Программирование начального кольца (т. 978, № 1, стр. 4842-5832). Apress.
  12. ^ Файед, Махмуд Самир и Юсеф А. Алохали. «Кольцо: легкий и универсальный кроссплатформенный язык динамического программирования, разработанный с использованием визуального программирования». Электроника 13, № 23 (2024): 4627.
  13. ^ Грин, Т.; Блэквелл, А. Когнитивные измерения информационных артефактов: Учебное пособие. В трудах конференции BCS HCI, Шеффилд, Великобритания, 1–4 августа 1998 г.; Том 98, стр. 1–75
  14. ^ Грин, ТР; Блэндфорд, А.Е.; Чёрч, Л.; Роут, К.Р.; Кларк, С. Когнитивные измерения: достижения, новые направления и открытые вопросы. J. Vis. Lang. Comput. 2006, 17, 328–365
  15. ^ http://www.computermusicjournal.org/reviews/31-* * * 2/regan-bidule.html
  16. ^ "Редактор шейдеров — Руководство Blender". docs.blender.org . Получено 22.01.2021 .
  17. ^ "Композитинг — Руководство Blender". docs.blender.org . Получено 22.01.2021 .
  18. ^ "Редактирование текстур — Руководство Blender". docs.blender.org . Получено 22.01.2021 .
  19. ^ "Справка/Заметки о выпуске/2.92/Узлы геометрии - Blender Developer Wiki". wiki.blender.org . Получено 22.01.2021 .
  20. ^ "Узлы геометрии — Руководство Blender". docs.blender.org . Получено 2021-10-02 .
  21. ^ "Редактор материалов узла Babylon.js". nme.babylonjs.com . Получено 2021-01-22 .
  22. ^ Домашняя страница Construct Classic
  23. ^ Страница Construct Classic на SourceForge
  24. ^ "Yahoo! pipes". Архивировано из оригинала 2015-01-03 . Получено 2015-01-03 .
Взято с "https://en.wikipedia.org/w/index.php?title=Язык_визуального_программирования&oldid=1271498141"