Визуальное программирование vs DSL
В последнее время набирают популярность low-code и no-code платформы. В них для разработки приложений предлагается использовать визуальное программирование. При таком подходе, разработчики, в качестве которых выступают обычные бизнес-пользователи, вместо написания программного кода создают приложение при помощи мыши в графическом интерфейсе. Также визуальное программирование в некотором виде используется, например, в Конфигураторе 1С.
Однако, возникает вопрос. Какие преимущества дает визуальное программирование по сравнению с Domain Specific Language ? Безусловно это зависит от области применения. С одной стороны, в классических языках визуальное программирование практически не используется. В то же время при разработке графического интерфейса такой подход конечно же имеет много преимуществ. Однако, при создании интерфейсов, например, с помощью популярной библиотеки React все-таки больше используется плоский код.
Плюсы и минусы
В использовании DSL я вижу следующие плюсы :
- Поддержка системы контроля версий. В визуальном программировании значительно менее удобно следить за изменениями в логике программы и решать конфликты в коммитах.
- Возможность копирования/вставки, поиска и замены по текстовым значениям, генерации кода.
В визуальном программировании к плюсам можно отнести следующее :
- Более низкий порог входа. Большинство пользователей умеют нажимать на кнопки, вводить значения в поля и перетаскивать объекты на формах.
- Лучшая наглядность при создании пользовательского интерфейса.
Следует отметить, что DSL и визуальное программирование не являются альтернативами друг друга. При правильном подходе визуальный конструктор может и должен генерировать DSL. В качестве такого языка часто используется XML. Однако, читабельность XML оставляет желать лучшего.
Сфера применения
Одним из главных недостатков визуального программирования все-таки является слишком ограниченная сфера его применения. Да, для создания простых CRUD приложений оно подходит достаточно неплохо. Однако, когда требуется некоторое усложнение логики, то все равно приходится возвращаться к программному коду. Тем самым создается определенный семантический разрыв, когда часть логики создана визуально, а часть при помощи классического кода.
Использование DSL, в свою очередь, позволяет создавать достаточно сложные приложения со значительно меньшими усилиями. Написание кода на специализированным языке может казаться для пользователей сложной задачей. Однако, не стоит забывать, что язык SQL создавался именно для обычных пользователей, и до сих пор используется не только программистами. И если DSL является таким же высокоуровневым как SQL, использует обычные слова вместо специальных символов, то порог вхождения значительно снижается (вот пример одного из таких языков).
Безусловно, для управления “динамическими” системами графический интерфейс подходит значительно лучше, чем текстовый. Например, большинство пользователей все-таки используют графическую оболочку операционных систем, а не командную консоль (хотя для управления серверами, на мой взгляд, консоль местами удобнее). Однако, программы являются более статическими системами. Как правило, изменение работы программ осуществляется регламентно, достаточно редко и могут приводить к другим значительным изменениям (например, миграции данных). И в этом случае значительно повышается важность проверки сделанных изменений, что значительно проще делать именно с плоским программным кодом.
IDE
Одной из отличительных особенностей визуального программирования является то, что разработчик сразу видит все возможности среды разработки. Тем самым ему значительно реже приходится обращаться к документации. С другой стороны, это создает визуальную сложность, тем самым “размывая внимание”. Разработчику сложнее понять, какие именно настройки он изменил, а какие установлены по умолчанию. В плоских файлах все изменения можно легко увидеть при помощи системы контроля версий.
В целом же, использование DSL позволяет создавать значительное более мощные IDE за счет того, что все современные IDE имеют мощные механизмы по разработке плагинов под кастомные языки. Поэтому можно легко создать мощную IDE, значительно более удобную в использовании, чем написанных с нуля IDE для визуальной разработки. Что мы собственно говоря и сделали, получив при этом IDE значительно превосходящую по возможностям тот же Конфигуратор 1С.
Заключение
Разработка стоящего решения на самом деле является самой сложной частью процесса разработки программного обеспечения. Low-code платформы, концентрируясь именно на визуальном программировании, преувеличивают, утверждая, что написание кода — это самое сложное. На самом деле ни одна платформа low-code не избавит вас от необходимости тратить время на правильное проектирование вашего пользовательского программного обеспечения или от последствий, которые вы получите, если будете строить решения на основе плохой архитектуры.
Человек, который сможет более-менее нормально проектировать решения с использованием визуального программирования, без проблем сможет освоить и DSL. При этом, в сложной разработке, плоский код будет ему значительно удобнее по той же причине, почему и в классическом программирование используется именно язык вместо визуального программирования (возможность Copy/Paste, Find/Replace, VCS и т.д.).
В конце хотелось бы упомянуть еще один важный плюс DSL. Скорее всего, в ближайшем будущем, такие языки увеличат популярность по отношению к визуальному программированию, по мере развития технологий AI. Мы пытались обучать ChatGPT своему абсолютно новому языку, и результаты были весьма интересными и перспективными. Вполне возможно, спустя некоторое время, DSL можно будет использовать для автоматической генерации программ на основе требований на естественном языке. Шансов на это значительно больше, чем с классическими языками программирования.
Что такое визуальное программирование
Мы привыкли, что программирование — это когда строчки кода пишутся в редакторе. Иногда в блокноте из стандартных инструментов операционной системы. Иногда даже на салфетке, почему нет. К чему мы пока не привыкли, так это к программированию через графические символы — к иллюстрации процесса, ведущего к выполнению программы.
Визуальное программирование предоставляет разработчику возможность объяснить процесс выполнения программы языком, понятным не только машинам, как в случае с текстом, но и людям. Причем тем, которые не умеют программировать.
С помощью платформ для визуального программирования разработчик «рисует» архитектуру будущего приложения или веб-сайта, использует графические схемы для изображения того, что будет происходить с данными на каждом этапе. Уже потом программа преобразует «картинку» в готовый проект.
Визуал используют no-code-платформы для создания приложений — инструменты зерокодеров: разработчиков, которые или совсем не пишут код, или пишут его очень редко.
Узнайте больше о разработке без кода и визуальных инструментах на бесплатном двухдневном марафоне от онлайн-университета «Зерокодер»!
Приходите на наш бесплатный вебинар по разработке без кода, чтобы задать вопросы, узнать больше про зерокодинг и попробовать себя в новой профессии!
Отличительные особенности
⚡ Язык визуального программирования использует графические фигуры вместо текста. Для создания проекта задействуются графика, пространственное размещение элементов и изображений. Код заменяется набором графических компонентов, в которых закладывается некая система. Действия, связи, вводы и выводы имеют вид иконок и картинок.
⚡ Между разными элементами формируются связи. Буквально: стрелка протягивается от одного графического объекта к другому, чтобы показать, как именно они связаны и в каких отношениях состоят.
⚡ Обычно разобраться в интерфейсе довольно легко — платформы содержат фичу автоматического форматирования кода, расширяемый язык разметки и drag-n-drop редактор. Чисткой памяти занимаются роботы.
⚡ Регистр символов, к которому чувствительны некоторые языки программирования вроде C++ и Java, тут не имеет значения. Конечно, кроме случаев, когда в систему встраивается дополнительный язык вроде JavaScript.
⚡ Возможность простейшей многопоточности позволяет программе обрабатывать сразу несколько задач.
Так выглядит интерфейс алгоритмического языка ДРАКОН российского производства. Он был разработан в 1996 году и используется до сих пор — в медицине, образовании и космонавтике.
Преимущества и недостатки
Доступность — главное преимущество языков визуального программирования. Они пишутся символьно, а символы понятны большинству. Тут работает тот же принцип, что и у знаков дорожного движения: они знакомы почти всем, потому что изображают некие общепризнанные ситуации.
Так что визуальное программирование:
- Подойдет новичкам — поэтому графические принципы использует, например, визуальная блочная событийно-ориентированная среда программирования Scratch — платформа для обучения детей разработке;
- Посильно даже для тех, кто не умеет писать код. Большинство профессиональных no-code и low-code инструментов так или иначе задействуют визуальное программирование, как среда Scratch. Научиться использовать их проще и быстрее, чем начать писать на Python;
Так выглядит интерфейс Bubble, платформы для создания мобильных и веб-приложений без кода. Проект буквально собирается из отдельных графических элементов.
- Обладает предустановленными функциями, шаблонами и пребилдами — для того, чтобы перешагнуть через рутину и сразу приступить к разработке архитектуры. Многие платформы предлагают практически готовые решения, идеально подходящие для тестирования гипотез и подойдут для начинающих разработчиков и даже для детей.
Что насчет недостатков? В 2018 году о них написал в своем блоге английский разработчик Майк Хэдлоу. По его мнению, визуальные элементы усложняют то, что не задумано как сложное, и мешают программисту видеть закономерности. Чем сложнее будет программа, тем сильнее разработчик злоупотребляет абстракциями, из-за чего снижается связность его проекта. И наконец, классическое программирование само по себе обладает достаточным количеством дополнений, которые упрощают работу.
Это безусловно так, если речь идет о классической разработке. Но с 2018 года выросло количество инструментов для визуального программирования — для зерокодинга и лоукодинга.
Языки визуального программирования тогда и теперь
Идея применять графические элементы в разработке не нова — ее пытались внедрить в 1990-х годах. Успеха она не снискала, и многие программы тех времен оказались забыты. Не все — тот же ДРАКОН используется до сих пор. С алгоритмами работают и более современные платформы, такие как Flowgorithm, Visual Logic, Raptor.
Система обучения детей задействует визуальные элементы, просто потому что так новичкам проще понять взаимосвязи и научиться базовой логике.
Но алгоритмы и обучение — это не все. С ростом мощностей ПК растут возможности программ. Появляются новые библиотеки для существующих невизуальных языков, таких как JavaScript. Повышается востребованность приложений: рынок создает запрос, разрабатываются конструкторы, позволяющие собрать из блоков готовый сайт. Такие инструменты — это Tilda и WordPress, Bubble и FlutterFlow, десятки других конструкторов, не требующих знания кода.
Все они используют визуальные инструменты для того, чтобы упростить разработку.
Разрабатывать проекты без кода легко и интересно: этому учат на курсе «Зерокодер на Bubble». За семь недель мы учим создавать проекты, сравнимые по сложности и функциональности с написанными на текстовых языках программирования — таких как JavaScript и Python.