Визуальное программирование

Визуальное программирование — способ создания программы для ЭВМ путём манипулирования графическими объектами вместо написания её текста. Некоторые авторы представляют визуальное программирование как следующий этап развития языков программирования (следующее поколение). В настоящее время визуальному программированию стали уделять больше внимания, в том числе в связи с развитием мобильных сенсорных устройств (КПК, планшеты). Визуальное программирование может применяться для создания программ с графическим интерфейсом, но не только. Существуют, например, и успешно используются в промышленности, средства графического программирования встроенных приложений для микроконтроллеров.
Есть и среды визуального программирования, позволяющие создавать Веб-приложения для браузеров.

Необходимо различать:
 графический язык программирования
 визуальные средства разработки (например, средства проектирования интерфейса, CASE-система, часть SCADA-системы).

Языки визуального программирования могут быть классифицированы по разным признакам. Например, по сфере основного применения: учебные; используемые в индустрии; исследовательские. По основному моделируемому аспекту: языки описания структуры программной системы; языки описания потока управления; языки описания потоков данных; языки описания поведения (процессов); языки для построения графического интерфейса. Предлагается и такая классификация:
 Языки на основе объектов, когда визуальная среда программирования предоставляет графические или символьные элементы, которыми можно манипулировать интерактивным образом в соответствии с некоторыми правилами. Пример: Скретч.
 Редакторы форм, позволяющие ставить мышью части пользовательского интерфейса и настраивать их свойства. Примеры: Visual Basic, Delphi и C++ Builder фирмы Borland, MS С#, MS Access, C++ посредством использования wxSmith в составе свободной кроссплатформенной среды разработки Code::Blocks.
 Языки схем, основанные на идее «фигур и линий», где фигуры (прямоугольники, овалы и т. п.) рассматриваются как субъекты и соединяются линиями (стрелками, дугами и др.), которые представляют собой отношения. Примеры: редакторы взаимосвязей в реляционных БД, UML.
 
В ряде работ подход визуального программирования связан с программированием потоков данных (). Некоторые средства визуального программирования поддерживают отладку программ, автоматизированную генерацию и документирование. Языки потоков данных могут позволять автоматическое распараллеливание, что может стать большим достижением программирования.

При этом можно назвать и недостатки визуального программирования. Статья Майка Хэдлоу говорит о фундаментальных ограничениях визуального программирования:
 Ограничения визуального интерфейса могут запутывать разработчика даже больше, чем текст.
 С повышением сложности программ программист начинает заниматься абстракцией и снижением связности, и уровень программиста во многом определяется тем, насколько удачно это получилось. Визуальные средства редко имеют развитую поддержку данного процесса.
 Для текстового представления в настоящее время существует множество инструментов: системы управления версиями, автодополнение и пр.

Графические, или визуальные, языки программирования 

 App Inventor — Cреда визуальной разработки android-приложений, требующая от пользователя минимальных знаний программирования.
 Sketchware — Среда визуальной разработки приложений для Android.
 Дракон — графический язык программирования, имеющий корни в программировании ракетно-космической техники («Буран», "Морской старт "). Существуют Дракон-редакторы, включая бесплатные.
 Язык последовательных функциональных схем SFC (Sequential Function Chart) — графический язык программирования широко используется для программирования промышленных логических контроллеров PLC.
 HiAsm — это язык и среда разработки приложений, которая позволяет создавать приложения, управляя их моделью с помощью интуитивно понятного графического интерфейса HiAsm.
 В SFC программа описывается в виде схематической последовательности шагов, объединённых переходами.
 LD — язык релейно-контактных схем.
 FBD — язык Функциональных блоковых диаграмм.
 Язык CFC (Continuous Flow Chart) — ещё один высокоуровневый язык графического программирования. CFC — это дальнейшее развития языка FBD. CFC был специально создан для проектирования систем управления непрерывными технологическими процессами.
 Язык «G» системы LabVIEW — один из самых распространенных языков разработки программ, работающих с некомпьютерным оборудованием.
 VisSim — это визуальный язык программирования предназначенный для моделирования динамических систем, а также проектирования, базирующегося на моделях, для встроенных микропроцессоров.
 Блокли — это библиотека для создания среды визуального программирования, которая может быть встроена в произвольное веб-приложение.
 Кибор — Интегрированная среда создания бот программ автоматизации. Обладает визуальным инструментом для построения программ с помощью блок схем. Для визуального программирования требуется минимум навыков программирования.
 Verge3D Puzzles — основанный на Блокли фреймворк для программирования интерактивных 3D-приложений, работающих в браузере.

Визуальные средства разработки 

 App Inventor, среда визуальной разработки android-приложений, требующая от пользователя минимальных знаний программирования
 AgentSheets, легкая в использовании авторская система для игр и научных расчётов
 Alice
 Automator
 Befunge, эзотерический текстовый язык программирования, в котором команды размещаются графически в текстовом файле
 HiAsm, конструктор программ
 LabVIEW, среда графического программирования, разработанная для инженеров и учёных
 ROBO Pro
 Thyrd, свободная, открытая графическая среда программирования (иерархия графических примитивов) на базе языка Forth (Форт)
 ДРАКОН, язык, созданный для разработки советского космического корабля Буран
 Visual Prolog, система визуального программирования объектно-ориентированного расширения языка программирования PDC Prolog.

См. также 
 Low-code

Примечания

Ссылки 
 appinventor.mit.edu — Официальный сайт App Inventor

Программирование