В статье представлен специализированный визуальный язык программирования на основе графа узлов для автоматизации сверки строительной документации. Язык рассчитан на ИТ-администраторов без навыков текстового программирования и позволяет самостоятельно создавать и редактировать алгоритмы проверки документов в форматах.csv и.xlsx. Реализация основана на Python-библиотеке Node Editor, адаптированной для обработки табличных данных. Описаны ключевые узлы, архитектура, механизмы сохранения и выполнения алгоритмов. Внедрение показало сокращение времени реакции на изменения, повышение прозрачности и снижение ошибок. Отмечен потенциал дальнейшего развития инструмента для строительной отрасли.
Ключевые слова: визуальное программирование, граф узлов, сверка документов, строительная документация, автоматизация, no-code, табличные данные, алгоритмы проверки
Визуальное программирование — это способ создания программ с помощью графических элементов вместо текстового кода. Он делает разработку более доступной, упрощает построение алгоритмов и снижает вероятность ошибок благодаря интуитивному интерфейсу.
Существуют разные подходы: блочное программирование и программирование на графах узлов. Также к визуальному программированию можно формально отнести построение блок-схем (например, Flowgorithm, Lucidchart, Raptor, DRAKON Editor), однако они менее распространены.
Блочное программирование строится на соединении визуальных блоков, представляющих команды (условия, циклы, функции). Оно ориентировано на начинающих и широко используется в обучении. Примеры: Google Blockly, Scratch, Code.org, MakeCode, Open Roberta. Блоки могут быть цветными и с подписями на любом языке, что повышает доступность:
— Трудности с масштабированием и навигацией.
— Медленная работа и ограниченная отладка.
— Сложность реализации нестандартной логики.
Рис. 1. Граф узлов на примере дерева поведения игрового персонажа в Blueprint в Unreal Engine 5
Узловое программирование имеет более сложный и менее наглядный интерфейс по сравнению с блочным, поэтому редко используется в обучении детей. Его преимущества
— Позволяет создавать алгоритмы без знания текстового кода.
— Список узлов можно адаптировать под конкретные задачи.
— Удобно визуализировать всю схему целиком.
Преимущества относительно блочного визуального программирования:
— Позволяет реализовывать более сложную логику.
— Подходит для масштабных, не только учебных проектов.
— Графовая структура более привычна инженерам.
Таким образом, программирование на архитектуре узлов актуально для промышленных задач. Далее под визуальным программированием в статье будет пониматься именно этот подход.
Примеры применения:
— GameDev — инди-игры и прототипы (Unreal Engine) и Unity (Bolt) [1];
— 3D-моделирование — настройка материалов, геометрии, анимации (Blender, Houdini, Dynamo для Revit, Grasshopper) [2], [3], [4];
— Работа с базами данных — визуальная настройка логики и запросов (Script Manager [5], VAX [6], Orange Data Mining);
— Робототехника — TRIK Studio, LabVIEW, SAM Labs, Flowboard [7];
— Промышленная автоматизация и симуляции — Simulink [8];
Методы разработки языка визуального программирования
В качестве основы разработанного языка была взята библиотека Python Node Editor. Интерфейс выбранной библиотеки похож на Blueprint в Unreal Engine, что упрощает его использование относительно прочих аналогов. Простота выбранного инструмента обусловлена отсутствием лишней для наших задач и для не владеющего навыками программирования пользователя функциональности: отображения графиков в режиме реального времени, инспекции тем и ресурсов, метрики времени выполнения, отладчика.
Были разработаны следующие ноды (узлы):
Тип ноды |
Функциональность |
|
Нода служит простым хранилищем данных, можно написать любой текст в соответствующее поле и он будет представлен в виде пина. |
|
Нода служит инструментом для соединения данных через символ, введенный в соответствующие поле. Она принимает на вход несколько строк для конкатенации и объединяет их в единую строку |
|
Нода служит инструментом для чтения файла (читает из файла заголовки и первую строку). Возможен перевод кириллицы на латиницу. Имеется вход для пути файла, который нужно открыть, и соответствующий ему логический вход |
|
Нода служит инструментом для разделения заданной строки по указанному в соответствующем поле делимитеру — разделителю. Имеет логический вход и выход, вход для принятия строки для разделения, также имеет выходы строк, получившихся после разделения исходной строки |
|
Нода служит инструментом для разветвления логики сверки и передачи данных, которые прошли или не прошли проверку. Имеет логический вход и выход (True или False), вход для принятия данных для передачи при успешном сравнении, вход, принимающий первую строку для сравнения и вторую строку для сравнения с первой (порядок важен, например, для типа сравнения «in», тип, когда проверяется вхождения элемента в другой элемент), также имеет выход в виде строк, для последующей передачи другим нодам |
|
Инструмент для хранения данных и последующей записи их в файл. Нода имеет логический вход и выход, вход для принятия данных для создания хранилища (пока что файла, в последующем хранения «таблицы для последующего сравнения с другой таблицей») |
Ноды в визуальном программировании позволяют разбивать систему на отдельные функциональные блоки: чтение, форматирование, проверка, хранение данных и др. Это обеспечивает модульность, упрощает разработку и тестирование, делает структуру алгоритма более прозрачной.
Модульный подход снижает риск системных ошибок — сбои ограничиваются одной нодой. Каждая нода может быть протестирована и обновлена отдельно, что повышает надёжность и упрощает отладку.
Схемы сохраняются в формате.json, включая параметры, позиции и соединения пинов. Стартовой считается нода, передающая данные. При загрузке применяется топологическая сортировка Кана: сначала создаются ноды, затем связи. Классы нод подгружаются через importlib по суффиксу _node.
Выполнение схемы начинается с нод без выходных пинов, данные для которых собираются рекурсивно от входов. Расчёт идёт от начала графа к выходу. Результаты передаются в виде строк или, при работе с файлами, в формате pandas.DataFrame — это ускоряет последующую обработку без лишних пересчётов.
Применение
Разработанный язык программирования применяется для создания алгоритмов сверки строительной документации в форматах.csv и.xlsx между собой и с базой данных. Его необходимость связана с динамичностью базы и шаблонов документов на строительных объектах, требующих постоянного редактирования алгоритмов сверки.
Рис. 2. Сверка документации по новым алгоритмам без использования визуального программирования
При использовании стандартных языков администратору приходится обращаться к разработчикам для внесения изменений, что занимает около недели и тормозит производство (см. рис. 2). Визуальный язык с удобным интерфейсом позволяет администратору самостоятельно изменять и тестировать алгоритмы сверки (см. рис. 3), экономя время разработчиков.
Рис. 3. Сверка документации по новым алгоритмам с использованием визуального программирования
Для проверки языка смоделировали сценарии с реальными изменениями. Например, алгоритм, требовавший полного совпадения строк, был быстро адаптирован для допуска округлений и эквивалентности значений без переписывания кода — достаточно было заменить узлы в графе. Аналогично, для сравнения таблиц с разными названиями и порядком колонок администратор создал новую логику преобразования заголовков прямо в визуальном редакторе.
Результаты и их обсуждение
Разработанный визуальный язык программирования был применён для создания и редактирования алгоритмов сверки строительной документации в электронных форматах.csv и.xlsx, а также для сверки с единой базой данных. Основной задачей исследования было оценить, насколько применение визуального инструмента может ускорить адаптацию алгоритмов к изменениям в структуре документов и сократить зависимость от программистов.
В ходе практического внедрения было выявлено, что использование текстовых языков программирования требует участия команды разработчиков для внесения даже незначительных изменений. Это включает подготовку технического задания, постановку задачи в очередь, реализацию и тестирование — процесс, который может занимать до недели. Напротив, визуальный язык позволил администраторам, обладающим знанием предметной области, самостоятельно реализовывать необходимые правки, обходясь без привлечения внешних специалистов. Таким образом, время от возникновения потребности до внедрения нового алгоритма сверки сократилось до одного-двух рабочих дней.
Дополнительным преимуществом стало снижение количества ошибок, выявляемых на этапе тестирования. Благодаря модульной структуре графа, каждая нода отвечает за строго ограниченную функциональность, что позволяет быстрее локализовать и исправлять ошибки, а также повторно использовать проверенные узлы в новых схемах. Визуальное представление алгоритма также способствует лучшему пониманию логики сверки, в том числе при командной работе, упрощая внутренний аудит и обучение новых сотрудников.
Обеспечение наглядности потоков данных и условий обработки позволило администраторам самостоятельно обнаруживать и устранять логические ошибки, которые ранее оставались на совести программиста. Стандартизация структуры нод дополнительно повышает надёжность создаваемых алгоритмов.
В результате проведённого внедрения визуальный язык программирования получил положительные отклики со стороны администраторов и инженеров контроля. Он признан удобным инструментом для регулярного обновления логики сверки без необходимости погружения в текстовый код. Это делает систему более адаптивной и снижает операционные издержки. В дальнейшем планируется расширение библиотеки узлов и развитие интерфейса на основе полученного опыта.
Литература:
- B. Sewell, Blueprints Visual Scripting for Unreal Engine // Packt Publishing Ltd, 2015.
- Klekovkin E. A., Suntsov A. S. Application of visual programming for automation tasks in construction. Construction and Geotechnics. 2023. Vol. 14. No. 2. Pp. 128–143.
- Смакаев Р. М., Низина Т. А. Применение среды визуального программирования Dynamo при разработке проекта здания в autodesk Revit // Основы экономики, управления и права. — 2020. — С. 48–55.
- Юрошева Т. А., Калиниченко А. В., Макиев В. Г. Алгоритм проектирования несущих конструкций многоэтажного здания с использованием среды визуального программирования DYNAMO STUDIO // Вестник Дагестанского государственного технического университета. Технические науки. — 2022. — № 4. — С. 126–133.
- Rybakova A., Piatkov D. Formation of an information retrieval system of visual programming scenarios for information modeling software complexes // E3S Web Conf., 2024, Vol. 535, pp. 1–8
- VAX — инструмент для визуального программирования, или как написать SQL мышкой // Хабр URL: https://habr.com/ru/articles/333750/ (дата обращения: 20.07.2017).
- Anke Brocker, Simon Voelker, Tony Zhang, Mathis Müller Flowboard: A Visual Flow-Based Programming Environment for Embedded Coding // Extended Abstracts of the 2019 CHI Conference
- Антипин А.Ф, Антипина Е. В. Среда визуальной разработки программ многомерных нечетких интервально-логических регуляторов // Научно-технический вестник информационных технологий, механики и оптики. — 2023. — № 5. — С. 1041–1049.